1、一、单项选择题(每小题2分,共30分)1. 下列关于C语言用户标识符的叙述中正确的是( B )(A)用户标识符中可以出现在下划线和中划线(减号)(B)用户标识符中不可以出现中划线,但可以出现下划线(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头(D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头2. 在C语言中,合法的字符常量是( A )(A)087 (B)x43 (C)abe (D)”0”3. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )(A) INPUT x、y、z; B)scanf(“%d%d%d”,&x,&y
2、,(C) scanf(“%d%d%d”,x,y,z); (D)(scanf(“%d%d%d”,&x,y,&z);4. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式ab?a:cb) | (n=cd)) 后n的值为 ( B )(A) 0 (B) 1 (C) 2 (D) 36. 若a为int类型,且其值为3,则执行完a*=a+=a*a;后,a的值是 ( D )(A) 3 (B) 9 (C) 12 (D) 1447. 设int a=12,b=8;则a/b的结果为:( B )(A) 1.5 (B) 1 (C) 3/2 (D) 28. 若定义:int a=511,*b=&a; 则pr
3、intf(%dn,*b);的输出结果为(D)(A) 无确定值 (B) a的地址 (C) 512 (D) 5119. 在C语言中,引用数组元素时,其数组下标的数据类型允许是 ( C )(A) 整型常量 (B) 整型表达式(C ) 整型常量或整型表达式 (D) 任何类型的表达式10. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B )(A) 地址传递 (B) 单向值传递(C) 由实参传给形参,再由形参传回实参 (D) 传递方式由用户指定11. 数字字符0的ASCII值为48,若有以下程序main( ) chara=1,b=2;printf(%c,b+);printf(%d
4、n,b-a);程序运行后的输出结果是( A )(A)3,2 (B) 50,2(C)2,2(D)2,5012. 以下函数值的类型是( D )fun ( float x ) float y;y= 3*x-4;return y;(A) int (B) 不确定 (C) void (D) float13. 以下能正确定义一维数组的选项是( B )(A) inta5=0,1,2,3,4,5; (B)inta=0,1,2,3,4,5;(C) char a=A,B,C; (D)inta5=0123;14. 有以下程序,结果为: ( D ) main( ) int a5=1,2,3,4,5; int *pa=&
5、a1; printf(“%d”,pa2);(A) 3 (B) 4 (C) 5 (D) 215. 假设struct student int num; float score; stu1;则下列赋值语句中正确的是( C )(A) student.score=85; (B) student=1001,95;(C) stu1.num=1001; (D) stu1-num=1001;二、判断题(对的打“”,错的打“”,每小题1分,共10分)1. 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。2. C语言中,若函数定义未给出返回值类型,系统默认为返回值类型为int类型。3. 全局变量的作用
6、域一定比局部变量的作用域范围大。4. 对字符串”c program”进行完整赋值的操作是: char str9=”c program” ;5. 在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。6. 若有定义int a45;排列在数组中的第11个元素是a31。7. 存储字符串”acd1376”需要的字节数为7个。8. 存储字符数组中的最后一个字符必须是0。9. 在一个函数内定义的变量只能在本函数范围内有效。10.设int m=7; float n=3.5;执行m-=m-!n后, m的值是1。三、写出下列程序段的输出结果(每小题5分,共20分)1. 有下列程序段,请写出运行
7、结果。#include main( ) int i=0,a=0;while(i20) for(;) if (i%10)=0) break;else i-;i+=11; a+=i;printf(a=%dn,a);2. 有下列程序段,请写出运行结果。 int f1(int x) static int z=3;int y=0; y+; z+; return(x+y+z);main( ) int a=1,k; for(k=0;k3;k+) printf(“%3d”,f1(a);程序运行后的输出结果是:3. 有下列程序段,请写出运行结果。main( ) char k; int i; for(i=1;i3
8、;i+) scanf(“%c”,&k); switch(k) case 0: printf(“anothern”); case 1: printf(“numbern” ); 程序运行时,从键盘输入:01,程序执行后的输出结果是:4.有下列程序段,请写出运行结果。void swap(intx,int y)intt; t=x;x=y;y=t; printf(%d %dn,x,y);main( )inta=3,b=4;swap(a,b);printf(%d,%dn,a,b);程序运行后的输出结果是:四、程序填空题(每空2分,共20分)1.输入整数a和b,若a*a+b*b100,则输出a*a+b*b的
9、结果,否则输出a+b的结果。 main( ) int a,b,x,y; scanf(“%d,%d”,_ _); x=a*a+b*b; if (_) y=x; printf(“n a*a+b*b100,%d”,y); else printf(“n a*a+b*b=100 %d”,_ _);2.从键盘输入10个整数,统计其中整数,零和负数的个数并输出。 main( ) int a10,i,s1,s2,s3;s1=s2=s3=0;for(i=0;i10;i+) scanf(“%d”,_ _); for(i=0;i0) s1+; else if (ai= 0)s2+; else _;printf(“n
10、pos=%3d,zer0=%3d,neg=%3d”,s1,s2,s3);3. 将输入的十进制正整数n转换为二进制数,并将转换结果输出,转换方法采用”除二取余”法。 void transfer(int m) int s20,i; for (i=0;m!=0;i+) si=_ _; m=m/2; for(;i!=0;i-) printf(“%d”,_ _);main( ) int n; scanf(“%d”,&n); _ ;4. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。int mystrlen(char str ) int i;for(i=0; !=0;i+);r
11、eturn();五、编程题(20分)1. 有数列sum=1!+2!+3!+4!+5!+6!+,编程实现:(1)编写一个函数,求sum的前n项和,例如: n=3时,sum=1+2+6=9。(2)在主函数中输入n,调用上面的函数并输出结果。2从键盘输入十个整数存入数组a中,并编程实现:(1)将最大值存入max中,将最小值存入min中,并输出它们的值。(2)将数组a按从小到大排序,并输出排序后数组的值。 xxxx期末考试试卷( B 卷)2005学年第1学期 考试科目:程序设计一、单项选择题(每小题2分,共30分)1B2B3B4A5D6D7B8D9C10B11C12A13B14B15C二、判断题(对的
12、打“”,错的打“”,每小题1分,共10分)12345678910三、写出下列程序段的输出结果(每小题5分,共20分)1、 a = 32 评分细则:直接写32,给4分2、 6 7 8 评分细则:写对一个数给1分,三个全对给5分。3、 another mumber mumber评分细则: 写在一起,没换行扣14、 4 3 3 ,4 评分细则:写对一行,扣3分四、程序填空题(每空2分,共20分)1、 &a, &b x100或a*a+b*b100 2、 a+b &ai s3+ 3、 m%2 si-1 transfer(n) 4、 stri i 五、编程题(20分)1、 10分main() int su
13、mall(int a); int n,sum; printf(Please input n:); scanf(%d,&n); sum=sumall(n); printf(The result is:%d,sum);int sumall(int a) int i,s1=1,sum=0; for(i=1;i=a;i+) s1=s1*i; sum=sum+s1; return(sum); 评分细则:第一问5分,第二问5分; 如程序都正确但没有使用函数形式则扣2分。2、 10分main() int a10,i,j,max,min,t; printf(please input 10 number:);
14、for (i=0;i10;i+) scanf(%d,&ai); max=min=a0; for (i=1;i10;i+) if (maxai) min=ai; printf(nmin=%d,max=%dn,min,max); for (j=0;j9;j+) for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; printf (the sorted result:); for (i=0;i10;i+) printf(“%d”,ai);三. 编程题 1编程计算 2+4+6+8+96+98+100 的值 void main ( ) int i, sum=0; for (i=0 ;
15、i100 ;i+=2) sum+=i; printf(“sum=%dn“ , sum); 都行,只要完成功能就可以。 注:用 while、do-while 或 goto 都行,只要完成功能就可以。 、2从键盘输入 10 个数,编程实现将其中最大的数与最小的数位置对换后,再输出调整后的数组。 个数,编程实现将其中最大的数与最小的数位置对换后,再输出调整后的数组。 void main ( ) int a10 , max=0 ,min=0 , i, t; for (i=0 ; i10 ;i+) scanf (“%d”, &ai); for(i=0 ; i10 ;i+) if ( amax ai) m
16、in =i ; t = amin; amin = amax; amax = t; for (i=0 ; i 10 ;i+) printf(“%d “ , ai); 8 四、写出程序运行的输出结果(20分)1. main() int a=6,b=4; a = a+b; b = ab; a = a-b; printf(“a=%d, b=%d”, a, b); 答案:a=4,b=62. main() int m,n; for (m=5;m=10;m+) for (n=2;n=m-1;n+) if (m%n=0) printf(“%dt”,m); 考察学生对循环结构嵌套、循环终止条件并非固定常数等知识
17、的理解答案:6 6 8 8 9 10 103main() int a10=1,2,3,4,5,6,7,8,9,10; int i;for (i=2;i=8;i+) ai=a10-i; a10-i=ai;for (i=1;i=9;i+)printf(“%d ”,ai); 考察学生对数组在内存中的存放、下标、变量值对调等知识的理解答案:2 9 8 7 6 7 8 9 104. int func(int b) int a; a=b+100; return (a);main() int a,b;a=1;b=func(a); printf(“a=%d,b=%d ”, a,b);考察学生对“局部变量”的理
18、解。答案:a=1,b=101五、编程(20分)1、 输入一个字符串(字符数不超过20),按照如下要求生成一个新的字符串:1) 新生成的字符串只包含原字符串的英文字母;2) 将原字符串的所有小写字母转换成大写字母;最后输出新生成的字符串内容。答案:#include string.hmain()char s121;char s221;int i,n=0;printf(inpurt a string:);gets(s1);for (i=0; i=a & s1i=A & s1i=Z) | s1i= 0)s2n+ = s1i;strupr(s2);printf(s1=%sn, s1);printf(s2
19、=%sn, s2);2、有一个4X4的整数型二维数组所组成的矩阵,完成如下功能:1)编写一个函数maxelement(),函数参数是该二维数组名,函数值是该数组所有元素中的最大值。2)完成主函数,先从键盘输入该数组的数值,然后调用上述函数求出该数组所有元素的最大值,最后在主函数输出结果。答案:int maxelement(int arr4)int i,t;int max;max = arr00;for(i=0;i4;i+)for(t=0;t4;t+) if(maxarrit) max = arrit; return max;main()int array44;int i,t;for(i=0;i
20、4;i+)for(t=0;t4;t+)scanf(%d,&arrayit);printf(max=%dn, maxelement(array);1. 一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是 ( ) A、 C语言简洁、紧凑B、 能够编制出功能复杂的程序C、 C语言可以直接对硬件进行操作D、 C语言移植性好2、以下不正确的C语言标识符是 ( ) A、 ABC B、 abc C、 a_bc D、 ab.c3、一个C语言程序是由 ( ) A、 一个主程序和若干子程序组成B、 函数组成C、 若干过程组成D、 若干子程序组成4、一个算法应该具有“确定性”等5个特
21、性,对另外4个特性的描述中错误的是 ( ) A、 有零个或多个输入B、 有零个或多个输出C、 有穷性 D、 可行性5、 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为 ( ) A、 int B、 float C、 double D、 不确定6、在C语言中,char型数据在内存中的存储形式是 ( ) A、 补码 B、反码 C、源码 D、ASCII码7、有如下程序,输入数据:12345M678cR后(表示回车),x的值是 ( ) 。#includemain()int x;float y;scanf(%3d%f,&x,&y);A、 12345 B、 123 C、 45
22、 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,9 D、 10,910、巳知字母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、下列运算符中
23、优先级最高的是 ( ) 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、 (a=c1) (zc1) D、 (c1a)&(c1z)14、字符串a在内存中占据的字节个数为 ( ) A、 0 B、 1 C、 2 D、 315、下面有关for循环的正确描述是( ) A、 for循环只能用于循环次数已经确定的情况B、 for循环是先执行循环体语句,
24、后判定表达式C、 在for循环中,不能用break语句跳出循环体D、 for循环体语句中,可以包含多条语句,但要用花括号括起来16、下面程序的运行结果是( ) #includemain()int num=0;while(numb!= c的值是 _ 4、下列程序运行后的输出结果是 _ #includemain()int i,j;for(i=4;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语言中,二维数组元
25、素的内存中的存放顺序是_ 三、程序分析题(本大题共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()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题,
26、每题8分,共32分) 1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)9/5 。2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。3、判断数m是否为素数(只能被1和它本身整除的整数)?4、对15个数进行排序,按从小到大的顺序输出。C语言程序设计期末考试试卷(A卷)评分标准及标准答案一、单项选择题(本大题共20题,每题2 分,共40分)1、 B 2、 D 3、 B 4、 B 5、 C 6、 D 7、 B 8、 B 9、 A 10、D11、C 12、D 13、D 14、C 15
27、、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分)能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。 1、功能:求S=0+2+4+8+16+32+64+128 和。 输出结果:s=2542、功能:出矩形阵a的主对角线上的元素之和。输出结果:27四、编程题(本大题共4题,每题8分,共32分)能正确表达出题目的
28、含义、要求,且格式正确,即可得满分,不要求形式完全相同。部分正确可按比例得分,否则不得分。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;scanf(%d,&x); .2分if(x%5=0&x%7=0) .2分printf(yes);.2分elseprintf(no);.2分3、 # include # include main()int m,i,k;scanf(%dn,&m);k=sqrt(m); .2分for(i=2;ik)printf(m is a prime number!n);.2分4、 # include main()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=a;a=ai+1;ai+1=t; .2分for(i=0;i15;i+)printf(%6d,a);14