C程序设计期末考试习题含答案.docx
- 文档编号:3664855
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:79
- 大小:53.92KB
C程序设计期末考试习题含答案.docx
《C程序设计期末考试习题含答案.docx》由会员分享,可在线阅读,更多相关《C程序设计期末考试习题含答案.docx(79页珍藏版)》请在冰豆网上搜索。
C程序设计期末考试习题含答案
c语言程序设计期末试题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. 设有以下定义:
#defined2
inta=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(a>0);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读入数据的是()。
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)字符B和字符PB)字符串FORTRAN和字符串BASIC
C)字符F和字符BD)字符串BASIC和字符串PASCAL
10. 执行语句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;i<3;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
#include
voidmain()
{charstr[20]="CLanguage",c;
inti=0;
while((c=str[i])!
='\0')
{i++;
#ifdefLETTER
if(c>='a'&&c<'z')
c=c+1;
elseif(c=='z')c=c-25;
#else
if(c>='B'&&c<='Z')
c=c-1;
elseif(c=='A')c=c+25;
#endif
printf("%c",c);}}
执行后输出的结果是。
4. 有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i {t=a[i];a[i]=a[j];a[j]=t; i++;j--; for(i=0;i<4;i++)printf("%2d",a[i]); fun(a,i,j); } } voidmain() {intx[]={2,6,1,8},i; fun(x,0,3); for(i=0;i<4;i++)printf("%2d",x[i]); printf("\n"); } 执行后输出的结果是。 四、程序填空(每空1分,共8分) 下面程序的功能是: 计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。 (顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。 #include 【1】 intsumhw(char**p,intn); charjughw(char*str); voidmain(intargc,char*argv[]) {ints; if(argc<2)printf("请输入有效参数"); else {s=sumhw(【2】,argc-1); printf("共有%d个回文串\n",s); } } intsumhw(char**p,intn) {charflag; inti,sum=0; for(i=0;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、A 2、D 3、C 4、B 5、D 6、C 7、D 8、A 9、A 10、C 二、填空题(每空2分,共18分) 1、 2、9 3、12 4、28 5、(a>b)max=amax=b 6、-14 三、读程序写结果(每题6分,共24分) 1、789 2、x=8,y=4 3、CLbohvbhf 4、86128612 四、程序填空(每空1分,共8分) 【1】#include 【2】argv+1 【3】*(p+i) 【4】flag==’Y’ 【5】str+n-1 【6】p1 【7】p2-- 【8】p1 五、编程题(共30分) 1. (1)数组法(9分) #include #include #defineN20 voidinv(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分) #include #include #defineN20 voidinv(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分) #include intm; voiddel_element(intnum[],intn); voidmain() {intnum[10]; inti,n; m=10; for(i=0;i<10;i++) scanf("%d",&num[i]); printf("pleaseinputn\n"); scanf("%d",&n); del_element(num,n); for(i=0;i printf("%d",num[i]); } voiddel_element(intnum[],intn) {inti,j; for(i=0;i if(num[i]==n) { for(j=i+1;j num[j-1]=num[j]; m--; i--; } } c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1.以下4组用户定义标识符中,全部合法的一组是() A)_totalclu_1sum B)if-maxturb C)txtREAL3COM D)intk_2_001 2.以下程序的输出结果是() #include main() { inta=1,b=2,c=3; printf(“%d”,c>b>a); } A)2B)1C)0D)3 3.以下正确的叙述是() A)在C语言中,main函数必须位于文件的开头 B)C语言每行中只能写一条语句 C)C语言本身没有输入、输出语句 D)对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义: inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是() A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, intc1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是() A)0B)0.5C)1D)2 6.能正确表示逻辑关系: “a≥=10或a≤0”的C语言表达式是() A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0 7.执行下面的程序时,将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,34 main() { intk=0; while(k=1)k++; } 则while循环执行的次数是() A)无限次B)有语法错,不能执行 C)一次也不执行D)执行1次 9.以下程序的输出结果是() #include main() { inta=5,b=4,c=6,d; printf(“%d”,d=a>b? (a>c? 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]="ABCDE" 二、填空题(每空2分,共32分) 1.结构化程序设计中的三种基本结构是[1]、[2]、[3]。 [4]。 [5]或[6]。 [7]。 达式7/2的结果是[8]。 表达式7%2的结果是[9]。 6.定义一个整型数组a[10],则下标最大的数组元素为[10]。 7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有[11]。 [12]命令用来实现“文件包含”的操作。 9.已知: charc[]={“china”};将字符数组c中整个字符串一次输出的语句书写格式为[13]。 10.表达式4>3&&7<5-! 0的值为[14]。 11.按照变量在函数中作用域不同,可以将变量分为[15]和[16]。 三、计算题(要求写出步骤)(每题4分,共8分) 1.设inta=12,求出表达式a+=a-=a*a运算后a的值. 求算术表达式(float)(b-a)/2+(int)x%(int)y的值 四、读下列程序,写出程序的运行结果(4×3=12) 1.已知字符A的ACSII码值为65,写出以下语句的输出结果 main() { charch=‘A’; printf("%c,%d",ch,ch+3); } 2.main() { inta=10; printf(“%d”,++a); printf(“%d”,a--); } 3.main() {intt=1; for(i=1;i<5;i++) t=t*i; printf("%d",t); } 4.f(int*a,intb) {b=b+*a;*a=*a+b;} main() { intx=2,y=4; int*p; p=&x; f(p,y); printf("%d,%d",x,y); } 五、程序填空(每空2分,共14分) 1.下列程序段以函数swap()调用的形式实现两个变量值的互换,请填空完善程序。 swap(int*m,int*n) {inttemp; temp=[1]; [2]; *n=[3]; } main() {intx,y; scanf(“%d,%d”,&x,&y); swap([4]); printf(%d,%d”,x,y); } 2.下面程序是计算1-3+5-7+……-99+101的值,请填空完善程序。 main() { inti,m,t=1,s=0; for(i=1;i<=101;[5]) {[6];s=s+m;[7];} printf(“%d\n”,s); } 六、编程题: (共24分) 1.编程求1! +2! +3! +……+50! 的值。 (6分) 2.用函数的递归调用方法求下列函数式的值(要求n由用户输入),递归公式为: (8分) 1(n=1) total(n)= total(n-1)+n+1(n>1) 3.编写程序输出下列形式的杨辉三角形的前10行。 (10分) 1 11 121 1331 14641 …… C语言模拟试卷二答案及评分标准 一、单项选择题(每小题1分) 1. A2.C3.D4.A5.B6.D7.D8.A9.C10.D 二、填空题(每空2分) 1. 顺序结构、选择结构、循环结构。 2. 函数 3. 字母、下划线 4. 或 5. 3、1 6. a[9] 7. 使递归结束的条件 8. #include 9. printf(“%s”,c) 10. 0 11. 全局变量、局部变量 三、计算题(要求写出步骤)(每题4分) 1. a-=a*aa=a-a*aa=12-144=-132 a+=-132a=a+(-132)a=-132-132=-264 2. 四、读下列程序,写出程序的运行结果(每题3分) 1. 1. A,68 2. 2. 11 11 3. 3. 24 4. 4. 8,4 五、程序填空: (每空2分) 1.*m2.*m=*n3.temp4.x,y5.i=i+26.m=i*t7.t=-t 六、编程题 1. main() { inti; floatt=1,s=0; for(i=1;i<=50;i++) { t=t*i; s=s+t; } printf("s=%e\n",s); } 2. total(intn) {intc; if(n==1)c=1; elsec=total(n-1)+n+1; return(c); } main() {intn; scanf(“%d”,n); printf(“%d”,total(n)); } 3. main() { inta[10][10],i,j; for(i=0;i<10;i++) {for(j=0;j<=i;j++) {if((j==0)||(i==j))a[i][j]=1; elsea[i][j]=a[i-1][j-1]+a[i-1][j]; printf("%d",a[i][j]); } printf("\n"); } } 选择练习题 1、C语言中最简单的数据类型包括(B)。 A、整型,实型,逻辑型B、整型,实型,字符型 C、整型,字符型,逻辑型D、整型,实型,逻辑型,字符型 2、C语言中,运算对象必须是整型数的运算符是(A)。 A、%B、/C、%和/D、* 3、为表示关系x<y<z,应使用C语言表达式(A)。 A、(x<y)&&(y<z)B、(x<y)AND(y<z) C、(x<y<z)D、(x<y)&(y<z) 4、C语言程序的基本单位是(C)。 A、程序行B、语句C、函数D、字符 5、C语言的程序一行写不下时,可以(D)。 A、用逗号换行B、用分号换行 C、用回车符换行D、在任意一空格处换行 标识符由字母,数字和下划线组成且第一个字符必须为字母或下划线 6、下述标识符中,(C)是合法的用户标识符。 A、A&BB、voidC、_studentD、ab* 7、在C语言中,字符型数据在内存中以(B)形式存放。 A、补码B、ASCII码C、反码D、原码 8、一个程序由若干文件组成,共用同一变量,则此变量的存储类别应该为(B)。 auto自动变量 register寄存器变量 extern外部变量 static静态变量 A、autoB、externC、staticD、Register 9、以下关于switch语句和break语句的描述中,只有(B)是正确的。 A、在switch语句中必须使用break语句 B、在switch语句中,可以根据需要使用或不使用break语句 C、break语句只能用于switch语句中 D、break语句是switch语句的一部分 10、C语言规定: 调用一个函数时,实参变量和形参变量之间的数据传递是(B)。 A、地址传递B、值传递 C、由实参传给形参,并由形参传回给实参D、由用户指定传递方式 11、下述C语言转义符中(D)是非法的。 A、'\b'B、'\037'C、'\0xf'D、'\'' 12、为了要计算s=10! (10的阶乘),则以下对s的定义正确的是(D)。 A、intsB、unsignedsC、shortsD、longs 13、判断变量ch中的字符是否为大写字母,最简单的正确表达式是(A)。 A、ch>='A'&&ch<='z'B、A<=ch<=Z C、'A'<=ch<='z'D、ch>=A&&ch<=z 14、在C语言中,能表示无符号长整型常数的是(D)。 A、OLB、4962710UC、912374uD、2UL 15、能正确表示C语言的字符常量的是(C)。 A、'\0x41'B、''A''C、'\0'D、''\0'' 16、C语言中逻辑表达式的值为(A)。 A、0或1B、非零值或零值C、true或falseD、'true'或'false' 17、C语言提供的基本数据类型关键字是(C)。 A、integerB、FLOATC、unsignedD、Double 18、若定义语句: intb[]={1,2,3,4,5},*P=b;则表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 期末考试 习题 答案