1、2022年C语言程序设计期末考试题两份附答案c语言程序设计期末试题(含答案)一、单项选择题(选择一个最佳答案,每题2分,共20分)1. 一个C程序的执行是从( A )。 A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束2. 下列选项中,不能用作标识符的是(D)。/以字母或下划线开头A) _1234_ B) _1_2 C) int_2_ D) 2_int_3. 以下定义语句中正确的是(C)。A) char a=A
2、b=B;B) float a=b=10.0; /a=10.0,b=10.0;C) int a=10,*b=&a;D) float *a,b=&a; /b是一个数,不能把地址赋值给它。4. 设有以下定义:#define d 2int a=0; double b=1.25; char c=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. 有以下定义语句 double a,b; int w; lon
3、g c;若各变量已正确赋值,则下列选项中正确的表达式是( C)。A) a=a+b=b+ B) w%(int)a+b) C) (c+w)%(int)a D) w=a=b; /A.赋值号左边只能是变量,不能是表达式B,取模运算的数据只能是整型,a强制转换成整型,但b为实型,整型加实型为实型D,int型变量在内存中占的空间比double型少,所以不能把a,b的值赋给w7. 设有定义:int n=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是(D )。A) p=1; B) *q=2; /*q是一个指针 C) q=p; D) *p=5;8. 设有定义:int a,*pa=&a; 以下scan
4、f语句中能正确为变量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”;则表达式*language1*language2比较的是(A)。A)字符B和字符P B) 字符串FORTRAN和字符串BASICC)字符F和字符B D) 字符串BASIC和字符串PASCAL10. 执行语句for(i=1;i+b) ? max=a : max=b ;6. 若x为
5、int型变量,则执行x=7; x=x=xx; 语句后,x的值是 -14 。二、读程序写结果(每题6分,共24分)1. 有以下程序int f(int a) int b=0;static c=3;b=b+1;c=c+1;return(a+b+c); void main() int a=2,i; for(i=0;i3;i+) printf(“%2d”,f(a);执行后输出的结果是 。2. 有以下程序void f(int y,int *x) y=y+*x; *x=*x+y;void main( ) int x=2,y=4; f(y,&x); printf(“x=%d,y=%dn”,x,y);执行后输出
6、的结果是 。3. 有以下程序#define LETTER 1 #include void main() char str20=C Language, c; int i=0; while(c=stri)!=0) i+; #ifdef LETTER if(c=a &c=B&c=Z) c=c-1; else if(c=A) c=c+25;#endif printf(%c,c); 执行后输出的结果是 。4. 有以下程序 void fun(int *a,int i,int j) int t; if(ij) t=ai;ai=aj;aj=t;i+; j-;for(i=0;i4;i+) printf(%2d,
7、ai);fun(a,i,j); void main() int x=2,6,1,8,i; fun(x,0,3); for(i=0;i4;i+) printf(%2d,xi);printf(n);执行后输出的结果是 。四、程序填空(每空1分,共8分)下面程序的功能是:计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。#include 【1】 int sumhw( char *p,int n);char jughw(char *str);void main(int argc,char *argv) int
8、 s; if (argc2) printf(请输入有效参数); else s=sumhw( 【2】 ,argc-1); printf(共有%d个回文串n,s); int sumhw(char *p,int n) char flag; int i,sum=0; for(i=0;ib) max=a max=b6、14三、读程序写结果(每题6分,共24分)1、 7 8 9 2、 x=8,y=4 3、 C Lbohvbhf 4、 8 6 1 2 8 6 1 2 四、程序填空(每空1分,共8分)【1】#include【2】argv+1【3】*(p+i)【4】flag= =Y【5】str+n-1【6】p1
9、p2【7】p2【8】p1p2五、编程题(共30分)1. (1)数组法(9分)#include #include #define N 20void inv(char str,int n);void main()char strN; gets(str); inv(str,strlen(str); puts(str);void inv(char str,int n)int i,j,temp; for(i=0,j=n-1;i=j;i+,j-) temp=stri; stri=strj; strj=temp;(2)指针法(9分)#include #include #define N 20void inv
10、(char *str,int n);void main()char strN; gets(str); inv(str,strlen(str); puts(str);void inv(char *str,int n)char *i,*j,temp; for(i=str,j=str+n-1;i=j;i+,j-) temp=*i; *i=*j; *j=temp;2.(12分)#include int m;void del_element(int num,int n);void main()int num10; int i,n; m=10; for(i=0;i10;i+) scanf(%d,&numi
11、); printf(please input nn); scanf(%d,&n); del_element(num,n); for(i=0;im;i+) printf(%d ,numi);void del_element(int num,int n)int i,j; for(i=0;im;i+) if(numi=n) for(j=i+1;jm;j+) numj-1=numj; m-; i-; 2018年C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是 ( )A、 C语言简洁、紧凑B、 能够编制出功能复杂的程序C、 C语言可以直
12、接对硬件进行操作D、 C语言移植性好2、以下不正确的C语言标识符是 ( )A、 ABC B、 abc C、 a_bc D、 ab.c3、一个C语言程序是由 ( )A、 一个主程序和若干子程序组成B、 函数组成C、 若干过程组成D、 若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是 ( )A、 有零个或多个输入B、 有零个或多个输出C、 有穷性D、 可行性5、 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为 ( )A、 int B、 float C、 double D、 不确定6、在C语言中,char型数据在内存中的存储形式是
13、 ( )A、 补码 B、反码 C、源码 D、ASCII码7、有如下程序,输入数据:12345M678cR后(表示回车),x的值是 ( ) 。#includemain()int x;float y;scanf(%3d%f,&x,&y);A、 12345 B、 123 C、 45 D、 3458、若有以下定义int a,b; float x,则正确的赋值语句是 ( )A、 a=1,b=2B、 b+;C、 a=b=5D、 b=int(x);9、以下程序的执行结果是 ( )#includeint i=10,j=10;printf(%d,%dn,+i,j-);A、 11,10 B、 9,10 C、 11
14、,9 D、 10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是 ( )#includemain()char c1=A,c2=Y;printf(%d,%dn,c1,c2);A、 A,Y B、 65,65 C、 65,90 D、 65,8911、下列运算符中优先级最高的是 ( )A、 B、 十 C、 % D、 !12、设x、y和z是int型变量,且x3,y4,z5,则下面表达式中值为0是 ( ) 。A、 x&yB、 xyC、 xy+z&y-zD、 !(xy)!z 1)13、判断char型变量cl是否为小写字母的正确表达式为 ( )A、 ac1fz B、 (c1a)&(c1z)C、
15、 (a=c1) (zc1) D、 (c1a)&(c1z)14、字符串a在内存中占据的字节个数为 ( )A、 0 B、 1 C、 2 D、 315、下面有关for循环的正确描述是( )A、 for循环只能用于循环次数已经确定的情况B、 for循环是先执行循环体语句,后判定表达式C、 在for循环中,不能用break语句跳出循环体D、 for循环体语句中,可以包含多条语句,但要用花括号括起来16、下面程序的运行结果是( )#includemain()int num=0;while(numb!= c的值是 _4、下列程序运行后的输出结果是 _#includemain()int i,j;for(i=4
16、;i=1;i-)printf(*);for(j=1;j=4-i;j+)printf(*);printf(n);5、若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是_ a21得到的初值是 _6、在C语言中,二维数组元素的内存中的存放顺序是_三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果)1、#includemain( )int a,s,n,count;a=2;s=0;n=1;count=1;while(count=7) n=n*a; s=s+n; +count;printf(“s=%d”,s);2、#includemain()
17、int a=33=1,3,5,7,9,11,13,15,17,sum=0,i,j;for (i=0;i3;i+)for(j=0;j3;j+)if (i=j) sum=sum+aj;printf(“sum=%dn”,sum);四、编程题(本大题共4题,每题8分,共32分)1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)9/5 。2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。3、判断数m是否为素数(只能被1和它本身整除的整数)?4、对15个数进行排序,按从小到大的顺序输出。
18、C语言程序设计期末考试试卷(A卷)评分标准及标准答案一、单项选择题(本大题共20题,每题2 分,共40分)1、 B 2、 D 3、 B 4、 B 5、 C6、 D 7、 B 8、 B 9、 A 10、D11、C 12、D 13、D 14、C 15、D16、C 17、C 18、D 19、C 20、B二、填空题(本大题共10空,每空2分,共20分)1、 顺序结构 分支结构 循环结构2、 单精度型(或:float型) 双精度型(或;double型3、 14、 * * * * * * *5、 0 66、 按行主顺序存放三、程序分析题(本大题共2题,每题4分,共8分)能正确表达出题目的含义、要求,即可得
19、分,部分正确可按比例得分,否则不得分。1、功能:求S=0+2+4+8+16+32+64+128 和。输出结果:s=2542、功能:出矩形阵a的主对角线上的元素之和。输出结果:27四、编程题(本大题共4题,每题8分,共32分)能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全相同。部分正确可按比例得分,否则不得分。1、 #includemain() float c,f;printf(input c:); .2分scanf(%f,&c); .2分f= (c+32.0)*9.0/5.0; .2分printf(F=%.2f n,f); .2分2、#includemain()int x
20、;scanf(%d,&x); .2分if(x%5=0&x%7=0) .2分printf(yes);.2分elseprintf(no);.2分3、 # include# includemain()int m,i,k;scanf(%dn,&m);k=sqrt(m); .2分for(i=2;ik)printf(m is a prime number!n);.2分4、 # includemain()int i,j,a15,t;printf(input 15 numbers:n);for(i=0;i15;i+)scanf(%d,&a); .2分for(j=0;j15;j+).2分for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t; .2分for(i=0;i15;i+)printf(%6d,a)