计算机类 二级 C
2014年全国计算机等级《二级C语言程序设计》考前押密试题(1) 43 题 含答案 C
1 单选题 1 / 43
下列选项中非法的字符常量是( )。
A '\t' B '\039' C ',' D '\n'
查看答案 B. '\039'
2 单选题 2 / 43
下列函数的类型是( )。 fun(double x) {float y; y=3*x-4; return y; }
A int B 不确定 C void D float
查看答案 A. int
3 单选题 3 / 43
软件生命周期是指( )。
A 软件产品从提出、实现、使用维护到停止使用退役的过程 B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程 D 软件的运行维护过程
查看答案 A. 软件产品从提出、实现、使用维护到停止使用退役的过程
4 单选题 4 / 43
有如下程序: main() f int x=23: do {printf(”%d”,x——);} while(!x); } 该程序的执行结果是( )。
A 321 B 23 C 不输出任何内容 D 陷入死循环
查看答案 B. 23
5 单选题 5 / 43
已有定义:char C;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是( )。
A isupper(c) B 'A'<一c<='Z' C 'A'<一c&&c<='Z' D c<=('z'-32)&&('a'—32)<=c
查看答案 B. 'A'<一c<='Z'
6 单选题 6 / 43
下列叙述中不正确的是( )。
A 在c语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B 在c的函数中,最好使用全局变量 C 外部变量可以在函数之间传递数据 D 自动变量实质上是一个函数内部的局部变量
查看答案 B. 在c的函数中,最好使用全局变量
7 单选题 7 / 43
定义下列结构体(联合)数组: struet St {char name[15]; int age; )a[10]={”ZHA()”,14,”WANG”,15,”LIU”,16,” ZHANG”,l7); 执行语句print[(”%d,%c”,a[2].age,*(a[3].name+2))的输出结果为( )。
A 15,A B 16,H C 16,A D 17,H
查看答案 C. 16,A
8 单选题 8 / 43
若变量已正确定义为float型,要通过输入语句:seanf(”%f%f%f”,&a,&b,&c);给a赋值11.0,b赋值22.0,e赋值33.0,不正确的输入形式是( )。
A 11 22 33 B 11.0,22.0,33.0 C 11.0 22.0 33.0 D 1122
查看答案 B. 11.0,22.0,33.0
9 单选题 9 / 43
以下叙述中正确的是( )。
A 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地表示 B C程序由主函数组成 C C程序由若干函数组成 D C程序中只允许包含一个函数
查看答案 C. C程序由若干函数组成
10 单选题 10 / 43
C语言中运算对象必须是整型的运算符是( )。
A % B / C ! D **
查看答案 A. %
11 单选题 11 / 43
下列关于定点数与浮点数的叙述中错误的是( )。
A 在实数的浮点表示中,阶码是一个整数 B 整数是实数的特例,也可以用浮点数表示 C 实数的补码是其对应的反码在最后一位加1 D 相同长度的浮点数和定点数,前者可表示数的范围要大于后者
查看答案 C. 实数的补码是其对应的反码在最后一位加1
12 单选题 12 / 43
表达式'5'-'1'的值是( )。
A 整数4 B 字符4 C 表达式不合法 D 字符6
查看答案 A. 整数4
13 单选题 13 / 43
有以下程序: #include main() {int a[10]={1,2,3,4,5,6,7,8,9,10),*p=a; printf(”%a\n”,*(p+2)); ) 程序的输出结果是( )。
A 3 B 4 C 1 D 2
查看答案 A. 3
14 单选题 14 / 43
在C语言中,函数返回值的类型最终取决于( )。
A 函数定义时在函数首部所说明的函数类型 B return语句中表达式值的类型 C 调用函数时主调函数所传递的实参类型 D 函数定义时形参的类型
查看答案 A. 函数定义时在函数首部所说明的函数类型
15 单选题 15 / 43
下列程序的运行结果是( )。 #includedstdio.h> void main() {int s=0,k; for(k=7;k>1;k--) {switch(k) {case 1: case 4: case 7: s++: break; case 2: case 3: case 6:break; case 0: case 5: s+=2: break; )) print[(”S=%d”,s); }
A S=3 B s=4 C s=5 D 无输出结果
查看答案 B. s=4
16 单选题 16 / 43
没x为jnt型变量,则执行以下语句后,X的值为( )。 x=10;x=x-=x-X:
A 10 B 20 C 40 D 30
查看答案 A. 10
17 单选题 17 / 43
有以下程序: #include void WriteStr(char*fn.char*str) {FILE*fp fp=fopen(fn,”w”);fputs(str,fp);fclose(fp);) main() { WriteStr(”t1.dat”,”start”); WriteStr(”t1.dat”,”end”);) 程序运行后,文件t1.dat中的内容是( )。
A start B end C startend D endrt
查看答案 B. end
18 单选题 18 / 43
若程序中有宏定义行:#define N 100,则以下叙述中正确的是( )。
A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符N
查看答案 B. 在编译程序对C源程序进行预处理时用100替换标识符N
19 单选题 19 / 43
合法的八进制数是( )。
A 0 B 028 C -077 D 01.0
查看答案 A. 0
20 单选题 20 / 43
以下选项中不合法的用户标识符是( )。
A _123 B printf C A$ D Dim
查看答案 C. A$
21 单选题 21 / 43
若有以下程序: #include void fun(float*a,float*b) ( float w; *a=*a+*a;w= *a;*a= *h;*b=W; } main() { float x=2..0,y=3.0,*px=&x,*py=&y; fun(px,py);printf(”%2.of,%2.0fkn”,X,y); ) 程序的输出结果是( )。
A 4,3 B 2,3 C 3,4 D 3,2
查看答案 C. 3,4
22 单选题 22 / 43
下列程序的运行结果是( )。 #include #define ADD(x)X+X main() { int m=1,n=2,k=3: int s=ADD(m十n)*k; printf(”s=%d”,s): }
A sum=18 B sum=10 C sum=9 D sum=25
查看答案 B. sum=10
23 单选题 23 / 43
若有以下说明,则( )不是对strcpy库函数正确的调用。 strcpy库函数用于复制一个字符串:char*str1==”abed”, strZ[10],*str3="hijklmn",*str4[-2],*str5=”aaaa”;
A strcpy(str2,str1) B strcpy(str3,slrl) C strcpy(str1,str2) D strcpy(str5,strl)
查看答案 C. strcpy(str1,str2)
24 单选题 24 / 43
C语言中,字符(char)型数据在微机内存中的存储形式是( )。
A 反码 B 补码 C EBCDIC码 D ASCIl码
查看答案 D. ASCIl码
25 单选题 25 / 43
有以下程序: #include main() {int a[J一{1,2,3,4,5,6,7,8,9,10,11,12),*P=a +5; *q=NULL;+q=*(p+5); printf(”%d%d\n”,*q,*q); } 程序运行后的输出结果是( )。
A 运后后报错 B 6 6 C 6 11 D 5 10
查看答案 A. 运后后报错
26 单选题 26 / 43
有以下程序: #include main() {int i,X[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)printf(”%d,”,x[i][2-i]); { 程序的输出结果是( )。
A 1,5,9, B 1,4,7, C 3,5,7, D 3,6,9,
查看答案 C. 3,5,7,
27 单选题 27 / 43
有以下程序: main() {int a=0,b=10,c=0,d=0; if(a=1)b=1;c=2; else d=3: printf(”%d,%d,%d,%d\n”,a,b,c,d); } 程序输出( )。
A 0,1,2,0 B 0,0,0,3 C 1,1,2,0 D 编译有错
查看答案 D. 编译有错
28 单选题 28 / 43
下列程序输出结果是( )。 #include%stdio.h> main() {char aE3一{'a','b','c','d','e','f','\o'); int i,j;
A 7,7 B 7,6 C 6,6 D 6.7
查看答案 B. 7,6
29 单选题 29 / 43
有以下程序 #include int a=1: int f(int c) { static int a=2; c=c+1. return(a++)+c; } main() { int i,k一0; for(i=0;i<2;i++){int a=3;k+=f(a);) k+=a; printf(”%d\n”,k); 程序运行结果是( )。
A 14 B 15 C 16 D 17
查看答案 A. 14
30 单选题 30 / 43
按照“先进后出”原则组织数据的结构是( )。
A 队列 B 栈 C 双向链表 D 二叉树
查看答案 B. 栈
31 单选题 31 / 43
若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<B?A:C
A 1 B 2 C 3 D 4
查看答案 C. 3
32 单选题 32 / 43
若有定义:“int*P,x=0,*P,P=&x;”,则语句“printf(”%d\n”,*p);”的输出结果是( )。
A 随机值 B 0 C x的地址 D P的地址
查看答案 B. 0
33 单选题 33 / 43
下列程序中C的二进制值是( )。 char a=2,b=4,c; c=a-b>>2;
A 00000011 B 00010100 C 000111OO D 00011000
查看答案 A. 00000011
34 单选题 34 / 43
有下列程序: main() {char*p[]={¨3697”.”2584”); int i,j;long ntlm=0; for(i=0;i<2;i++) { j=0; while(p[i][j]!='\0') {if((p[i][j]-'\0')%2)num=10*num+p [j][j]-'0'; j+=2; } } print[(“%d\n”,num); 程序执行后的输出结果是( )。
A 35 B 37 C 39 D 3975
查看答案 D. 3975
35 单选题 35 / 43
有下列二叉树,对此二叉树前序遍历的结果为( )。
A ACFXDBEYZ B ABEFXYZCD C ABCDEFXYZ D ABDYECFXZ
查看答案 D. ABDYECFXZ
36 单选题 36 / 43
设有如下关系表:
则下列操作中正确的是( )。
A T=RnS B T=RUS C T—R×S D T—R/s
查看答案 B. T=RUS
37 单选题 37 / 43
若有定义:“int a[2][3];”,则对a数组的第i行第j列元素的正确引用为( )。
A *(*(a+i)+j) B (a+i)[j] C *(a+j+j) D *(a+i)+j
查看答案 A. *(*(a+i)+j)
38 单选题 38 / 43
设有以下语句: int a=1,b=2,c; c=a^(b<<2); 执行后,c的值为( )。
A 6 B 7 C 8 D 9
查看答案 D. 9
39 单选题 39 / 43
若二维数组a有m列,则在a[i][j]前的元素个数为( )。
A i*m+j-1 B i*m+j C j*m+i D i*m+j+1
查看答案 B. i*m+j
40 单选题 40 / 43
已知大写字母A的ASCIl码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是( )。
A c=(c-'A')%26+'A' B C=c+32 C c=c-'A'+'A' D c=('A'+C)%26—'a'
查看答案 B. C=c+32
41 主观题 41 / 43
str是一个由数字和字母字符组成的字符串,由变量num传人字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组1,b中,函数返回数组bh的长度。 例如.str=”abc123de45f967”.结果为:1234567。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容.仅在函数proc()的横线上填入所编写的若干表达式或语句。 试题程序: #include #define M 80 int bb[M]; int proc(char str[].int bh[],int num) { int i.n=0; for(i=0;i<NUM:I++) { if( 【1】 ) { bb[n]=【2】; n++: ) return 【3】 ; } void main() { char str[M]; int num=0.n,i: printf(”Enter a string:n”); gets(str); while(str[num]) num++o n=proc(str,bb,num); prinlf(”\nbb=”); for(i=0;i<N;I++) printf(”%d”,bb[i]); )
查看答案 【1】str[i]:>='0’&&str[i]<=79’【2】str[i]-'0’ 【3】n
42 主观题 42 / 43
下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为123456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include //****found**** void proc(1ong s,long t) {long s1=10; s/=10: *t=s ; //****found**** while(s<0) { s=s/100; *t=s *s1+*t; s1=s1*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)错误:voiDproC(10nGS,lonGt)正确:voiDproC(10nGS,lon9“t)(2)错误:whilE(s<0)正确:whilE(s>O)
43 主观题 43 / 43
请编写函数proc(),其功能是:将str所指字符串中除下标为偶数,同时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符8的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除。依次类推,最后t所指的数组中的内容应是ACEG。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所写的若干语句。 试题程序: #include #include #include #include void proc(char*str,char t[]) { ) void main() ( char str[100],t[100]; system(”CLS”); printf(”\nPlease enter string str:"); scanf(”%s”,str); proc(str,t); printf(”\nThe result is:%s\n”,t): )
查看答案 voiDproC(ChAr*sir。ChArt[])1 inti,j=0; for(i=0;slr[,i]!=’\0’;i++)//从数组的第一个元素开始,到其最后一个 {if(i%2==0&.&str[i]%21=o)//下标为偶数、同时ASCIl码值为奇数的字符 t[j++]=str[i];}//如果成立,则把它放到t数组中 t[j]=’\0’;//字符串结束标志为’\0’}