您好,欢迎访问三七文档
当前位置:首页 > 资格认证/考试 > 自考 > 2022年C语言程序设计期末考试题两份附答案【Word版资料】
2022年C语言程序设计期末考试题两份附答案c语言程序设计期末试题(含答案)一、单项选择题(选择一个最佳答案,每题2分,共20分)1.一个C程序的执行是从(A)。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.下列选项中,不能用作标识符的是(D)。//以字母或下划线开头A)_1234_B)_1_2C)int_2_D)2_int_3.以下定义语句中正确的是(C)。A)chara='A'b='B';B)floata=b=10.0;//a=10.0,b=10.0;C)inta=10,*b=&a;D)float*a,b=&a;//b是一个数,不能把地址赋值给它。4.设有以下定义:#defined2inta=0;doubleb=1.25;charc=’A’;则下面语句中错误的是(D)。A)a++;B)b++C)c++;D)d++;5.以下4个选项中,不能作为一条C语句的是(D)。A){;}B)a=0,b=0,c=0;C)if(a0);D)if(b==0)m=1;n=2;//两条语句6.有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是(C)。A)a=a+b=b++B)w%(int)a+b)C)(c+w)%(int)aD)w=a==b;//A.赋值号左边只能是变量,不能是表达式B,取模运算的数据只能是整型,a强制转换成整型,但b为实型,整型加实型为实型D,int型变量在内存中占的空间比double型少,所以不能把a,b的值赋给w7.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。A)p=1;B)*q=2;//*q是一个指针C)q=p;D)*p=5;8.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(A)。A)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)。A)字符B和字符PB)字符串FORTRAN和字符串BASICC)字符F和字符BD)字符串BASIC和字符串PASCAL10.执行语句for(i=1;i++4;);后变量i的值是(C)//先判断再增,i=4时不满足,但i还得增1A)3B)4C)5D)不定一、填空题(每空2分,共18分)1.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为2.500000。2.有程序段:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];则b中的值是9。3.函数swap(intx,inty)实现对x和y值的交换。则执行语句{inta[2]={1,2};swap(a[0],a[1]);}后,a[0]=1,a[1]=2。4.设有以下宏定义:#definef(z)z*z,执行赋值语句k=f(4+4)/f(2+2);(k为int型变量)后,k的值是28。//k=4+4*4+4/2+2*2+2=4+16+2+4+2=28/*#defineS(a,b)a*barea=S(3,2);第一步被换为area=a*b;,第二步被换为area=3*2;#defineS(r)r*rarea=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;正确的宏定义是#defineS(r)(r)*(r)*/5.书写语句求a,b两个数的最大值max。(ab)?max=a:max=b;6.若x为int型变量,则执行x=7;x+=x-=x+x;语句后,x的值是-14。二、读程序写结果(每题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));}执行后输出的结果是。2.有以下程序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--;for(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;}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、-14三、读程序写结果(每题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;}}(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){inti,j;for(i=0;im;i++)if(num[i]==n){for(j=i+1;jm;j++)num[j-1]=num[j];m--;i--;}}2018年C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2分,共40分)1、以下不是C语言的特点的是()A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是()A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由()A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是()A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为()A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是()A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(CR表示回车),x的值是()。#includestdio.hmain(){intx;floaty;scanf(%3d%f,&x,&y);}A、12345B、123C、45D、3458、若有以下定义inta,b;floatx,则正确的赋值语句是()A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是()#includestdio.h{inti=10,j=10;printf(%d,%d\n,++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是()#includestdio.hmain(){charc1='A',c2='Y';printf(%d,%d\n,c1,c2);A、A,Y
本文标题:2022年C语言程序设计期末考试题两份附答案【Word版资料】
链接地址:https://www.777doc.com/doc-11707755 .html