C语言程序设计试题及答案_第1页
C语言程序设计试题及答案_第2页
C语言程序设计试题及答案_第3页
C语言程序设计试题及答案_第4页
C语言程序设计试题及答案_第5页
已阅读5页,还剩34页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计试题及答案C语言程序设计试题及答案C语言程序设计试题及答案C语言程序设计试题及答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:《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<y)z:x;A.1B.4C.2D.35.下面标识符中,合法的用户标识符为()。A.P#AdB.12aC.charD._int6.‘A’+3的结果是()。A.’A’B.’D’的ASCⅡ码C.65D.37.语句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.&a12.若指针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=&Y15.已知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.716.已知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.2132241324223321131222.下列程序main(){inti,j;char*a,c;a=”computer”;printf(“%s”,a);for(i=0,j=7;i<j;i++,j--){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->retupmoca[3]=ua[5]=mC.computer->retupmocD.computer->retupmoca[4]=pa[2]=t23.下列程序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));}运行后输出的数据为____(5)=151(5)=152(5)=153Dsum(5)=15524.下列程序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);}运行后输出的数据为_____=18,s2=14=14,s2=32=14,s2=18=15,s2=1925.下列程序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=1a=6b=21c=11a=7b=17c=11a=5b=6c=11a=5b=6c=11a=8b=31c=21a=9b=17c=21C.a=5b=6c=1D.a=5b=6c=1a=6b=21c=11a=7b=17c=11a=6b=21c=11a=7b=17c=11a=8b=31c=21a=9b=38c=2126.已知structstudent{char﹡name;intstudent_n;chargrade;};structstudenttemp,*p=&temp;=”chou”;则下面不正确的是_______。表达式值→namechouB.(*p)→name+2hC.*p→name+2eD.*(p→name+2)o27.下列程序#defineMAX10main(){inti,sum,a[]={1,2,3,4,5,6,7,8,9,10};sum=1;for(i=0;i<MAX;i++)sum-=a[i];printf(“SUM=%d”,sum);}程序运行结果是:=55=-54=-55=5428.下列程序voidinv(int*x,intn){int*p,t,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<p;i++,j--){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]);}程序运行结果:,2,3,4,5,6,7,7,9,11,9,7,7,6,5,4,3,2,0,7,9,11,0,6,7,5,4,2,4,5,7,6,0,11,9,7,329.下列程序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.000C.00D.00121212222424242400000000222212124824244830.下列程序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_program123C.c_program123D.c_program12331.下列程序:#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分)二.简单程序第二卷试题一:①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十;后,c的值为()。(A)(B)1(C)(D)24、设有intx=11;则表达式(x++*l/3)的值为()。(A)3(B)4(C)11(D)125、执行x=5>1+2&&2||2*4<4-!0后,x的值为()。(A)-l(B)O(C)1(D)56、以下变量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/z7、设有以下说明语句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<x)w:x;m=(m<y)m:y;m=(m<z)m:z;则该程序段执行后,m的值是()。(A)4(B)3(C)2(D)19、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。(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)err12、标有/**/的语句的执行次数是()。inty,i;for(i=O;i<20;i++){if(i%2==0)continue;y+=i;/**/}(A)20(B)19(C)10(D)913、若用数组名作为函数调用的实参,传递给形参的是()。(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=615、执行下面的语句后,表达式*(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)516、经过下面的语句后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)(B)p->(C)(*p).(D)(*p).sex18、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()。uniondata{inti;charch;doublef;}x;(A)7(B)11(C)8(D)1019、若有下面的说明和定义:structtest{intm1;charm2;floatm3;unionuu{charu1[5];intu2[2];}ua;}myaa;则sizeof(structtest)的值是()。(A)12(B)16(C)14(D)920、若要打开:A盘上user子目录下名为的文本文件进行读、写操作,下面符合此要求的函数调用是()。(A)fopen("A:\\user\\","r")(B)fopen("A:\\user\\","r+")(C)fopen("A:\\user\\","rb")(D)fopen("A:\\userl\\","w")第二部分:简单程序(12题,共30分)21、以下程序的运行情况是()。main(){inti=1,sum=0;while(i<10)sum=sum+1;i++;printf("i=%d,sum=%d",i,sum);}(A)i=10,sum=9(B)i=9,sum=9(C)i=2,sum=l(D)运行出现错误22、若输入B,以下程序的运行结果为()。main(){chargrade;scanf("%c",&grade);switch(grade){case'A':printf(">=85");case'B':case'C':printf(">=60");case'D':printf("<60");default:printf("error");}}(A)>=85(B)>=60(C)>=60<60error(D)error23.有如下程序main(){intx=23;do{printf("%d",x--);}while(!x);}该程序的执行结果是()。(A)321(B)23(C)不输出任何内容(D)陷入死循环24.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是()。(A)12(B)13(C)14(D)1525.以下程序的输出结果是()。main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}(A)101(B)6(C)5(D)426.以下程序的输出结果是()。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}(A)100200(B)57(C)200100(D)7527.下面的程序执行后,文件test.t中的内容是()。#include<>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("","newworld");fun("","hello,");}(A)hello,(B)new,worldhello(C)new,world(D)hello,rld28.以下程序的运行结果是()。#include<>main(){staticchars[30]="abcdefg";staticchart[]="abcd";inti,j;i=0;while(s[i]!='\0')i++;j=0;whi1e(t[j]!='\0'){s[i+j]=t[j];j++;}s[i+j]='\0';printf("%s\n",s);}(A)abcdabcdefg(B)abcdefg(C)abcd(D)abcdefgabcd29.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是()。(A)69825(B)63825(C)6385(D)69382530.若已建立如下图所示的单向链表结构在该链表中,指针p,s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是()。(A)p=p->next;s->next=p;p->next=s;(B)p=p->next;s->next=p->next;p->next=s;(C)s->next=NULL;p=p->next;p->next=s(D)p=(*p).next;(*s).next=(*p).next;(*p).next=s;31.请选择正确的运行结果填入()中。include<>intx,y;num(){inta=15,b=10;intx,y;y=a-b;y=a+b;return;}main(){inta=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}(A)12,2(B)5,25(C)2,12(D)不确定32.以下程序的输出结果是()。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}(A)19(B)17(C)15(D)12第二卷说明:(1)第二卷含两大题,均属填空题,每题各有5个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。(2)每空栏填对得3分,两大题共10个空栏,全对得30分。试题一:有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中输入字符串以及输出上述的结果。intletter,digit,space,others;/*是全局变量*/main(){intcount(char_____(1)_____);chartext[80];printf("\nlnputstring:\n");____(2)___;printf("string:");puts(text);letter=O;digit=O;space=O;others=O;_____(3)_____;printf("letter:%d,digit:%d,space:%d,other:%d\n",letter,digit,space,others);}intcount(charstr[]){inti;for(i=O;str[i]!='\0';i++)if((____(4)____>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))letter++;elseif(str[i]>='0'&&str[i]<='9')digit++;elseif(str[i]=='')space++;else____(5)____;}试题二:把下列程序补充完整,实现两个字符串的比较,即自己写个strcmp函数,函数原型为:intstrcmp(char*p1,char*p2)设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当sl<>s2时,返回它们两者的第一个不同的字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果sl<s2,则输出负值。main(){intm;char___(6)____,str2[20],*p1,*p2;printf("Inputtwostring:\n");scanf("%s",strl);scanf("%s",___(7)______);p1=&strl[0];p2=_____(8)_____;m=strcmp(p1,p2);printf("result:%d,\n",m);}strcmp(char___(9)_____,char*p2)/*两个字符串比较的函数*/{inti;____(10)______;while(*(pl+i)==*(p2+i))if(*(p1+i++)=='\0')return(0);return(*(pl+i)-*(p2+i));/*不等时返回结果为第一个不等字符ASCII码的差值*/}参考答案第一卷第一部分:基础知识第二部分:简单程序第二卷试题一:1、str[]2、gets(text)或scanf(“%s”,text)3、count(text)4、str[i]5、others++试题二:6、str1[20]7、str28、&str2[0]9、*p110、i=0

C语言程序设计》(卷)考核班级学生数印数考核方式闭卷考核时间120分钟(本试卷包括第一卷和第二卷,答卷时间总共120分钟)第一卷本卷共70分,其中第1~26题每题2分,第27~32题每题3分。第一部分:基础知识1、一个C语言程序是从______开始执行的。A、程序中的第一个语句B、包含文件(头文件)的第一个函数C、名为main的函数D、程序中的第一个函数2、语句while(!E){……}中的条件!E等价于_____A、E==0B、E!=1C、E!=0D、~E3、若有以下类型说明语句:charw;intx;floaty;doublez;则表达式w*x+z-y的结果为_____类型。A、floatB、doubleC、intD、char4、一个函数返回值的类型是由____决定的A、return语句中的表达式类型;B、定义函数时所指定的函数类型C、调用该函数的函数的类型D、调用函数时临时类型5、设x、y、z和k都是int型变量,则执行下列表达式后,变量x的值为_____.x=(y=4,z=16,k=32);A、4B、16C、32D、526、有以下程序:main(){inti=10,j=1;printf(“%d,%d\n”,i--,++j);}执行后输出的结果是________A、9,2B、10,2C、9,1D、10,17、以下指针s的指字符串的长度为_______char*s=”\t\’Name\\Address\n”;A、19B、15C、18D、-128、设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是____A、3B、0C、9D、-129、对于下面的for循环语句,可以断定它____。for(x=0,y=0;(y!=123)&&(x<4);x++)printf(“--------“);A、是无限循环(死循环)B、循环次数不定C、共执行4次循环D、共执行3次循环10、设有以下语句,则_______不是对a数组元素的正确引用,其中0a[10]={0,1,2,3,4,5,6,7,8,9};int*p=a;A、a[p-5]B、*(&a[i])C、a[i]D、*(a+i)11、为了判断两个字符串s1和s2是否相等,应当使用______A、if(s1==s2)B、if(s1=s2)C、if(strcmp(s1,s2))D、if(strcmp(s1,s2)==0)12、对于C语言程序中的函数,下列叙述中正确的是______A、函数的定义不能嵌套,但函数调用可以嵌套B、函数的定义可嵌套,但函数的调用不能嵌套C、函数的定义和调用均不能嵌套D、函数的定义和调用均可嵌套13、有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf(“%d”,i);case2:printf(“%d”,i);default:printf(“%d”,i);}}执行后输出的结果是______A、011122B、012C、012020D、12014、假定有以下变量定义:intk=7,x=12;则能使值为3的表达式是____A、x%=(k%=5)B、x%=(k-k%5)C、x%=(k-k%5)D、(x%=k)-(k%=5)15、以下程序的输出结果是_____main(){intx=4,y=8;x+=y;y+=x;printf(“%d%d\n”,x,y);}A、1220B、48C、1212D、8416、有以下程序执行后输出的结果是_____main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;printf(“%d\n”,s[2]);}A、随机值B、0C、5D、617、以下函数的功能是______fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!=’\0’)i++;return(s1[i]==’\0’&&s2[i]==’\0’);}A、将s2所指字符串赋给s1B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为018、以下叙述中正确的是____A、全局变量的作用域一定比局部变量的作用域范围大B、静态(static)类型变量的生存期贯穿于整个程序的运行期间C、函数的形参都属于全局变量D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值19、有以下程序,执行后输出的结果是____main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf(“%d,%d,%d\n”,i,j,k);}A、1,1,2B、2,2,1C、2,2,2D、2,2,320、以下函数abc的功能是____intabc(char*ps){char*p;p=ps;while(*p++);return(p-ps);}A、比较两个字符串的大小B、求字符串的长度C、将串ps复制到串p中D、以上三种说法都不对第二部分:简单程序21、以下程序的输出结果是:_____main(){inti=10,j=10;printf(“%d,%d\n”,++i+j++,j--);}A、21,10B、20,10C、21,9D、20,922、以下程序的输出结果是:__________main(){intm=5;if(m++>5)printf(“%d\n”,m);elseprintf(“%d\n”,m--);}A、7B、6C、5D、423、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为____if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;A、1B、2C、3D、624、以下程序企图把从终端输入的字符输出到名为的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。出错的原因是_______#include<>main(){FILE*fout;charch;fout=fopen(‘’,’w’);ch=fgetc(stdin);while(ch!=’#’){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}A、函数fopen调用形式有误B、输入文件没有关闭C、函数fgetc调用形式有误D、文件指针stdin没有定义25、有以下程序,执行后输出结果是______main(){union{unsignedintn;unsignedcharc;}ul;=’A’;printf(“%c\n”,;}A、产生语法错B、随机值C、AD、6526、有以下程序,执行后输出结果是_____main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}A、456B、258C、369D、78927、以下程序运行后,输出结果是_______intfunc(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,n;n=func(k,m);printf(“%d,”,n);n=func(k,m);printf(“%d”,n);}A、8,15B、8,16C、8,17D、8,828、在执行以程序时,如果从键盘上输入:ABCdef,则输出结果为:____#include<>main(){charch;while((ch=getchar())!=’\n’){if(ch>=’A’&&ch<=’Z’)ch=ch+32;elseif(ch>=’a’&&ch<=’z’)ch=ch-32;printf(“%c”,ch);}printf(“\n”);}A、ABCdefB、abcDEFC、abcD、DEF29、有以下程序,执行后输出结果是____int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d\n”,*p,*q,*r);}A、7,8,8B、7,8,7C、8,7,7D、8,7,830、下面程序的输出结果是_____fun(char*s,intp1,intp2){charc;while(p1<p2){c=s[p1];s[p1]=s[p2];s[p2]=c;p1++;p2--;}}main(){chara[]=”ABCDEFG”,k,*p;fun(a,0,2);fun(a,4,6);printf(“%s\n”,a);}A、ABCDEFGB、DEFGABCC、GFEDCBAD、CBADGFE31、以下程序的运行结果是____#include<>longfunc(intx){longp;if(x==0||x==1)return(2);p=x*func(x-1);return(p);}main(){printf(“%d\n”,func(4));}A、8B、12C、24D、4832、下面的程序运行后,全局量和的正确结果为__________structtree{intx;char*s;}t;func(structtreet){=10;=”computer”;return(0);}main(){=1;=”minicomputer”;func(t);printf(“%d,%s”,,;}A、10,computerB、1,computerC、1,minicomputerD、10,minicomputer第二卷说明:(1)第二卷均为填空题,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句以构成一个正确的C语言程序。(2)答本卷的题目时,要在本卷答题纸上编号对应的栏目中,用钢笔或圆珠笔书写。用铅笔答题无效,在试题上直接答题者无效。请勿在第一卷的答题卡上填写本卷答案。(3)每空栏3分,共10个空栏,共30分。试题一下列程序是求1+1/2+1/4+……+1/50的值。#include“”main(){inti=2;floatsum=1;while(___(1)_____){sum=sum+i;_____(2)_______;}printf(“sum=%f”,sum);}试题二下列函数用于统计一行字符中的单词个数,单词之间用空格分隔。word_num(charstr[]){inti,num=0,word=0;for(i=0;str[i]!=____(3)___;i++)if(____(4)______==’‘)word=0;elseif(word==0){word=1;______(5)______;}return(num);}试题三以下函数的功能是删除字符串s中的所有数字字符。voiddele(char*s){intn=0,i;for(i=0;s[i];i++)if(____(6)_____)s[n++]=s[i];s[n]=____(7)_____;}试题四以下程序的功能是:从键盘输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。main(){floatx[1000],sum=,ave,a;intn=0,i;printf(“Entermark:\n”);scanf(“%f”,&a);while(a>=&&n<1000){sum=____(8)____;x[n]=___(9)_____;n++;scanf("%f",&a);}ave=sum/n;printf(“Output:\n”);printf(“ave=%f\n”,ave);for(i=0;i<n;i++)if_____(10)______printf("%f\n”,x[i]);}参考答案第一卷一、基础知识二、简单程序第二卷1、i<=502、i+=2或i=i+23、‘\0’4、str[i]5、num++6、!(s[i]>='0'&&s[i]<='9')7、'\0'8、sum+a9、a10、(x[i]<ave)《C语言程序设计》(卷)考核班级学生数印数考核方式闭卷考核时间120分钟一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)数据的逻辑结构可以分为()。A)静态结构和动态结构B)物理结构和存储结构C)线性结构和非线性结构D)紧凑结构和松散结构(2)对线性表,采用顺序存储的优点是()。A)便于随机存取B)便于进行插入和删除操作C)需要的存储空间不必连续D)方便线性表的扩充(3)设具有n个结点的完全二叉树的第1层为根结点,若一个结点i满足2i>n,则该结点没有()。A)左子结点B)右子结点C)左子结点和右子结点D)左子结点、右子结点和兄弟结点(4)快速排序算法的平均时间复杂度为()。A)O(n)B)O(n2)C)O(nlog2n)D)O(log2n!)(5)在面向对象的程序设计方法中,描述对象静态和动态特征的三要素是()。A)封装、继承和重载B)属性、事件和方法C)数据、代码和接口D)内聚、耦合和驱动(6)软件测试的目的是()。A)证明软件的正确性B)找出软件系统中存在的所有错误C)证明软件系统中存在错误D)尽可能多地发现软件系统中的错误(7)软件开发范型的作用是()。A)为了控制软件需求的易变性B)作为一种软件工程方法学C)作为一种项目管理方法D)作为需求分析的指导(8)在数据库三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是()。A)外模式B)内模式C)存储模式D)模式(9)在数据库技术中,面向对象数据模型是一种()。A)概念模型B)结构模型C)物理模型D)逻辑模型(10)数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)三者之间的关系是()。A)DBS包括DB和DBMSB)DBMS包括DB和DBSC)DB包括DBS和DBMSD)DBS就是DB,也就是DBMS(11)阅读以下程序main(){intx;scanf(”%d”,&x);if(x--<5)printf(”%d\n”,x);elseprinff(”%d\n”,x++);}程序运行后,如果从键盘上输入5,则输出结果是()。A)3B)4C)5D)6(12)假定W,X,Y,z和m均为int型变量,有如下程序段:w=1;x=2;y=3;z:4;m=(w<x)w:x;m=(m<y)m:y;m=(m<z)m:z;则该程序段执行后,m的值为()。A)4B)3C)2D)1(13)t为int型变量,进入下面的循环之前,t的值为0。while(t-1){……}则以下叙述中正确的是()。A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(14)以下程序的输出结果是()。main(){intnum=0;while(num<=2){num++;printf(”%d\n”,num);}}A)1B)1C)1D)l222334(15)以下各选项企图说明一种新的类型名,其中正确的是()。A)typedefvlint;B)typedefv2=int;C)typedefintv3;D)typedefv4:int;(16)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。A)地址传递B)单向值传递C)由实参传给形参,再由形参传给实参D)传递方式由用户指定(17)以下函数值的类型是()fun(floatx){floaty;y=3*x-4:returny;}A)intB)不确定C)voidD)float(18)设有以下函数:f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是()。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));}A)7B)7C)7D)789107911137(19)以下程序的输出结果是()。main(){charc='Z';printf("%c",c-25);}A)aB)ZC)z-25D)Y(20)以下选项中,非法的字符常量是()。A)'\t'B)'\17'C)"\n"D)'\xaa'(21)若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;(22)以下定义语句中,错误的是()。A)inta[]={1,2};B)char*a[3];C)chars[10]="test";D)intn=5,a[n];(23)假设int型变量占两个字节的存储单元,若有定义intx[10]={0,2,4};,则数组x在内存中所占字节数为。A)3B)6C)10D)20(24)以下程序的输出结果是()。main(){inti,a[10];for(i=9;i>=0;i--)a[i]=10-i:printf("%d%d%d",a[2],a[5],a[8]);}A)258B)741C)852D)369(25)以下数组定义中不正确的是()。A)inta[2][3];B)intb[][3]={0,1,2,3};C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};(26)以下程序的输出结果是()。main(){inta[4][4]={{l,3,5},{2,4,6},{3,5,7}};prinff("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);}A)0650B)1470C)5430D)输出值不确(27)以下程序的输出结果是()。#include<string.h>main(){charst[20]="hello\0\t\’\\";printf("%d%d\n",stden(st,sizeof(st));}A)99B)520C)1320D)2020(28)以下程序的输出结果是()。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}A)56B)25C)34D)程序错误(29)以下程序的输出结果是()。structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=l;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p-h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);}A)12B)23C)14D)32(30)以下程序的输出结果是()。main(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A)101B)6C)5D)4(31)以下程序的输出结果是()。unionmyun{struct{intx,y,z;}u;intk;}a;main(){;;;=0;printf("%d\n",);}A)4B)5C)6D)0(32)以下程序的输出结果是()。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}A)100200B)57C)200100D)75(33)以下程序的输出结果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}A)19B)17C)15D)12(34)整型变量X和Y的值相等,且为非0值,则以下选项中,结果为0的表达式是()。A)x||yB)x|yC)x&yD)x^y(35)下面的程序执行后,文件test.t中的内容是()。#include<>#include<string.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}A)hello,B)newworldhello,C)newworldD)hello,world二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1]至[15]序号的横线上,答在试卷上不得分。(1)算法的复杂性指的是[1]和空间复杂性。(2)设栈S的初始状态为空,队列Q的初始状态如下图所示:a1a2a3a4↑↑队头队尾对栈S和队列Q进行如下两步操作:①Q中的元素依次出队,并压入栈S中,直至Q为空;②依次弹出S中的元素并进入Q,直至S为空。在上述两步操作后,队列Q的状态是[2]。(3)面向对象程序设计使用的对象是[3]的封装体。(4)在关系数据库中,关系模型的三类完整性是指[4]、参照完整性和用户定义的完整性。(5)为数据库建立索引,是一种以牺牲[5]换取提高数据库访问速度的策略。(6)以下函数的功能是求x的y次方,请填空。doublefun(doublex,inty){inti;doublez;for(i=1,z=x;i<y;i++)z=z*[6];returnz;}(7)设有以下程序:main(){inta,b,k=4,m=6,*pl=&k,*p2=&m;a=p1==&m:b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}执行该程序后,a的值为[7],b的值为[8]。(8)若已定义inta[10],l;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1,2,3,4,5,6,7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论