您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > C程序设计期末考试习题(含答案)
1c语言程序设计期末试题A(含答案)一、单项选择题(选择一个最佳答案,每题2分,共20分)1.一个C程序的执行是从()。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.下列选项中,不能用作标识符的是()。A)_1234_B)_1_2C)int_2_D)2_int_3.以下定义语句中正确的是()。A)chara='A'b='B';B)floata=b=10.0;C)inta=10,*b=&a;D)float*a,b=&a;4.设有以下定义:#defined2inta=0;doubleb=1.25;charc=’A’;则下面语句中错误的是()。A)a++;B)b++C)c++;D)d++;5.以下4个选项中,不能作为一条C语句的是()。A){;}B)a=0,b=0,c=0;C)if(a0);D)if(b==0)m=1;n=2;6.有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是()。A)a=a+b=b++B)w%(int)a+b)C)(c+w)%(int)aD)w=a==b;7.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。A)p=1;B)*q=2;C)q=p;D)*p=5;8.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。2A)scanf(“%d”,pa);B)scanf(“%d”,a);C)scanf(“%d”,&pa);D)scanf(“%d”,*pa);9.若有说明:char*language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式*language[1]*language[2]比较的是()。A)字符B和字符PB)字符串FORTRAN和字符串BASICC)字符F和字符BD)字符串BASIC和字符串PASCAL10.执行语句for(i=1;i++4;);后变量i的值是()。A)3B)4C)5D)不定一、填空题(每空2分,共18分)1.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为。2.有程序段:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];则b中的值是。3.函数swap(intx,inty)实现对x和y值的交换。则执行语句{inta[2]={1,2};swap(a[0],a[1]);}后,a[0]=,a[1]=。4.设有以下宏定义:#definef(z)z*z,执行赋值语句k=f(4+4)/f(2+2);(k为int型变量)后,k的值是。5.书写语句求a,b两个数的最大值max。?:;6.若x为int型变量,则执行x=7;x+=x-=x+x;语句后,x的值是。二、读程序写结果(每题6分,共24分)1.有以下程序intf(inta){intb=0;staticc=3;b=b+1;c=c+1;return(a+b+c);}voidmain(){inta=2,i;for(i=0;i3;i++)printf(“%2d”,f(a));}执行后输出的结果是。32.有以下程序voidf(inty,int*x){y=y+*x;*x=*x+y;}voidmain(){intx=2,y=4;f(y,&x);printf(“x=%d,y=%d\n”,x,y);}执行后输出的结果是。3.有以下程序#defineLETTER1#includestdio.hvoidmain(){charstr[20]=CLanguage,c;inti=0;while((c=str[i])!='\0'){i++;#ifdefLETTERif(c='a'&&c'z')c=c+1;elseif(c=='z')c=c-25;#elseif(c='B'&&c='Z')c=c-1;elseif(c=='A')c=c+25;#endifprintf(%c,c);}}执行后输出的结果是。4.有以下程序voidfun(int*a,inti,intj){intt;if(ij){t=a[i];a[i]=a[j];a[j]=t;i++;j--;4for(i=0;i4;i++)printf(%2d,a[i]);fun(a,i,j);}}voidmain(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i4;i++)printf(%2d,x[i]);printf(\n);}执行后输出的结果是。四、程序填空(每空1分,共8分)下面程序的功能是:计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。#includestdio.h【1】intsumhw(char**p,intn);charjughw(char*str);voidmain(intargc,char*argv[]){ints;if(argc2)printf(请输入有效参数);else{s=sumhw(【2】,argc-1);printf(共有%d个回文串\n,s);}}intsumhw(char**p,intn){charflag;inti,sum=0;for(i=0;in;i++){flag=jughw(【3】);if(【4】)sum++;}returnsum;5}charjughw(char*str){char*p1,*p2;intn;n=strlen(str);p1=str;p2=【5】;while(【6】){if(*p1!=*p2)break;else{p1++;【7】;}}if(【8】)return('N');elsereturn('Y');}五、编程题(30分)1.用指针和数组两种方法实现如下功能:将一个字符串按逆序存放。(18分)要求(1)主函数中完成输入和输出字符串。(2)逆序存放功能用子函数完成。2.一个整型数组有10个元素,编写程序删除所有值为n的元素。(12分)要求(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。(2)删除功能用子函数完成。C语言模拟试卷一参考答案一、单项选择题(选择一个最佳答案,每题2分,共20分)1、A2、D3、C4、B5、D6、C7、D8、A9、A10、C二、填空题(每空2分,共18分)1、2.5000002、93、124、285、(ab)max=amax=b6、-146三、读程序写结果(每题6分,共24分)1、7892、x=8,y=43、CLbohvbhf4、86128612四、程序填空(每空1分,共8分)【1】#includestring.h【2】argv+1【3】*(p+i)【4】flag==’Y’【5】str+n-1【6】p1p2【7】p2--【8】p1p2五、编程题(共30分)1.(1)数组法(9分)#includestring.h#includestdio.h#defineN20voidinv(charstr[],intn);voidmain(){charstr[N];gets(str);inv(str,strlen(str));puts(str);}voidinv(charstr[],intn){inti,j,temp;for(i=0,j=n-1;i=j;i++,j--){temp=str[i];str[i]=str[j];str[j]=temp;}}7(2)指针法(9分)#includestring.h#includestdio.h#defineN20voidinv(char*str,intn);voidmain(){charstr[N];gets(str);inv(str,strlen(str));puts(str);}voidinv(char*str,intn){char*i,*j,temp;for(i=str,j=str+n-1;i=j;i++,j--){temp=*i;*i=*j;*j=temp;}}2.(12分)#includestdio.hintm;voiddel_element(intnum[],intn);voidmain(){intnum[10];inti,n;m=10;for(i=0;i10;i++)scanf(%d,&num[i]);printf(pleaseinputn\n);scanf(%d,&n);del_element(num,n);for(i=0;im;i++)printf(%d,num[i]);}voiddel_element(intnum[],intn)8{inti,j;for(i=0;im;i++)if(num[i]==n){for(j=i+1;jm;j++)num[j-1]=num[j];m--;i--;}}c语言程序设计期末试题B(含答案)一单项选择题(每小题1分,共10分)1.以下4组用户定义标识符中,全部合法的一组是()A)_totalclu_1sumB)if-maxturbC)txtREAL3COMD)intk_2_0012.以下程序的输出结果是()#includestdio.hmain(){inta=1,b=2,c=3;printf(“%d”,cba);}A)2B)1C)0D)33.以下正确的叙述是()A)在C语言中,main函数必须位于文件的开头B)C语言每行中只能写一条语句C)C语言本身没有输入、输出语句D)对一个C语言进行编译预处理时,可检查宏定义的语法错误4.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()A)scanf(%d,pa);B)scanf(%d,a);9C)scanf(%d,&pa);D)scanf(%d,*pa);5.若有以下程序段,intc1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是()A)0B)0.5C)1D)26.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是()A)a=10ora=0B)a=0|a=10C)a=10&&a=0D)a=10‖a=07.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是()main(){inta,b,c,d;scanf(“%d,%d,%d%d”,&a,&b,&c,&d);…}A)1234B)123,4C)1,2,3,4D)1,2,348.有以下程序段main(){intk=0;while(k=1)k++;}则while循环执行的次数是()A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次9.以下程序的输出结果是()#includestdio.hmain(){inta=5,b=4,c=6,d;printf(“%d”,d=ab?(ac?a:c):b);}A)5B)4C)6D)不确定10.下面是对数组a的初始化,其中不正确的是()A)a[5]={ABCD}B)a[5]={'A','B','C','D'}C)a[5]=D)a[5]=ABCDE10二、填空题(每空2分,共32分)1.结构化程序设计中的三种基本结构是[1]、[2]、[3]。2.C程序的基本组成单位是[4]。3.标识符的第一个字符必须是[5]或[6]。4.实常数123.457的规范化指数表示形式是[7]。5.表达式7/2的结果是[8]。表达式7%2的结果是[9]。6.定义一个整型数组a[10],则下标最大的数组元素为[10]。7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有[11]。8.C语言提供了[12]命令用来实现“文件包含”的操作。9.已知:charc
本文标题:C程序设计期末考试习题(含答案)
链接地址:https://www.777doc.com/doc-1823775 .html