计算机类 二级 C
2013年9月全国计算机等级《二级C语言程序设计》专家预测卷(3) 43 题 含答案 C
1 单选题 1 / 43
在下列模式中,能够给出数据库物理存储与物理存取方法的是( )。
A 外模式 B 内模式 C 概念模式 D 逻辑模式
查看答案 B. 内模式
2 单选题 2 / 43
有以下程序: #include<stdio.h> main( ) {char a,b,C; b='l';c='A'; for(a=0;a<6;a++) {if(a%2)putchar(b+a); else putchar(c+a); } } 程序运行后的输出结果是( )。
A 1B3D5F B ABCDEF C A2C4E6 D 123456
查看答案 C. A2C4E6
3 单选题 3 / 43
数据库系统的三级模式不包括( )。
A 概念模式 B 内模式 C 外模式 D 数据模式
查看答案 D. 数据模式
4 单选题 4 / 43
以下选项中能表示合法常量的是( )。
A 整数:1,200 B 实数:1.5E2.0 C 字符斜杠:"\" D 字符串:"\007"
查看答案 D. 字符串:"\007"
5 单选题 5 / 43
下列程序的输出结果是( )。 #include main( ) { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3:a+=1; case 1: case 2:a+=2; default:a+=3; } } printf("%d",i); }
A 19 B 1 C 6 D 8
查看答案 A. 19
6 单选题 6 / 43
下列关于线性链表的叙述中,正确的是( )。
A 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C 进行插入与删除时,不需要移动表中的元素 D 以上3种说法都不动
查看答案 C. 进行插入与删除时,不需要移动表中的元素
7 单选题 7 / 43
有以下程序: #include<stdio.h> main() {char b,C; int i; for(i=0; i>6;i++){if(i%2)putchar(i+b); else putchar(i+c); }printf("\n"); } 程序运行后的输出结果是( )。
A ABCDEF B AbCdEf C aBcDeF D abcdef
查看答案 B. AbCdEf
8 单选题 8 / 43
下列函数的功能是( )。 fun(char*a,char*b).{while((*b=*a)!='\0'){a++;b++;})
A 将a所指字符串赋给b所指空间 B 使指针b指向a所指字符串 C 将a所指字符串和b所指字符串进行比较 D 检查a和b所指字符串中是否有'\O'
查看答案 A. 将a所指字符串赋给b所指空间
9 单选题 9 / 43
下列程序的输出结果是( )。 main( ) {int i=1,j=2,k=3; if(i++= =1&&(++j= =3= =‖k++= =3)) printf("%d%d%d\n",i,J,k); )
A 1 2 3 B 2 3 4 C 2 2 3 D 2 3 3
查看答案 D. 2 3 3
10 单选题 10 / 43
有以下程序: #include main( ) {int m=1,n=2,*p=&m,*q=&n,*r; r=P;P=q;q=r; printf("%d,%d,%d,%d\n",m,n,*P,*q); } 程序运行后的输出结果是( )。
A 1,2,1,2 B 1,2,2,1 C 2,1,2,1 D 2,1,1,2
查看答案 B. 1,2,2,1
11 单选题 11 / 43
有下列程序: main( ) { int i,s=0,t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9; i+=2)s+=*(t+i); printf("%d\n",s); } 程序执行后的输出结果是( )。
A 45 B 20 C 25 D 36
查看答案 C. 25
12 单选题 12 / 43
以下关于C语言数据类型使用的叙述中错误的是( )。
A 若要准确无误差地表示自然数,应使用整数类型 B 若要保存带权多位小数的数据,应使用双精度类型 C 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D 若只处理“真”和“假”两种逻辑值,应使用逻辑类型
查看答案 D. 若只处理“真”和“假”两种逻辑值,应使用逻辑类型
13 单选题 13 / 43
设有定义:int x=o,* P;,立刻执行以下语句,正确的语句是( )。
A p=x; B * p=x; C D=NULL; D * p=NULL;
查看答案 C. D=NULL;
14 单选题 14 / 43
若要定义一个具有5个元素的整型数组,以下错误的定义语句是( )。
A int a[5]={o}; B int b[]={0,0,0,0,0). C int c[2+3]; D int i=5,d[i];
查看答案 D. int i=5,d[i];
15 单选题 15 / 43
设有定义:“double x[10],*p=x;”,以下能给数组x下标为6的元素读人数据的正确语句是( )。
A scanf("%f",&x[6]); B scanf("%If",*(x+6)); C scanf("%if",p+6); D scanf("%if",p[6]);
查看答案 C. scanf("%if",p+6);
16 单选题 16 / 43
设有定义: struet complex{int real,unreal;)datal={1,8},data2; 则以下赋值语句中错误的是( )。
A data2=datal; B data2={2,6}; C data2.real=datal.real; D data2.real=datal.unreal;
查看答案 B. data2={2,6};
17 单选题 17 / 43
有以下程序: #include #include struct A {int a;char b[10];double C;); struct A f(struct A t): main( ) {struct A a={1001,"ZhangDa",l098.0}; a=f(a); printf("%d,%S,%6.1f\n",a.a,a.b,a.c); } struct A f(struct A t) {t.a= 1002;strcpy(t.b,"ChangRon9");t.c=1202.0;return t;} 程序运行后的输出结果是( )。
A 1001,ZhangDa,1098.0 B 1002,ZhangDa,1202.0 C 1001,ChangRong,1098.0 D 1002,ChangRong,1202.0
查看答案 D. 1002,ChangRong,1202.0
18 单选题 18 / 43
软件测试的目的是( )。
A 评估软件可靠性 B 发现并改正程序中的错误 C 改正程序中的错误 D 发现程序中的错误
查看答案 C. 改正程序中的错误
19 单选题 19 / 43
有以下程序: #include #include main() { char x[]="STRING"; x[0]=0;x[1]='\0';x[2]='0'; printf("%d %d\n",sizeof(x),strlen(x)); } 程序运行后的输出结果是( )。
A 6 1 B 7 0 C 6 3 D 7 1
查看答案 B. 7 0
20 单选题 20 / 43
下列数据结构中,属于非线性结构的是( )。
A 循环队列 B 带链队列 C 二叉树 D 带链栈
查看答案 C. 二叉树
21 单选题 21 / 43
以下叙述中错误的是( )。
A 可以用typedef说明的新类型名来定义变量 B typedef说明的新类型名必须使用大写字母,否则会出编译错误 C 用typedef可以为基本数据类型说明一个新名称 D 用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名
查看答案 B. typedef说明的新类型名必须使用大写字母,否则会出编译错误
22 单选题 22 / 43
负责数据库中查询操作的数据库语言是( )。
A 数据定义语言 B 数据管理语言 C 数据操纵语言 D 数据控制语言
查看答案 C. 数据操纵语言
23 单选题 23 / 43
若有定义语句:“char*s1=”0K”,*s2=”ok”;”,以下选项中,能够输出“OK”的语句是( )。
A if(strcmp(sl,s2)= =0)puts(s1); B if(strcmp(sl,s2)!=0)puts(s2); C if(strcmp(sl,s2)= =l)puts(s1); D if(stremp(sl,s2)!=0)puts(s1);
查看答案 D. if(stremp(sl,s2)!=0)puts(s1);
24 单选题 24 / 43
有以下程序: #include int f(int x); main( ) { int a,b=0; for(a=0;a<3;a++) { b=b+f(a);putchar('A'+b);} }int f(int x) { return x * x1; } 程序运行后的输出结果是( )。
A ABE B BDI C BCF D BCD
查看答案 B. BDI
25 单选题 25 / 43
有以下程序: #include main(){ int S,t,A=10;double B=6; S=sizeof(A);t=sizeof(B); printf("%d,%d\n",S,t); } 在VC6平台上编译运行,程序运行后的输出结果是( )。
A 2,4 B 1,4 C 4,8 D 10,6
查看答案 C. 4,8
26 单选题 26 / 43
有以下程序: #include main( ) { struct node{int n; struct node*next;} *P; struct node x[3]={{2,x+1),{4,x+2},{6,NULL}}; P= X; printf("%d,",p->n); printf("%d\n",p->next->n); } 程序运行后的输出结果是( )。
A 2,3 B 2,4 C 3,4 D 4, 6
查看答案 B. 2,4
27 单选题 27 / 43
下列选项中属于向对象设计方法主要特征的是( )。
A 继承 B 自顶向下 C 模块化 D 逐步求精
查看答案 A. 继承
28 单选题 28 / 43
软件生命周期是指( )。
A 软件产品从提出、实现、使用维护到停止使用退役的过程 B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程 D 软件的运行维护过程
查看答案 B. 软件从需求分析、设计、实现到测试完成的过程
29 单选题 29 / 43
设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于( )。
A p=""; B p="0"; C p=0; D p=";
查看答案 C. p=0;
30 单选题 30 / 43
若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。 ch='b'; k=10: printf("%X,%o,",ch,ch,k); printf("k=%%d\n",k);
A 因变量类型与格式描述符的类型不匹配,输出无定值 B 输出项与格式描述符个数不符,输出为0值或不定值 C 62,142,k=%d D 62,142,k=%l0
查看答案 C. 62,142,k=%d
31 单选题 31 / 43
表达式:(int)((double)9/2)-(9)%2的值是( )。
A 0 B 3 C 4 D 5
查看答案 B. 3
32 单选题 32 / 43
C语言主要是借助以下哪个功能来实现程序模块化?( )
A 定义函数 B 定义常量和外部变量 C 三种基本结构语句 D 丰富的数据类型
查看答案 A. 定义函数
33 单选题 33 / 43
设fp已定义,执行语句“fp=fopen("file","w");”后,以下针对文本文件file操作叙述的选项中正确的是( )。
A 写操作结束后可以从头开始读 B 只能写不能读 C 可以在原有内容后追加写 D 可以随意读和写
查看答案 B. 只能写不能读
34 单选题 34 / 43
有以下程序 #include void fun(char*c) {while(*c) {if(*c>='a'&&*c<='2')*c=*c=('a'-'A'); c++; } } main( ) {char s[81]; gets(s);fun(;)puts(s); 当执行程序时从键盘输入Hello Beijing<回车>,,则程序的输出结果是( )。
A hello beijing B Hello Beijing C HELLO BEIJING D hELLO Beijing
查看答案 C. HELLO BEIJING
35 单选题 35 / 43
有以下程序: #include(stdio.h) main( ){char a,b,C,d; scanf("%c%C",&a,&b); c=getchar( ); d=getchar( ); printf{"%c%c%c%c\n",a,b,C,d); } 当执行程序时,按下列方式输入数据(从第l列开始,代表回车j注意:回车也是 一个字符) 12 34 则输出结果是( )。
A 1234 B 12 C 123 D 1234
查看答案 C. 123
36 单选题 36 / 43
有以下程序: #include #define SUB(a)(a)-(a) main( ) {int a=2,b=3,c=5,d; d=SUB(a+b)*C; printf("%d\n",d); } 程序运行后的输出结果是( )。
A 0 B -l2 C -20 D 10
查看答案 C. -20
37 单选题 37 / 43
以下关于C语言的叙述中正确的是( )。
A C语言中的注释不可以夹在变量名或关键字的中间 B C语言中的变量可以在使用之前的任何位置进行定义 C 在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D C语言的数值常量中夹带空格不影响常量值的正确表示
查看答案 B. C语言中的变量可以在使用之前的任何位置进行定义
38 单选题 38 / 43
下列关于二叉树的叙述中,正确的是( )。
A 叶子结点总是比度为2的结点少一个 B 叶子结点总是比度为2的结点多一个 C 叶子结点数是度为2的结点数的两倍 D 度为2的结点数是度为1的结点数的两倍
查看答案 B. 叶子结点总是比度为2的结点多一个
39 单选题 39 / 43
有以下程序: #include main( ) { int s=0.n; for(n=0;n<3;n++) { switch(s) { case 0; case1:s+=1; case 2:s+=2;break; case 3:S+=3; default:s+=4; } printf("%d,"s); } } 程序运行后的输出结果是( )。
A 1,2,4, B 1,3,6, C 3,10,14, D 3,6,10,
查看答案 C. 3,10,14,
40 单选题 40 / 43
下列选项中,能正确定义数组的语句是( )。
A int num[0..2008]; B int num []; C int N=2008; int num[N]; D #define N 2008; int num[N];
查看答案 D. #define N 2008; int num[N];
41 主观题 41 / 43
请补充函数proc(),其功能是:计算并输出给定10个数的方差。 例如,给定的l0个数为12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,输出为S=8.877500。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proe()的横线上填人所编写 的若干表达式或语句。 试题程序: #include #include double proc(double x[10]) { int i; double avg=0.0; double sum=0.0; double abs=0.0; double sd; for(i=0;i<10;i++) 【1】 ; avg=sum/10; for(i=0;i<10;i++) 【2】 ; sd= 【3】 ; return sd; }void main(){ double s,str[10]={12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0}; int i; printf("\nThe original data is:\n"); for(i=0;i<10;i++) printf("%6.If",str[i]); printf("\n\n"); s—proc(str); printf("s=%f\n\n",s); }
查看答案 【1】sum+=x[i]【2】abs+=(x[i]一avg)*(x[i]-avg)【3】sqrt(abs/10)
42 主观题 42 / 43
下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include //****found**** void proc(long S,long t){ long sl=10; s/=10; *t=s%10; //****found**** while(s<O) { s=s/l00; *t=s%10*sl+*t; s1=sl*10;} } void main() {long S,t; system("CLS"): printf("\nPlease enter S:"); scanf("%ld",&s); proc(S,&t); . printf("The result is:%ld\n",t); }
查看答案 1.错误:void proc(10ng S,long t) 正确:void proc(long s,long*t) 2.错误:while(s<0) 正确:while(s>O)
43 主观题 43 / 43
编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序: #include #include #include char*proc(char(*a)[81],int num) { } void main() { char ss[l0][81],*max; int n,i=0; printf("输入若干个字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i],"****")= =0) { i++: gets(ssEi]); puts(ss[i]); } n=i: max=proe(SS,n); printf("\nmax=%s\n",max); }
查看答案 char*proc(char(*a)[81],int M) { char*max; int i=0: max=a[O]: for(i=0;i<M;i++) if(strlen(max)<strlen(a[i]))//找出最长的字符串 max=a[i]; return max; //返回最长字符串的地址 }