您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 2009年C语言期末考试题(A卷)及答案
北京航空航天大学2008-2009学年第二学期期末《C语言程序设计》考试A卷班级______________学号_________姓名______________成绩_________2009年6月1日~~1班号学号姓名成绩《C语言程序设计》期末考试卷注意事项:1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分!2、考试时间120分钟一、单项选择题(每小题2分,共40分)1.下面叙述错误的是:()A)C程序中,各种括号应成对出现B)C程序中,赋值号的左边不可以是表达式C)C程序中,变量名的大小写是有区别的D)C程序中,若未给变量赋初值,则变量的初值自动为02.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()。(注:_表示空格)intal,a2,charc1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);A.10A_20_BB.10_A_20_BC.10A20BD.10A20_B3.有以下程序:main(){intm;m=10;printf(“%d\n”,(--m*3/5));}程序运行后的输出结果是:()A)6B)5C)4D)74.设a=5,b=6,c=8,d=7,x=2,y=2,执行(x=ab)||(y=cd)后y的值是:()A)1B)2C)0D)85.设a、b、c都是int型变量,且a=7,b=8,c=9,则以下表达式中值为0的是:()A)a&&b||(b==c)B)a=bC)a&&b||cD)!a||b&&!c6.设有定义:int*pl,**p2;,则以下选项中,正确的赋值语句是:()A)p=1;B)*q=2;C)q=p;D)*p=5;7.以下符合C语言语法的实型常量是()A)1.2E0.5B)3.14159EC).5E-3D)E15~~28.设有以下程序段:inta=5;while(a=0)a--;则下面描述正确的是:()A)执行5次循环体语句B)本循环是死循环C)一次也不执行循环体语句D)执行一次循环体语句9.若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3B)1+2=x2C)x3=0x12D)x4=1+2=3;10.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()A)a++;B)b++C)c++;D)d++;11.设有定义:floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是()A)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)12.有以下程序main(){chark;inti;for(i=1;i3;i++){scanf(“%c”,&k);switch(k){case‘0’:printf(“another\n”);case‘1’:printf(“number\n”);}}}程序运行时,从键盘输入:01回车,程序执行后的输出结果是()A)anotherB)anotherC)anotherD)numbernumbernumbernumbernumberanothernumber13.在调用fopen函数时,不需要的信息是()A)需要打开的文件名称B)指定的文件指针C)文件的使用方式D)文件的大小~~314.以下4个选项中,不能看作一条语句的是()A){;}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;elsek=0;C)if(a=b)k=0;D)if(ab)k=1;elseif(b=c)k=1;elseif(bc)k=1;elsek=0;16.有以下程序intf(intb[][4]){inti,j,s=0;for(j=0;j4;j++){i=j;if(i2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf(“%d\n”,f(a));}执行后的输出结果是()A)12B)11C)18D)1617.有以下程序main(){intx=0,y=5,z=3;while(z--0&&++x5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}程序执行后的输出结果是()A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-518.若有初始化“intx=5,*p=&x;”,则下面均代表地址值的选项是:()A)x,p,&xB)p,*&x,&*xC)&*p,p,&xD)&p,p,*x19.若已对指针变量p正确定义和赋值,则语句“*p=*p+1;”的正确含义是:()A)使p向后移动1个存储单位B)使p所指存储单元中的值加1C)使p向后移动2个字节D)使p的值加1~~420.设有定义:inta,*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(){inti,j;for(i=1;i=4;i++){for(j=1;j=4-i;j++)printf(““);for(j=1;j=【】;j++)printf(“*”);printf(“\n”);}}在下划线处应填入的是_____________。2.有以下程序main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%d\n”,x);}执行后输出结果是_____________。3.设y是int型变量,请写出判断y为奇数的关系表达式_____________。4.若有定义:inta=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是_____________。c=(a-=(b-5));c=(a%11)+(b=3);5.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是_____________。6.下列程序段的输出结果是_____________。main(){charb[]=Hello,you;b[5]=’\0’;printf(%s\n,b);}~~57.下列程序的输出结果是16.00,请填空_____________。main(){inta=9,b=2;floatx=【】,y=1.1,z;z=a/2+b*x/y+1/2;printf(%5.2f\n,z);}8.语句:x++;++x;x=x+1;x=l+x;执行后都使变量x中的值增加1,请写出一条同一功能的赋值语句(不得与列举的相同,也不得使用任何其它变量)_____________。9.若有定义:intw[10]={23,54,10,33,47,98,72,80,61},*p=w;,在不移动指针p条件下,通过指针p引用值为98的数组元素的表达式是_____________。10.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空_________。#includestdio.hFILE*fp;{charch;if((fp=fopen【】)==NULL)exit(0);while((ch=getchar())!='@')fputc(ch,fp);fclose(fp);}11.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,执行程序后,输入字符串:abc123edf456gh,要求输出:123456。请填空_____________。#includestdio.h#includectype.hmain(){chars[80],d[80];inti,j;gets(s);for(i=j=0;s[i]!=‘\0’;i++)if(【】){d[j]=s[i];j++;}d[j]=‘\0’;puts(d);}12.以下函数用来求出两整数之和,并通过形参将结果传回,请填空_____________。voidfunc(intx,inty,【】z){*z=x+y;}~~613.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}执行后输出结果是_____________。14.下列程序段的输出结果是_____________。voidfun(int*x,int*y){printf(%d%d,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(%d%d,x,y);}15.以下程序运行后,输出结果是_____________。main(){staticchara[]=ABCDEFGH,b[]=abCDefGh;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k++)if(*(p1+k)==*(p2+k))printf(%c,*(p1+k));printf(\n);}三、程序编写题(共25分)见答题纸~~7答题纸班号学号姓名成绩一、单项选择题(共40分)题号12345678910答案题号11121314151617181920答案三、程序编写题(共25分)1.编制程序,使程序输出一个矩阵,格式如下:1┗┛5┗┛72┗┛4┗┛83┗┛9┗┛6然后求出对角线元素之和并输出。(10分)【输出举例】:Thematrixis:Thesumofdiagonalelementsis:~~82.在主函数中从键盘输入学生人数n(n≤200)及某门功课的成绩。写一个子函数,求出该门功课的平均值并返回到主函数中,在主函数中打印输出该平均值。(15分)【输出举例】:输入学生人数:输入学生成绩:平均成绩=~~12008-2009学年第二学期期末《C语言程序设计》(A卷)标准答案和评分标准一、单项选择题(每小题2分,共40分)1-5.DCBAD6-10.DCCCD11-15.BCDDA16-20.DBCBA二、填空题(每小题2分,共35分)1、2*i-12、-43、(y%2)==1或者(y%2)!=04、35、x5||x-5或者fabs(x)5==1或者fabs(x)56、Hello7、6.68、x+=1;9、p[5]或者*(p+5)10、(“bi.dat”,”w”)11、s[i]='0'&&s[i]='9'12、int*13、2814、214315、CDG三、编程序题(共25分)1.编制程序,使程序输出一个矩阵,格式如下:1┗┛5┗┛72┗┛4┗┛83┗┛9┗┛6然后求出对角线元素之和并输出。(10分)评分标准如下所示,用其它方法正确编程,达到题目要求也得分。参考答案:#includestdio.hvoidmain(){inta[3][3]={1,5,7,2,4,8,3,9,6};intsum=0;inti,j;~~2printf(Thematrixis:\n);for(i=0;i3;i++){for(j=0;j3;j++)printf(%2d,a[i][j]);//或者*(*(a+i)+j)printf(\n);}for(i=0;i3;i++)sum=sum+a[i][i];printf(Thesumofdiagonalelementsis:%d,sum);}2.在主函数中从键盘输入学生人数n(n≤200)及某门功课的成绩。写一个子函数,求出该门功课的平均值并返回到主函数中,在主函
本文标题:2009年C语言期末考试题(A卷)及答案
链接地址:https://www.777doc.com/doc-4757836 .html