《2009年C语言期末考试题(A卷)及答案(共12页).doc》由会员分享,可在线阅读,更多相关《2009年C语言期末考试题(A卷)及答案(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上北京航空航天大学20082009 学年 第二学期期末C语言程序设计考 试 A 卷班 级_学 号 _姓 名_成 绩 _2009年6月1日专心-专注-专业班号 学号 姓名 成绩 C语言程序设计期末考试卷注意事项:1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分! 2、考试时间120分钟一、单项选择题(每小题2分,共40分)1. 下面叙述错误的是:( )A)C程序中,各种括号应成对出现B)C程序中,赋值号的左边不可以是表达式C)C程序中,变量名的大小写是有区别的D)C程序中,若未给变量赋初值,则变量的初值自动为02. 已有如下定义和输入语句,若要求a1, a2, c
2、1, c2的值分别为10, 20, A和B,当从第一列开始输入数据时,正确的数据输入方式是( )。(注:_ 表示空格) int al,a2,char c1,c2; scanf(%d%c%d%c,&a1,&c1,&a2,&c2);A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B3. 有以下程序:main( ) int m; m=10; printf(“%dn”,(-m*3/5);程序运行后的输出结果是:( )A)6 B)5 C)4 D)74. 设a=5,b=6,c=8,d=7,x=2,y=2,执行(x=ab)|(y=cd)后y的值是:( )A)1 B)2
3、 C)0 D)85. 设a、b、c都是int型变量,且a=7,b=8,c=9,则以下表达式中值为0的是:( )A)a&b|(b=c) B)a=b C)a&b|c D)!a|b&!c6. 设有定义:int *pl,*p2;,则以下选项中,正确的赋值语句是:( )A)p=1;B)*q=2;C)q=p;D)*p=5;7. 以下符合C语言语法的实型常量是( )A)1.2E0.5 B)3.14159E C).5E-3 D)E158. 设有以下程序段:int a=5;while (a=0) a-;则下面描述正确的是:( )A)执行5次循环体语句B)本循环是死循环 C)一次也不执行循环体语句 D)执行一次循
4、环体语句9. 若以下选项中的变量已正确定义,则正确的赋值语句是( )A)x1=26.8%3 B)1+2=x2 C)x3=0x12 D)x4=1+2=3;10. 设有以下定义int a=0; double b=1.25;char c=A;#define d 2则下面语句中错误的是( )A)a+; B)b+ C)c+; D)d+;11. 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( )A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)12. 有以下程序main( ) char k; int i;
5、 for(i=1;i3;i+) scanf(“%c”,&k); switch(k) case 0: printf(“anothern”); case 1: printf(“numbern”); 程序运行时,从键盘输入:01,程序执行后的输出结果是( )A) another B)another C)another D)number number number number number another number 13. 在调用fopen函数时,不需要的信息是( )A)需要打开的文件名称 B)指定的文件指针C)文件的使用方式 D)文件的大小14. 以下4个选项中,不能看作一条语句的是( )A)
6、; B)a=0,b=0,c=0; C)if(a0); D)if(b=0) m=1;n=2;15. 以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是( )A)if(ab)&(bc) k=1; B) if(ab)|(bc) k=1; else k=0;C)if(ab) k=1; else if(bc) k=1; else k=0; 16. 有以下程序int f(int b4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s;main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf
7、(“%dn”,f(a); 执行后的输出结果是( )A)12 B)11 C)18 D)1617. 有以下程序main( ) int x=0,y=5,z=3; while(z-0&+x5) y=y-1; printf(“%d,%d,%dn”,x,y,z); 程序执行后的输出结果是( )A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-518. 若有初始化“int x=5,*p=&x;”,则下面均代表地址值的选项是:( )A)x, p, &x B)p, *&x, &*x C)&*p, p, &x D)&p, p, *x19. 若已对指针变量p正确定义和赋值,则语句“*p=*p+1;
8、”的正确含义是:( )A)使p向后移动1个存储单位 B)使p所指存储单元中的值加1C)使p向后移动2个字节 D)使p的值加120. 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是( )A)scanf(“%d”,pa); B)scanf(“%d”,a);C)scanf(“%d”,&pa); D)scanf(“%d”,*pa);二、填空题(前10每题2分,后5每题3分,共35分)1. 下面程序的功能是输出以下形式的金字塔图案: * * * *main( ) int i,j; for(i=1;i=4;i+) for(j=1;j=4-i;j+) printf(“ “
9、); for(j=1;j=【 】;j+) printf(“*”); printf(“n”); 在下划线处应填入的是_。2. 有以下程序main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%dn”,x); 执行后输出结果是_。3. 设y是int型变量,请写出判断y为奇数的关系表达式_。4. 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是_。c=(a-=(b-5); c=(a%11)+(b=3); 5. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是_。6. 下列程
10、序段的输出结果是_。main() char b=Hello,you;b5=0;printf(%s n, b ); 7. 下列程序的输出结果是16.00,请填空_。main() int a=9, b=2;float x=【 】, y=1.1,z;z=a/2+b*x/y+1/2;printf(%5.2fn, z ); 8. 语句:x+; +x; x=x+1; x=l+x; 执行后都使变量x中的值增加1,请写出一条同一功能的赋值语句(不得与列举的相同,也不得使用任何其它变量)_。9. 若有定义:int w10=23,54,10,33,47,98,72,80,61, *p=w;,在不移动指针p条件下,
11、通过指针p引用值为98的数组元素的表达式是 _。10. 下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空_。#include stdio.hFILE *fp; char ch;if( (fp=fopen【 】)= NULL) exit(0);while( (ch=getchar( ) !=) fputc (ch,fp);fclose(fp);11以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,执行程序后,输入字符串:abc123edf456gh,要求输出:。请填空_。#include #include main()ch
12、ar s80, d80;int i, j;gets(s);for(i=j=0; si!=0; i+)if(【 】) dj=si; j+;dj=0;puts(d);12. 以下函数用来求出两整数之和,并通过形参将结果传回,请填空_。void func(int x,int y, 【 】z) *z=x+y; 13.有以下程序#define f(x) x*xmain( ) int i; i=f(4+4)/f(2+2); printf(“%dn”,i); 执行后输出结果是_。14.下列程序段的输出结果是_。void fun(int *x, int *y)printf(%d %d, *x, *y); *x
13、=3;*y=4;main() int x=1,y=2;fun(&y,&x);printf(%d %d,x, y);15.以下程序运行后,输出结果是_。main() static char a=ABCDEFGH,b=abCDefGh; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k5|x5=1或者fabs(x)56、Hello7、6.68、x+=1;9、p5 或者 *(p+5)10、(“bi.dat”,”w”)11、si=0&si=912、int *13、2814、2 1 4 315、CDG三、编程序题(共25分)1.编制程序,使程序输出一个矩阵,格式如下:
14、157248396然后求出对角线元素之和并输出。(10分)评分标准如下所示,用其它方法正确编程,达到题目要求也得分。参考答案:# include void main()int a33=1,5,7,2,4,8,3,9,6; int sum=0; int i,j; printf(The matrix is:n);for(i=0;i3;i+) for(j=0;j3;j+) printf(%2d,aij);/或者*(*(a+i)+j) printf(n); for(i=0;i3;i+)sum=sum+aii; printf(The sum of diagonal elements is: %d,sum
15、); 2. 在主函数中从键盘输入学生人数n(n200)及某门功课的成绩。写一个子函数,求出该门功课的平均值并返回到主函数中,在主函数中打印输出该平均值。(15分)评分标准如下所示,用其它方法正确编程,达到题目要求也得分。参考答案:# include void main()float average(float x,int n);float ave,a200;int i,n;printf(输入学生人数:n);scanf(%d,&n);printf(输入学生成绩:n);for(i=0;in;i+)scanf(%f,&ai);ave=average(a,n);printf(平均成绩=%f,ave);float average(float x,int n) /或*xint i;float ave,sum=0;for(i=0;in;i+)sum+=xi; /或*(x+i)ave=sum/n;return(ave);