C语言程序设计试题及答案2.docx
- 文档编号:10428376
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:65
- 大小:45.27KB
C语言程序设计试题及答案2.docx
《C语言程序设计试题及答案2.docx》由会员分享,可在线阅读,更多相关《C语言程序设计试题及答案2.docx(65页珍藏版)》请在冰豆网上搜索。
C语言程序设计试题及答案2
《C语言程序设计》(卷)考核班级
学生数印数考核方式闭卷考核时间120分钟
(本试卷包括第一卷和第二卷,答卷时间总共120分钟)
第一卷
第一部分:
基础知识(20项,共40分)
1.一个C语言程序是由()组成的。
A.主程序B.子程序C.函数D.过程
2.转换说明符%x的输出形式是()。
A.十进制B.八进制C.十六进制D.二进制
3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!
=b;++a,++b)
printf(“------------“);的正确说法是()。
A.循环体只执行一次B.死循环
C.循环体一次也不执行D.输出-----------
4.若x、y、z均为int型变量,则执行下列语句后的z值为()。
x=1;y=2;z=3;z=(x>y)?
z:
y;z=(z z: x; A.1B.4C.2D.3 5.下面标识符中,合法的用户标识符为()。 A.P#AdB.12aC.charD._int 6.‘A’+3的结果是()。 A.’A’B.’D’的ASCⅡ码C.65D.3 7.语句charstr[20];说明str是一个字符串,最多能表示()。 A.20个字符B.19个字符C.18个字符D.21个字符 8.将int型变量n转换成float型变量的方法是()。 A.floatnB.(float)nC.float(n)D.21个字符 9.以下不正确的描述是()。 A.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成 B.while循环是先判断表达式后执行循环体语句 C.do-while和for循环均是先执行循环体语句,后判断表达式 D.for、while、do-while循环中的循环体均可以由空语句构成 10.在循环中使用break语句的功能是()。 A.使程序的执行跳出break所在的那一重循环 B.使程序执行结束 C.跳出包含此break语句的所有循环 D.终止本次循环,继续下次循环 11.下面是一个初始化指针的语句: int*px=&a;其中指针变量的名字应该是()。 A.*pzB.aC.pxD.&a 12.若指针px为空指针,则()。 A.px指向不定B.px的值为零 C.px的目标为零D.px的地址为零 13.对于语句int*px[10],以下说法正确的是()。 A.px是一个指针,指向一个数组,数组的元素是整数型。 B.px是一个数组,其数组的每一个元素是指向整数的指针。 C.A和B均错,但它是C语言的正确语句。 D.C语言不允许这样的语句。 14.具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是()。 A.P=YB.*P=Y[i] C.P+&Y[i]D.P=&Y 15.已知staticinta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p,则表达式*(p[0]+1)+**(q+2)的值是()。 A.5B.4C.6D.7 16.已知for(;n>=1;n--),下列语句实现将S2所指字符数组中前n个字符复制到S1所指字符数组中,其中代码不正确的是()。 A.*S1++=*S2++B.S1[n-1]=S2[n-1] C.*(S1+n-1)=*(S2+n-1)D.*(++S1)=*(++S2) 17.调用函数的实参与被调用函数的形参应该有如下关系()。 A.只要求实参和形参个数相等B.只要求形参和实参顺序相同 C.只要求实参和形参数据类型相同D.上述三点均需具备 18.联合体成员的数据类型()。 A.相同B.可以不同也可以相同 C.长度一样D.是结构体变量 19.由系统分配和控制的标准输出文件为()。 A.键盘B.磁盘C.打印机D.显示器 20.C语言标准库函数fread(fd,buffer,n)的功能是()。 A.从文件fd中读取长度不超过n个字节的数据送入buffer指向的内存区域 B.从文件fd中读取长度不超过n-1个字节的数据送入buffer指向的内存区域 C.从文件fd中读取长度不超过n个字符送入buffer指向的内存区域 D.从文件fd中读取长度不超过n-1个字符送入buffer指向的内存区域 第二部分: 简单程序(12项,共30分) 21.下列程序 main() {intx,y,z; x=y=2;z=3; y=z++-1; printf(“%d\t%d\t”,x,y); y=++x-1; printf(“%d\t%d\n”,x,y); y=z---1; printf(“%d\t%d\t”,z,y); y=--z-1; printf(“%d\t%d\n”,z,y); } 运行后输出的数据为¬¬¬_______。 A.3142B.3133C.2232D.2132 2413242233211312 22.下列程序 main() {inti,j;char*a,c; a=”computer”; printf(“%s”,a); for(i=0,j=7;i {c=a[i]; *(a+i)=*(a+j); a[j]=c; } printf(“->%s\n”,a); c=a[j-1,i=2+j]; printf(“a[%d]=%c\n”,i,c); } 运行后输出的数据为___. A.computer->computerB.computer->retupmoc a[3]=ua[5]=m C.computer->retupmocD.computer->retupmoc a[4]=pa[2]=t 23.下列程序 intsum(intn) {intp=1,s=0,i; for(i=1;i<=n;i++)s+=(p*=i); returns; } main() {printf(“sum(5)=%d\n”,sum(5)); } 运行后输出的数据为____ A.sum(5)=151B.sum(5)=152C.sum(5)=153Dsum(5)=155 24.下列程序 main() {staticinta[]={5,6,7,3,2,9}; ints1,s2,i,*ptr; s1=s2=0; ptr=&a[0]; for(i=0;i<5;i+2=2) {s1+=*(ptr+i); s2+=*(ptr+i+1); } printf(“s1=%d,s2=%d\n”,s1,s2); } 运行后输出的数据为_____ A.s1=18,s2=14B.s1=14,s2=32C.s1=14,s2=18D.s1=15,s2=19 25.下列程序 intc=1; main() {staticinta=5;intb=6; printf(“a=%db=%dc=%d\n”,a,b,c); func(); printf(“a=%d,b=%d,c=%d\n”,a,b,c); func(); } func() {staticinta=4;intb=10; a+=2; c+=10; b+=c; printf((“a=%d,b=%d,c=%d\n”,a,b,c); } 运行后输出的数据为____. A.a=5b=6c=1B.a=5b=6c=1 a=6b=21c=11a=7b=17c=11 a=5b=6c=11a=5b=6c=11 a=8b=31c=21a=9b=17c=21 C.a=5b=6c=1D.a=5b=6c=1 a=6b=21c=11a=7b=17c=11 a=6b=21c=11a=7b=17c=11 a=8b=31c=21a=9b=38c=21 26.已知 structstudent {char﹡name; intstudent_n; chargrade; }; structstudenttemp,*p=&temp; temp.name=”chou”; 则下面不正确的是_______。 表达式值 A.p→namechou B.(*p)→name+2h C.*p→name+2e D.*(p→name+2)o 27.下列程序 #defineMAX10 main() {inti,sum,a[]={1,2,3,4,5,6,7,8,9,10}; sum=1; for(i=0;i sum-=a[i]; printf(“SUM=%d”,sum); } 程序运行结果是: A.SUM=55B.SUM=-54C.SUM=-55D.SUM=54 28.下列程序 voidinv(int*x,intn) {int*p,t,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i {t=*i; *i=*j; *j=t; } return; } main() {staticinti,a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a,10); for(i=0;i<10;i++) printf(“%d,”,a[i]); } 程序运行结果: A.0,2,3,4,5,6,7,7,9,11B.11,9,7,7,6,5,4,3,2,0 C.3,7,9,11,0,6,7,5,4,2D.2,4,5,7,6,0,11,9,7,3 29.下列程序 main() {inta[10],b[10],*pa,*pb,i; pa=a;pb=b; for(i=0;i<3;i++,pa++,pb++) {*pa=i;*pb=2*i; printf(“%d\t%d\n”,*pa,*pb); } printf(“\n”); pa=&a[0]; pb=&b[0]; for(i=0;i<3;i++) {*pa=*pa+i; *pb=*pb*i; printf(“%d\t%d\n”,*pa++,*pb++); } } 运行后输出的数据为______。 A.00B.00C.00D.00 12121222 24242424 00000000 22221212 48242448 30.下列程序 copy_string(from,to) char*from,*to; {while(*from)*to++=*from++; *to=’\0’; } main() {staticchars1[]=”c_program.”; staticchars2[80]; copy_string(s1,s2); printf(“%s\n”,s2); copy_string(“123”,s2); printf(“%s\n”,s2); } 运行后输出的数据为()。 A.c_program123B.123C.c_program123D.c_program 123 31.下列程序: #include main() {chara[40],b[40]; inti,j; printf(“Enterthestring: ”); scanf(“%s”,a); i=j=0; while(a[i]! =’\0’) {if(! (a[i]>=’\0’&&a[i]<=’9’)) {b[j]=a[i];j++; } ++i; } b[j]=’\0’; printf(“%s”,b); } 运行后输出的结果是()。 A.把键盘输入的字符串显示在屏幕上 B.把键盘输入的字符串中的数字字符删掉,然后显示该字符串 C.把键盘输入的字符串中的字符0和9删掉,然后显示该字符串 D.只保留由键盘输入的字符串中的字母数字,然后显示该字符串 32.下列程序 #include main() {chara[80]; inti,j; printf(“Enterthestring: ”); scanf(“%s”,a); i=0; while(a[i]! =’\0’) {if(a[i]>=’A’&&a[i]<=’Z’) a[i]=a[i]-‘A’+’a’; } printf(“%s”,a); } 运行后输出的结果是()。 A.把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。 B.把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。 C.把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符串。 D.把键盘输入的字符串原封不动地显示在屏幕上。 第二卷 说明: (1)第二卷含二大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。 (2)每空栏填对得3分,两大题共10个空栏,全填对得30分。 试题一 一个整数称为完全平方数,是指它的值是另一个整数的平方。 如81是个完全平方数,因为它是9的平方。 下列程序是在三位的正整数中寻找符合下列条件的整数: 它既是完全平方数,且三位数字中又有两位数字相同: 例如144(12*12)、676(26*26)等,从程序中找出并输出所有满足上述条件的三位数。 程序如下: main() {intn,k,a,b,c; for(k=1;;k++) {______①______ if(n<100)_____②_____ if(n<999)_____③_____ a=n/100; b=_____④_____ c=n%10, if(flag(a,b,c)) printf(“n=%d=%d*%d\n”,n,k,k); } } flag_____⑤_____ {return(! (x-y)*(x-z)*(y-z)); } 试题二 以下程序所列函数replace(char*s1,char*s2,charstr1,char*str2)的功能是将已知字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后所生成的新的字符串存于字符数组s2中。 说明: 生成字符串s2的过程是一个循环,顺序访问字符串s1的每个字符;当从某个字符开始不能构成与str1相同的子字符时,就把该字符拷贝到数组s2,当从某个字符开始能构成一个与str1相同的子字符串时,就将字符串str2的各字符拷贝到字符数组s2,并继续访问字符串s1中那个子串之后的字符,直至字符串s1被访问完毕,字符复制即告结束。 下列程序运行的结果是输出: ABCXYZdefgabABCXYZdabab 程序如下: replace(char*s1,char*s2,char*str1,char*str2) {char*t0,*t1,*t2; while(⑥) {for(t0=s1,t1=str1;*t1! =’\0’&&⑦;t0++,t1++); if(*t1! =’\0’) *s2++=⑧; else{for(t1=str2;*t1! =’\0’;) *s2++=⑨; ⑩;} } *s2=’\0’; } main() {chars1[]=”abcdefgababcdabab.”; chars2[80]; replace(s1,s2,”abc”,”ABCXYZ”); printf(“%s\n”,s2); } 参考答案 第一卷 一.基础知识(20项,共40分) 1.C2.C3.C4.A5.D6.B7.B8.B9.C10.A11.C12.B13.B14.D15.A16.D17.D18.B19.D20.A 二.简单程序 21.C22.B23.C24.C25.A26.B27.B28.D29.A30.D31.B32.A 第二卷试题一: ①n=k*k②continue③break④n%100/10或(n-100*a)/10或n/10-(n/100)*10⑤intx,inty,intz 试题二: ⑥*s1或s1! =’\0’⑦*t0==*t1或*t1==*t0⑧*s1++ ⑨*t1++⑩s1=t0或s1=s1+strlen(str1) 《C语言程序设计》(卷)考核班级 学生数印数考核方式闭卷考核时间120分钟 (本试卷包括第一卷和第二卷,答卷时间总共120分钟) 第一卷 说明: (1)第一卷全部为选择题,每题可供选择的答案中,只有一个正确答案。 (2)答本卷的题目时,要在标准答题纸上编号对应的栏口中,用铅笔将正确答案涂黑。 在试题上直接勾划不得分。 (3)本卷共分70分,其中第1—26题每题2分,第27—32题每题3分。 第一部分: 基础知识(20题,共40分) 1、一个C语言的源程序中,()。 (A)必须有一个主函数(B)可以有多个主函数 (C)必须有主函数和其他函数(D)可以没有主函数 2、下列数据中,为字符串常量的是()。 (A)‘A’(B)“house”(C)Howdoyoudo.(D)’$abc’ 3、若有定义: inta=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为()。 (A)1.4(B)1(C)2.0(D)2 4、设有intx=11;则表达式(x++*l/3)的值为()。 (A)3(B)4(C)11(D)12 5、执行x=5>1+2&&2||2*4<4-! 0后,x的值为()。 (A)-l(B)O(C)1(D)5 6、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子: (x)/(y×z)的c语言表达式是()。 (A)x/y*z(B)x*(1/(y*z))(C)x/y*1/z(D)x/y/z 7、设有以下说明语句 structex {intx;floaty;charz;}example; 则下面的叙述不正确的是()。 (A)struct是结构体类型的关键字(B)example是结构体类型名 (C)x,y,z都是结构体成员名(D)structex是结构体类型 8、假定w、x、y、z、m均为int型变量;有如下程序段: w=1;x=2;y=3;z=4; m=(w w: x;m=(m m: y;m=(m m: z; 则该程序段执行后,m的值是()。 (A)4(B)3(C)2(D)1 9、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。 (A)地址传递(B)单向值传递 (C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定 10、以下定义语句中,错误的是()。 (A)inta[]={1,2};(B)char*a[3]; (C)chars[10]="text";(D)intn=5,a[n]; 11、下列程厅执行后的输出结果是()。 main() {chararr[2][4];strcpy(arr,"you");strcpy(arr[1],"me"); arr[0][3]='&'; printf("%s\n",arr); } (A)you&me(B)you(C)me(D)err 12、标有/**/的语句的执行次数是()。 inty,i; for(i=O;i<20;i++) {if(i%2==0) continue; y+=i;/**/ } (A)20(B)19(C)10(D)9 13、若用数组名作为函数调用的实参,传递给形参的是()。 (A)数组的首地址(B)数组第一个元素的值 (C)数组中全部元素的值(D)数组元素的个数 14、下列语句执行后的结果是()。 y=5;p=&y;x=*p++; (A)x=5,y=5(B)x=5,y=6(C)x=6,y=5(D)x=6,y=6 15、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为()。 inta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p; (A)8(B)7(C)6(D)5 16、经过下面的语句后 inti,a[10],*p; 定义后,下列语句中合法的是()。 (A)p=100: (B)p=a[5];(C)p=a+2;(D)p=&(i+2); 17、若有以下说明和语句,则对pup中sex域的正确引用方式是()。 structpupil {charname[20]; intsex; }pup,*p; p=&pup; (A)p.pup.sex(B)p->pup.sex(C)(*p).pup.sex(D)(*p).sex 18、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()。 uniondata {inti; charch; doublef; }x; (A)7(B)11(C)8(D)10 19、若有下面的说明和定义: structtest {intm1;charm2;floatm3; unionuu{charu1[5];intu2[2];}ua; }myaa; 则sizeof(structtest)的值是()。 (A)12(B)16(C)14(D)9 20、若要打开: A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。 (A)fopen("A: \\user\\abc.txt","r")(B)fopen("A: \\user\\abc.txt","r+") (C)fopen("A: \\user\\abc.txt","rb")(D)fopen("A: \\userl\\abc.txt","w") 第二部分: 简单程序(12题,共30分) 21、以下程序的运行情况是()。 main() {inti=1,sum=0; while(i<10) sum=sum+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 试题 答案