C语言等级考精彩试题目.docx
- 文档编号:11269511
- 上传时间:2023-05-30
- 格式:DOCX
- 页数:77
- 大小:39.91KB
C语言等级考精彩试题目.docx
《C语言等级考精彩试题目.docx》由会员分享,可在线阅读,更多相关《C语言等级考精彩试题目.docx(77页珍藏版)》请在冰点文库上搜索。
C语言等级考精彩试题目
C语言等级考试复习资料
题型一单项选择题
考点1:
运算符与表达式
1.inti=10;表达式"5<=i<=10"的值是〔B〕。
真为1
(A)0(B)1(C)10(D)没有正确答案
2.假如变量x和y都为int类型,x=100,y=200,下面程序段的输出结果是〔B〕。
printf("%d",(x,y));没有括号
(A)200(B)100(C)100200(D)输出不确定的值
3.以下程序的输出结果是〔D〕。
#include"stdio.h"
voidmain()
{
inta=-1,b=4,k;
k=(++a)&&!
(b--<=0);
printf("%d%d%d\n",k,a,b);
}
(A)104(B)103(C)003(D)004i=0时,a=2,先取值后++,f
(2),a=3;f函数内a=c++,先取值后++,a=3(这个a的作用于在函数f内,不影响外部的a),c=4,最后的a被return给k;k=3;
i=1时,a=3,先取值后++,f(3),a=4;f函数内a=c++,先取值后++,a=4,c=5,a被return给k,k=4。
i=2时,循环完毕。
最后输出k为4
4.下述程序的输出结果是〔D〕。
#include"stdio.h"
voidmain()
{
inta[]={7,4,6,3,10};
intm=10,k,*ptr=&a[0];
for(k=0;k<5;k++)
m=*(ptr+k) *(ptr+k): m; printf("%d\n",m); }根据程序要求算得 (A)10(B)4(C)6(D)3 5.假如变量均已正确定义并赋值,以下合法的C语言赋值语句是〔A〕。 根据C语言的定义 A)x=y==5;B)x=n%2.0C)x+n=i;D)x=5=4+1; 6.执行下面程序段,B的值应为〔B〕。 intx=35; charz='A'; intB; B=((x&15)&&(z<'a'));结果为真就为1 A)0B)1C)2D)3 7.设a、b都是int型变量,且a、b初始值分别为5和10,如此表达式a=a+b++,b+a,b+1的值为〔B〕。 计算可得 A)11B)12C)15D)16 8.假如以下选项中的变量已正确定义,如此正确的赋值语句是〔B〕。 A)x1=26.8%3B)x3=0x12C)1+2=x2D)x4=1+2=3 9.表达式((356%100)&&(-1&&1))*10的值为〔C〕。 A)0B)1C)10D)560 10.C语言中运算对象必须是整形的运算符是〔A〕。 〔A〕%〔B〕/〔C〕=〔D〕<=有定义可得 11.设intx=1,y=1;表达式(! x||--y)的值是〔A〕。 计算等于0 〔A〕0〔B〕1〔C〕2〔D〕-1 考点2: 循环结构 12.求取满足式12+22+32+……+n2≤1000的n,正确的语句是〔A〕。 (A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++); (B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i); (C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i); (D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i); 根据题中表达式找对应选项满足的循环结构 13.以下表示中正确的答案是〔D〕。 (A)C语言中所有的循环语句都是先判断条件再执行循环体 (B)break语句只能中断循环 (C)continue语句可以完毕所有的循环 (D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可 根据定义判断正误得到 考点3: 用户自定义数据类型 14.设有以下定义: structnode { intdata; structnode*next; }*p; 如此以下的语句中正确的答案是〔B〕。 (A)p=malloc(sizeof(structnode)) (B)p=(structnode*)malloc(sizeof(structnode)) (C)*p=(structnode*)malloc(4) (D)p=(structnode)malloc(sizeof(structnode)) 15.运行以下程序的输出结果为〔A〕。 #include voidmain() { enumcolor{Black=1,Red,Blue,Green}; enumcolorc1,c2; c1=Red;c2=Blue; printf("%d,%d\n",c1,c2); 函数fun的功能是: 求出无符号十进制数n中包含0的个数,与各位数字的最大值 } (A)2,3(B)1,2(C)1,1(D)0,-1 16.根据下面的结构体类型与其结构数组的定义,值等于‘A’的表达式是〔D〕。 structseason { charname[10]; intday; }; structseasons[4]={“Spring〞,90,〞Summer〞,91,〞Autumn〞,92,〞Winter〞,92}; (A)s[3].name[0](B)s[3].name (C)s[2].name(D)s[2].name[0] 按照程序算得 17.对于如下枚举类型定义,枚举量Pasica的值为〔C〕。 enumlanguage{Basic=3,Assembly=6,Ada=100,COBOL,Pasica} A)4B)7C)102D)103 18.设有以下定义: uniondata { intd1; floatd2; }demo; 如此以下表示中,错误的答案是〔D〕。 A)变量demo与成员变量d2所占的内存字节数一样 B)变量demo中各成员的地址一样 C)变量demo和各成员的地址一样 赋值后其中的值应为90 typedefstruct { intn; charc; doublex; }STD; 如此以下选项中,能正确定义结构体数组并赋初值的语句是〔A〕。 A)STDs[2]={{1,'A',62}},{2,'B',75}}; B)STDs[2]={1,"A",62,2,"",75};格式错位 C)structs[2]={{1,'A'},{2,'B'}}; D)structs[2]={{1,"A",62.5},{2,"B",75.0}} uniondt { inta; charb; doublec; }data; 以下表示中,错误的答案是〔C〕。 A)data的每个成员起始地址一样 B)变量data所占的内存字节数与成员C所占字节数相等 C)程序段: data.a=5;printf("%f\n",data,c);输出结果为5.000000正确结果应为5 D)data可以作为函数的实参 21.设有如下枚举类型定义: enumlanguage{Basic=3,Assemble,Ada=100,COBOL,Fortran}; 如此枚举量Fortran的值为〔A〕。 A)102B)103C)4D)7 考点4: 宏定义 22.以下程序的输出结果是〔D〕。 #include #definef(x)x*x voidmain() { inta=6,b=2,c; c=f(a+b)/f(a-b); printf("%d\n",c); } (A)-2.5(B)-2(C)64(D)4 23.运行以下程序的输出结果为〔B〕。 #include"stdio.h" #defineR1+2 #defineS(r)r*r #defineV(r)S(r)*R voidmain() { intr1=1+2; printf("%d",V(r1));通过程序要求算得 } (A)27(B)11(C)9(D)7 24.运行以下的程序,输出结果为〔D〕。 #defineM3*2 #defineNM+2 #defineS(r)M*N*r/2 #inlcude voidmain() { inta=4; printf("%d",S(a)); } A)96B)144C)22D)40 25.以下程序的输出结果是〔A〕。 #defineMAX(x,y)(x)>(y)? (x): (y) voidmain() { inta=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf("%d\n",t); },<,>的优先级比赋值=的优先级高的 A)7B)6C)5D)没有答案 26.运行下面程序的输出结果为〔D〕。 #defineX5 #defineYX+1 #defineZY*X/2 intmain(void) { inta; a=Y; printf(“%d,%d\n〞,Z,--a);输出等于a+b*b+c-c+a=1+2*2+3-3+1=6 } 〔A〕15,6〔B〕15,5〔C〕12,5〔D〕7,5 考点5: 文件操作 27.C语言中fscanf函数的正确调用形式是(D) (A)fscanf(文件指针,格式字符串,输出列表);顺序错误 (B)fscanf(格式字符串,输出列表,文件指针); (C)fscanf(格式字符串,文件指针,输入列表); (D)fscanf(文件指针,格式字符串,输入列表); 考点6: 选择结构 28.设有定义: inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是〔C〕。 (A)if(a>b)c=a,a=b,b=c;(B)if(a>b){c=a,a=b,b=c;} (C)if(a>b)c=a;a=b;b=c;(D)if(a>b){c=a;a=b;b=c;} C的结果为3 29.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是(B)。 (A)switch(a)(B)switch(a==1) {case1: a=b;break;{case0: a=b;break; default: a++;case1: a++; }} (C)switch(a)(D)switch(a==1) {default: a++;break;{case1: a=b;break; case1: a=b;case0: a++; }} 30.有如下程序 #include"stdio.h" voidmain() { inta=2,b=-1,c=2; if(a if(b<0)c=0; else c++; printf("%d\n",c); } 该程序的输出结果是〔C〕。 inta=12,b=5,c=-3;if(a>b)//满足if(b<0)c=0;//不满足elsec++//执行c=2printf(“%d\n〞,c);}输出c的值为2 (A)0(B)1(C)2(D)3 31.假如有定义inta=1,b=3,c=5,d=4,x;如此执行以下程序段后x的值为〔D〕。 if(a if(c elseif(a if(b elsex=3; elsex=6; elsex=7; A)1B)3C)6D)2 if(expr) 语句1; else 语句2; 其中,作为条件判断的表达式expr〔A〕。 〔A〕可以是任意表达式〔B〕只能是关系表达式或逻辑表达式 〔C〕不能使算术表达式〔D〕不能是赋值表达式 定义为任意表达式 考点7: 常量与变量 33.以下合法的字符常量是〔C〕。 (A)“a〞(B)‘\72’〔0~127且不能加’\’〕(C)‘\0x12’(D)‘ab’ 不能为双引号 考点8: 位运算 34.以下程序的结果是〔B〕。 #include"stdio.h" voidmain() { unsignedinta=3,b=10; printf("%d\n",a<<2|b>>1);结果应为10+3所以等于13 } (A)1(B)13(C)12(D)5 35.表达式15|127的值是〔B〕。 A)15B)127C)0D)1 考点9: 常用函数 36.以下程序的输出结果是〔C〕。 #include voidmain() { charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcpy(p+strlen(q),r); strcat(p,q); printf("%d%d\n",sizeof(p),strlen(p)); } (A)209(B)99(C)2011(D)1111 37.以下程序的输出结果是〔C〕。 #include voidmain() { charp[]={'1','2','3'},q[]="123"; printf("%d,%d\n",sizeof(p),sizeof(q)); 指针存放的也就是内存地址,在32位系统下,内存地址是32位的,也就是4个字节。 所以32位系统下,指针始终占用4个字节。 所以结果为4 } A)4,4B)3,3C)3,4D)4,3 38.以下程序段的运行结果是〔C〕。 chara[10]=〞abcd〞; strcpy(a+2,〞ABCD〞); printf(“%s\n〞,a); 〔A〕ABCD〔B〕aABCD〔C〕abABCD〔D〕abcABCD 39.运行下面程序的输出结果为〔C〕。 intmain(void) { chars[20]=〞CLanguage.〞; printf(“%d,%d〞,sizeof(s),strlen(s));数组定义 } 〔A〕10,11〔B〕10,10〔C〕20,10〔D〕10,20 考点10: 数组 40.如下对C语言字符数组的描述中错误的答案是〔C〕。 (A)字符数组可以存放字符串 (B)字符数组的字符串可以整体输入、输出 (C)可以在程序中用赋值运算符“=〞对字符数组进展整体赋值 (D)不可以用关系运算符对字符数组中的字符串进展比拟 可以在程序中用赋值运算符“=〞对字符数组进展整体赋值 41.以下不能对二维数组a进展正确初始化的语句是(A)。 (A)inta[2][3]={{1,2},{3,4},{5,6}}; (B)inta[][3]={{1,2},{0}}; (C)inta[2][3]={0}; (D)inta[][3]={1,2,3,4,5,6};其中不能省略 42.假如有以下声明和语句: inta[]={1,2,3,4,5,6},*p; p=a; 如此如下说法正确的答案是〔B〕。 A)数组a中值为6的元素的地址可用表达式p+6表示 B)表达式p[4]和a[4]的值相等两表达式算出的结果都为同一个值 C)p++和a++都是正确的表达式 D)表达式&p[5]的值和a[5]的值相等 43.假如有说明: intarr[5][5];如此对arr数组元素的正确引用是〔D〕。 A)arr[5][5]B)a[0][0]C)arr[1,3]D)arr[1+1][0] arr[1+1][0] 44.以下能对二维数组a进展正确初始化的语句是〔C〕。 〔A〕inta[2][]={{1,0,1},{5,2,3}};未能满足省略的条件 〔B〕inta[2][4]={{1,2,3},{4,5},{6}}; 〔C〕inta[][3]={{1,2,3},{4,5,6}}; 〔D〕inta[][]={{1,0,1},{},{1,1}}; 考点11: 指针 45.以下程序的运行结果是〔A〕。 #include voidmain() { inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[5],*q=p+2; printf("%d\n",*p+*q); } A)14B)15C)8D)9 输出1,6.因为本身数组名也是一种指针,其指针类型与数组类型一样。 46.假如有说明: inti,j=5,*p=&i;如此与i=j;等价的语句是〔D〕。 A)i=*p;B)*p=*&j;C)i=&j;D)i=**p; 47.假如有以下定义和语句: inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3]; p=p+2; 如此printf("%d",*p);的输出结果是〔A〕。 1处的索引号地址给指针q,1处的索引号处的值为2printf("%d\n",*p+*q); A)6B)5C)4D)3 structst{intn;structst*next;}; staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’,},*p; p=&a[0]; 如此表达式的值为6的是〔D〕。 〔A〕p++->n〔B〕p->n++〔C〕(*p).n++〔D〕++p->n 考点12: 变量的作用域和生存期 49.以下表示中正确的答案是〔B〕。 〔A〕全局变量的作用域一定比局部变量的作用域X围大 〔B〕静态〔static〕变量的生存期贯穿于整个程序的运行期间 〔C〕函数的形参都属于全局变量 〔D〕未在定义语句中赋初值的auto变量和static变量的初值都是随机值 静态〔static〕变量的生存期贯穿于整个程序的运行期间 考点13: 函数的定义与调用 50.以下不正确的函数首部是〔B〕。 〔A〕f(inta)〔B〕fun(floata[5][])字符出错 〔C〕function(double*a)〔D〕fun(int*a[10]) 题型二读程序回答如下问题 考点1: 变量的作用域 1.有如下程序: #include intk=1; voidfun(intm) { m+=k;k+=m; { chark='D'; printf("\n%d",k-'C');/*①*/ } } voidmain() { inti=4; fun(i); printf("\n%d,%d",i,k);/*② */ } 1处输出结果为〔B〕。 (A)2(B)1(C)3(D)A、B、C参考答案都不对 ②处输出结果为〔A〕。 (A)4,1(B)5,6(C)4,6(D)A、B、C参考答案都不对 2.阅读下面的程序: #include voidnum() { externintx,y; inta=15,b=10; x=a-b; y=a+b; } intx,y; voidmain() { inta=7,b=5; x=a-b; y=a+b; num(); printf("%d,%d\n",x,y); } (1)程序的输出结果是〔B〕。 运算结果为a+b A)2,12B)5,25C)1,12D)输出不确定 (2)如果删除程序中的extern,如此输出结果是〔C〕。 A)2,12B)5,25C)1,12D)输出不确定 3.阅读下面的程序: #include voidmain() { intm=10,n=20,t=30; ++m; t+=++n; { intn=10,t; t=n*2; m+=t; printf("%d,%d,%d\n",m,n,t); } printf("%d,%d,%d\n",m,n,t); } (1)程序的运行结果是〔D〕。 依次为532141 A)31,11,22B)31,10,20C)53,21,42D)53,21,41 31,10,2031,21,5153,21,4253,21,41 (2)假如将程序中的intn=10,t;语句删除,如此程序的运行结果是〔A〕。 A)31,11,22B)31,10,20C)53,21,42D)53,21,41 31,10,2031,21,5153,21,4253,21,41理由同上 考点2: 字符串处理 4.有如下程序 #include voidfun(char*s) { inti;charc; c=s[0]; for(i=1;s[i]! ='\0';i++) s[i-1]=s[i]; s[i-1]=c; } voidmain() { chars[10]="abcdefg"; inti; for(i=1;i<=3;i++) fun(s); puts(s); } 函数fun的功能是〔C〕。 (A)左移一个字符,并将第一个字符放到字符串末尾 (B)右移一个字符,并将最后一个字符放到字符串开头 (C)删除第一个字符 (D)删除最后一个字符 。 右移一个字符,并将最后一个字符放到字符串开头 程序的运行结果是〔D〕 (A)bcdefga(B)defgabc(C)efgabcd(D)bcdefg 5.有如下程序 #include #include longfun(charstr[]) {inti;longs=0,t; for(i=0;str[i]! ='\0';i++) {t=0; while(str[i]>='0'&&str[i]<='9') {t=t*10+str[i]-'0';i++;} s=s+t; } returns; } voidmain() { charstring[]="Wele123To456Sichuan789"; longlen; len=fun(string); printf("%ld\n",len); } 〔1〕程序运行的输出结果为〔B〕 (A)123456789(B)9(C)1368(D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 等级 精彩 试题