|
二、填空题
(1)排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。 【命题目的】需要考生记住常见的排序方法。 【解题要点】常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。 【考点链接】常见的排序方法及其作用机制和区别。
(2)当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。 【命题目的】本题考查了队列的基本性质。 【解题要点】入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
(3) 【3】 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。 【命题目的】本题考查了面向对象技术中的一些基本概念。 【解题要点】面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。
(4)为了便于对照检查,测试用例应由输入数据和预期的 【4】 两部分组成。 【命题目的】本题主要考查测试的步骤。 【考点链接】测试的基本方法和步骤。
(5) 【5】 是从二维表列的方向进行的运算。 【命题目的】本题考查了关系运算的基本知识。 【解题要点】在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。
(6)定义int a=5,b=20;若执行语句printf("%d\n",++a*--b/5);后,输出的结果为 【6】 。 解析: ++和--做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算,之后按照同级运算符自左向右依次运算。
(7)执行程序时的输入为123456789,则程序的运行结果为 【7】 。 #include "stdio.h" main() { int a,b; scanf("-%*2d",&a,&b); printf("%d\n",a-b);} 解析: 按照函数scanf中的格式控制符的描述:"-"控制前2个数字赋给变量a,变量a的值为12,""控制将随后的1个数字作为输入数据存入变量b中,变量b的值为5,所以随后的输出为7。注意:在%和格式控制符号之间加*号,表示的是跳过相对应的输入数据。
(8)阅读下面程序,则在执行时候的输出为 【8】 。 #include "stdio.h" main() {int x=1,y=2,z=0; if(x=2)z=x,x=y,y=z; printf("%d,%d\n",x,y);} 解析: if语句的执行过程为:首先计算紧跟在if后面一对圆括号中的表达式,如果表达式的值为非零,则执行其后的if子句,然后去执行if语句后的下一个语句,如果表达式为零,则跳过if子句直接执行if语句后的下一个语句,if(x=2)的值为真,即x的值为2。
(9)语句printf("%d\n",′H′-′0′+64);的执行结果为 【9】 。 解析: 在C程序中的字符量可参与任何整数运算,在运算的时候都是以ASCII值进行的。
(10)阅读下面程序,则程序的执行结果为 【10】 。 #include "stdio.h" main() { int a=10; fun(a); printf("%d\n",a);} fun(int x) { x=50;} 解析: 函数调用的时候,函数名字必须与所调用的函数名完全一致,形参与实参类型要一致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型放到主函数后面时,可以不需要事先说明就调用这个函数。
(11)以下程序的输出结果是 【11】 。 int fun(int x,int y,int *p,int *q) { *p=x*y; *q=x/y;} main() {int a,b,c,d; a=4;b=3; fun(a,b,&c,&d); printf("%d,%d\n",c,d);} 解析: 通过地址传递可以在被调函数中对调用函数中的变量进行引用,通过地址的传递,在经过函数调用以后,改变了c,d变量的值。
(12)下面程序是求出数组arr的两条对角线上元素之和,请填空。 #include "stdio.h" main() {int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if( 【12】 )a=a+arr[i][j]; for(i=0;i<3;i++) for( 【13】 ;j>=0;j--) if( 【14】 ) b=b+ arr[i][j]; printf("%d,%d\n",a,b);} 解析: 由于是求对角线元素的和,所以【12】是判断是否为对角线元素的,填i==j这个判断条件;对于次对角线的求和,初始化的时候应该是从数组的列最大开始,由于判断条件是j>=0,所以初始化时候应该为最大值减1,即j=2,所以【13】应填j=2;【14】是对次对角线的判断,所以填i+j==2。
(13)下面程序的功能是:对字符串从小到大进行排序并输出,请填空。 #include "string.h" #include "stdio.h" sort(char *a[],int n) { int i,j; char *p; for(j=1;j<=n-1;j++) for(i=0; 【15】 ;i++) if( 【16】 >0) { p=a[i]; a[i]=a[i+1]; a[i+1]=p;}} main() { int i; char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"}; sort( 【17】 ); for(i=0;i<6;i++) printf("%s\n",book[i]);} 解析: 这个题目其实用的是冒泡排序法,每一次都找一个最大的,之后顺序的从头开始排列。所以【15】是一次循环的判定条件,填i (14)下面的函数是完成1~n的累加,完成函数。 a(int k) {if(k<=0)printf("error\n"); if(k==1) 【18】 ; else 【19】 ;} 解析: 由于题目没有给循环语句,所以实现累加一定是用递归算法。
(15)阅读下列程序,则程序实现的功能是 【20】 。 #include "stdio.h" struct node { char data; struct node *next; } *head; fun(struct node *q) { if(head == NULL) {q->next=NULL; head=q;} else { q->next=head; head=q;}} main() {char ch; struct node *p; head = NULL; while((ch=getchar())!=′\n′) {p=(struct node *)malloc(sizeof(struct node)); p->data=ch; fun(p); } p=head; while(p!=NULL) {printf("%c",p->data); p=p->next; }} 解析: 本题目的功能是从键盘输入一行字符,调用函数建立反序的链表,然后输出整个链表,从主函数开始依次向下对程序进行分析,分析初始化状态的程序,之后再分析函数的功能。
共5页: 上一页 [1] [2] [3] 4 [5] 下一页
|