全国计算机等级考试二级C语言模拟试题12
答案
一、选择题(每题2分,共计70分) |
| 1.由两个栈共享一个存储空间的好处是 A)减少存取时间,降低下溢发生的机率 B)节省存储空间,降低上溢发生的机率 C)减少存取时间,降低上溢发生的机率 D)节省存储空间,降低下溢发生的机率 |
| A B C D |
| 2.设有两个串p和q,求q在p中首次出现位置的运算称作 A)连接 B)模式匹配 C)求子串 D)求串长 |
| A B C D |
| 3.n个顶点的连通图中边的条数至少为 A)0 B)1 C)n-1 D)n |
| A B C D |
| 4.对象实现了数据和操作的结合,是指对数据和数据的操作进行 A)结合 B)隐藏 C)封装 D)抽象 |
| A B C D |
| 5.下列叙述中,正确的是 A)软件就是程序清单 B)软件就是存放在计算机中的文件 C)软件应包括程序清单及运行结果 D)软件包括程序和文档 |
| A B C D |
| 6.软件设计中,有利于提高模块独立性的一个准则是 A)低内聚低耦合 B)低内聚高耦合 C)高内聚低耦合 D)高内聚高耦合 |
| A B C D |
| 7.软件生命周期中花费时间最多的阶段是 A)详细设计 B)软件编码 C)软件测试 D)软件维护 |
| A B C D |
| 8.下列4项中说法不正确的是 A)数据库减少了数据冗余 B)数据库中的数据可以共享 C)数据库避免了一切数据的重复 D)数据库具有较高的数据独立性 |
| A B C D |
| 9.下列4项中,必须进行查询优化的是 A)关系数据库 B)网状数据库 C)层次数据库 D)非关系模型 |
| A B C D |
| 10.最常用的一种基本数据模型是关系数据模型,它的表示应采用 A)树 B)网络 C)图 D)二维表 |
| A B C D |
| 11.以下说法错误的是 A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式 B)计算机只能处理由0和1的代码构成的二进制指令或数据 C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件 D)每一种高级语言都有它对应的编译程序 |
| A B C D |
| 12.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是 A)有零个输入或多个输入 B)高效性 C)有穷性 D)确定性 |
| A B C D |
| 13.下面各选项中,均是C语言标识符的选项组是 A)forchinato B)long_123short56_do C)voidunion_342 D)text.txt _023_3ew |
| A B C D |
| 14.关于C语言的主函数描述正确的是 A)C程序可以有多个main函数 B)C程序必有一个而且只能有一个main函数 C)C程序可以没有main函数 D)C程序的执行不一定在main函数开始执行 |
| A B C D |
| 15.已知int a=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是 A)-1 B)0 C)1 D)语句错误 |
| A B C D |
| 16.已知int a,b;double c;则以下语句中错误的函数调用是 A)scanf("%d,%x,%lf",&a,&b,&c); B)scanf("%d,%d,%le",&a,&b,&c); C)scanf("%o,%x,%o",&a,&b); D)scanf("%d,%o,%e",&a,&b,&c); |
| A B C D |
| 17.若int k=8;则执行下列程序后,变量k的正确结果是 main() { int k=8; switch(k) { case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1; } printf("%d\n",k); } A)12 B)1 C)10 D)9 |
| A B C D |
| 18.下列程序的输出结果是 #include "stdio.h" main() { int i=6; while(i--) printf("%d",--i); printf("\n"); } A)531 B)420 C)654321 D)死循环 |
| A B C D |
| 19.下面程序的运行结果是 #include "stdio.h" main() { int j,i,k=0; for(j=50;j<=60;j++) { if(!(k))printf("\n"); for(i=2;i k++;} } } A)5359 B)5953 C)3595 D)9535 |
| A B C D |
| 20.以下描述错误的是 A)C程序中,函数可以直接或间接的调用自己 B)函数调用时,函数名必须与所调用的函数名字完全一致 C)函数说明语句中的类型必须与函数返回值的类型一致 D)实参数可以与形参个数不一致 |
| A B C D |
| 21.阅读下面程序,则执行后的结果为 #include "stdio.h" main() { fun3(fun1(),fun2());} fun1() { int k=20; return k;} fun2() { int a=15; return a;} fun3(int a,int b) { int k; k=(a-b)*(a+b); printf("%d\n",k);} A)0 B)184 C)175 D)编译不通过 |
| A B C D |
| 22.阅读下面程序,则执行后的输出结果为 #include "stdio.h" fun(int a,int b) { int s; s=a*b/2; printf("%d\n",s);} main() { int a=10,b=16; fun(a,b);} A)10 B)16 C)160 D)80 |
| A B C D |
| 23.阅读下面程序,则程序执行后的结果为 #include "stdio.h" main() { int a=4,b=6,c=7; double d,fun(int,int,int); d=fun(a,b,c); printf("%lf\n",d);} double fun(int a,int b,int c) { double s; s=a%b*c; return s;} A)27 B)27.000000 C)28 D)28.000000 |
| A B C D |
| 24.下列关于指针变量赋空值的说法错误的是 A)当赋空值的时候,变量指向地址为0的存储单元 B)赋值语句可以表达为变量名=′\0′; C)赋值语句可以表达为变量名=0; D)一个指针变量可以被赋空值 |
| A B C D |
| 25.阅读下面程序,则执行后输出的结果为 #include "stdio.h" void fun(int *a,int *b) { int m; m=(*a+*b)*(*a+*b); m+=(*a-*b)*(*a-*b); printf("%d\n",m);} main() { int a=5,b=6,*x=&a,*y=&b; fun(x,y);} A)120 B)121 C)122 D)123 |
| A B C D |
| 26.阅读下面程序,则输出结果是 #include "stdio.h" void fun(int *a,int *b) { int c=20,d=25; *a=c/3; *b=d/5;} main() { int a=3,b=5; fun(&a,&b); printf("%d,%d\n",a,b);} A)6,5 B)5,6 C)20,25 D)3,5 |
| A B C D |
| 27.以下对一维数组c进行正确的定义初始化的语句是 A)int c[10]=0; B)int c[10]={0}*10; C)int c[1]={0,0,0,0,0,0,0}; D)int c[10]={0}; |
| A B C D |
| 28.阅读下列程序,则执行后输出的结果是 #include "stdio.h" int k=1; main() { fun(k); printf("%d\n",k);} fun(int k) { k++; k=k*6;} A)1 B)2 C)6 D)12 |
| A B C D |
| 29.现有如下程序段 #include "stdio.h" void fun(int *a,int *b,int *c) {*c=*a+*b;} main() { int a[2]={12,23},c; fun(a,a+1,&c); printf("%d\n",c);} 则程序的输出结果为 A)23 B)12 C)0 D)35 |
| A B C D |
| 30.阅读下列程序,则执行后的结果为 #include "stdio.h" main() { char str[]="tomeetme",str1[]="toseeyou"; char *p=str,*p1=str1; int i; for(i=0;i<7;i++) if(*(p+i)==*(p1+i))putchar(*(p+i)); printf("\n");} A)to B)tomeet C)toee D)程序段不能通过编译 |
| A B C D |
| 31.现有如下程序段 #include "stdio.h" int fun(int k,int *m) { if(k%3)*m=k*k; else *m=k/3;} main() { int (*p)(int,int *),m; p=fun; (*p)(78,&m); printf("%d\n",m);} 则程序段的输出结果为 A)24 B)25 C)26 D)27 |
| A B C D |
| 32.阅读下列程序,则执行后的输出结果为 #include "stdio.h" fun(int x) { if(x/2>0)fun(x/2); printf("%d",x%2);} main() { fun(20); putchar(′\n′);} A)11100 B)10100 C)10101 D)10110 |
| A B C D |
| 33.阅读程序段,则执行后的输出结果为 #include "stdio.h" typedef union{ long x[2]; int y[4]; char z[8]; } atx; typedef struct aa{ long x[2]; int y[4]; char z[8]; } stx; main() { printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));} A)union=8,struct aa=8 B)union=8,struct aa=24 C)union=24,struct aa=8 D)union=24,struct aa=24 |
| A B C D |
| 34.阅读下列程序段 #include "stdio.h" typedef struct aa { int a; struct aa *next; } M; void set(M *k,int i,int *b) { int j,d=0; for(j=1;j{ k[j-1].next=&k[j]; k[j-1].a=b[d++]; } k[j].a=b[d]; } main() { M k[5],*p; int d[5]={23,34,45,56,67}; set(k,5,d); p=k+1; printf("%d\n",);} 要输出45,则在划线处应填入的选项是 A)p->next->a B)++p->a C)(*p).a++ D)p++->a |
| A B C D |
| 35.阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在) #include "stdio.h" void main() { FILE *fp; int a[10],*p=a; fp=fopen("a123.txt","w"); while( strlen(gets(p))>0 ) { fputs(a,fp); fputs("\n",fp); } fclose(fp); } A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中 B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中 C)从键盘输入若干行字符,第一行写入文本文件a123.txt中 D)从键盘输入若干行字符,依次写入文本文件a123.txt中 |
| A B C D |
二、填空题(每空2分,共计30分) | |
| 1.当线性表采用顺序存储结构实现存储时,其主要特点是 【1】 。 | |
| 输入答案,中间不含空格: | |
| 2.软件工程的出现是由于 【2】 。 | |
| 输入答案,中间不含空格: | |
| 3.单元测试又称模块测试,一般采用 【3】 测试。 | |
| 输入答案,中间不含空格: | |
| 4.数据库恢复是将数据库从 【4】 状态恢复到某一已知的正确状态。 | |
| 输入答案,中间不含空格: | |
| 5.数据的基本单位是 【5】 。 | |
| 输入答案,中间不含空格: | |
| 6.执行程序时的输入为123456789,则程序的运行结果为 【6】 。 #include "stdio.h" main() { int a,b; scanf("-%*2d",&a,&b); printf("%d\n",a-b);} |
| 输入答案,中间不含空格: |
| 7.阅读下面程序,则在执行时候的输出为 【7】 。 #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);} |
| 输入答案,中间不含空格: |
| 8.阅读下面程序,则程序的执行结果为 【8】 。 #include "stdio.h" main() { int a=10; fun(a); printf("%d\n",a);} fun(int x) { x=50;} |
| 输入答案,中间不含空格: |
| 9.以下程序的输出结果是 【9】 。 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);} |
| 输入答案,中间不含空格: |
| 10.下面程序的功能是:对字符串从小到大进行排序并输出,请填空。 #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; 【10】 ;i++) if( 【11】 >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( 【12】 ); for(i=0;i<6;i++) printf("%s\n",book[i]);} |
| 输入答案,中间不含空格: |
| 11.下面的函数是完成1~n的累加,请填空。 a(int k) { if(k<=0)printf("error\n"); if(k==1) 【13】 ; else 【14】 ;} |
| 输入答案,中间不含空格: |
| 12.阅读下列程序,则程序实现的功能是 【15】 。 #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; } } |
| 输入答案,中间不含空格: |