第页(共7页)12010年09级C程序设计期末考试卷(A)[注意]所有答案写在单张的答题卷上。一、判断题(本题共10分,每小题1分,用T表示正确,用F表示错误。)(1)C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。(2)C语言中宏定义也是C语句,其末尾要加分号。(3)C源程序经过编译后就生成了可执行文件(以.exe为扩展名)。(4)C语言中的变量在使用前必须先定义,定义时要指定变量名和数据类型。(5)在C语言中,for语句只能用在已知循环次数的情况下。(6)如果定义了intarray[10],其元素下标分别从1到10。(7)在函数中用关键字static声明的变量是静态局部变量,其生命周期持续到程序结束。(8)在C语言中,函数调用不会改变实参的值。(9)表达式strcmp(“100”,“99”)值是大于零的。(10)Struct是定义结构类型的关键字,struct和它后面的结构名一起组成一个新的数据类型。二、单选题(本题共20分,每小题2分)(11)以下叙述正确的是_______。[A]构成C程序的基本单位是函数[B]可以在一个函数中定义另一个函数[C]main函数必须放在其它函数之前[D]所有被调用函数必须在调用之前进行定义(12)若定义x和y为double类型,则printf(“%.1f”,(x=1,y=x+3/2))的x结果是______。[A]1.0[B]1.5[C]2.0[D]2.5(13)能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是________。[A]a=10ora=0[B]a=10|a=0[C]a=10&&a=0[D]a=10||a=0(14)在以下定义中,错误的是________。[A]inta[]={1,2}[B]chars[]=”hello”[C]chars[10]={“test”}[D]intn=5,a[n](15)若有定义charx[]=abcde;chary[]={'a','b','c','d','e'};则。[A]x数组与y数组的长度相同[B]x数组长度大于y的长度[C]x数组长度小于y数组长度[D]x数组等价于y数组第页(共7页)2(16)当调用函数时,实参是一个数组名,则向函数传送的是。[A]数组的长度[B]数组的首地址[C]数组的每一个元素的地址[D]数组每个元素的值(17)以下有关switch语句的正确说法是________。[A]break语句是语句中必须的一部分[B]在switch语句中的每一个case都要用break语句[C]break语句在switch语句中不可以使用[D]在switch语句中可以根据需要使用或不使用break语句(18)已知a=3;则a^2值是________。[A]1[B]6[C]9[D]2(19)如果k=0,a=1,b=2,c=3;执行k=ab?b+2:c*2;后,k的值等于_______。[A]0[B]2[C]4[D]6(20)已有定义inti,a[10],*p;则合法的赋值语句是______。[A]p=3;[B]p=a[5];[C]p=a+2;[D]p=a[2]+2;第页(共7页)3三、程序填空题(本题共30分,每小题2分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个最佳的答案。1【程序说明】输入一个整数n,打印出n层倒金字塔。(下图是n=3时的图案)*********【程序代码】#includestdio.hmain(){intn,i,j;scanf(%d,&n);for(j=n;____(21)______;j--){for(i=0;___(22)___;i++)printf();for(i=0;____(23)____;i++)printf(*);_____(24)______;}}【选项】(21)[A]jn[B]jn[C]j=1[D]j=n(22)[A]in-j[B]i=n-j[C]ij[D]i=j(23)[A]in-j[B]in-j[C]i2*j-1[D]i2*j-1(24)[A]return0[B]continue[C]break[D]printf(\n)2.【程序说明】从键盘上任意输入一个字符串和字符,要求从该字符串中删除所有的该字符。【程序代码】#includestdio.h_____(25)_____voidmain(){chars[80],c;inti,j;gets(s);c=getchar();for(i=j=0;___(26)__;i++)if(___(27)__){s[j]=s[i];___(28)____;}s[j]=‘\0’;puts(s);}【选项】(25)[A]#includestring.h[B]#includemath.h[C]#definegets(s)[D]#includegets(s)(26)[A]i=80[B]s[i]!=’\0’[C]j=80[D]s[j]!=’\0’第页(共7页)4(27)[A]s[i]==c[B]s[i]!=c[C]s[i]==‘c’[D]s[i]!=‘c’(28)[A]i++[B]s[i]++[C]j++[D]s[j]++3【程序说明】某班学生(不超过50人),每个学生有学号、姓名、平时成绩、期末考试成绩和总评成绩(总评成绩=平时成绩*30%+期末考试成绩*70%),从文件score.dat中读入所有入学生数据(包括学号、姓名、平时成绩和期末考试成绩),计算出每个同学的总评成绩。【程序代码】#includestdio.hstructstudent{charid[10];charname[10];intscore1;/*平时成绩*/intscore2;/*期未成绩*/floatfinal;/*总评成绩*/};intmain(){inti=0,n;FILE*fp;(29)_;fp=(30);while(!feof(fp)){fscanf(fp,%s%s%d%d,(31));i++;}n=i;for(i=0;in;i++)data[i].final=____(32)____;return0;}【选项】(29)[A]structstudentdata[B]studentdata[C]structstudentdata[50][D]studentdata[50](30)[A]fopen(file,r)[B]fopen(“score.dat”,r)[C]fopen(file,r)[D]fopen(score.dat,r)(31)[A]data[i].id,data[i].name,&(data[i].score1),&(data[i].score2)[B]&data[i].id,&data[i].name,&(data[i].score1),&(data[i].score2)[C]data[i].id,data[i].name,data[i].score1,data[i].score2[D]&(data[i].id),&(data[i].name),data[i].score1,data[i].score2(32)[A]&data[i].score1*0.3+&data[i].score2*0.7[B](data[i].score1*30+data[i].score2*70)/100[C]data[i].score1*0.3+data[i].score2*0.7[D]score1*0.3+.score2*0.74【程序说明】将字符串b复制到字符串a中去。【程序代码】第页(共7页)5#includestdio.hvoidscopy(char*s,char*t)/*t复制到s*/{inti=0;while(___(33)___)___(34)___;}intmain(){chara[20],b[10];scanf(“%s”,b);scopy(___(35)___);puts(a);}【选项】(33)[A]s[i]!=’\0’[B]s[i]=(t[i]!=’\0’)[C](s[i]=t[i])!=‘\0’[D]s[i]=t[i]!=’\0’(34)[A]i++[B]*t++[C]*s++[D]s++,t++(35)[A]a[20],b[10][B]a,b[C]a[],b[][D]&a,&b第页(共7页)6四、程序阅读题(本题共20分,每小题5分)阅读下列程序并写出运行结果。1【程序】#includestdio.hintmain(){intt=0,s=0,i;for(i=0;i=4;i++){t=i+10*t;s=s+t;printf(s=%d\n,s);}}2【程序】#includestdio.hintmain(){inta,b,c;scanf(%d%d,&a,&b);c=a%b;while(c!=0){printf(b=%d\n,b);a=b;b=c;c=a%b;}printf(b=%d\n,b);}键盘输入9636后,请写出程序运行结果。3【程序】#includestdio.hvoidswap1(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidswap2(int*x,int*y){int*temp;temp=x;x=y;y=temp;}voidswap3(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta,b,c,temp;a=10;b=15;c=25;if(ab)swap1(&a,&b);printf(a=%2d,b=%2d,c=%2d\n,a,b,c);if(ac)swap2(&a,&c);printf(a=%2d,b=%2d,c=%2d\n,a,b,c);if(bc)swap1(&b,&c);printf(a=%2d,b=%2d,c=%2d\n,a,b,c);if(bc)swap2(&b,&c);printf(a=%2d,b=%2d,c=%2d\n,a,b,c);if(bc)swap3(b,c);printf(a=%2d,b=%2d,c=%2d\n,a,b,c);}4【程序】#includestdio.hintx=10;voidf1(){intx=8;x=+1;printf(f1:%d\n,x);}voidf2(){x=x+1;printf(f2:%d\n,x);}intmain(){x=2;printf(main:%d\n,x);f1();f2();{intx=5;f1();f2();}}第页(共7页)7五、程序设计题(本题共20分)(1)编写程序,输入一字符串(长度80),统计其中大写字母、小写字母、空格、数字以及其它字符各有多少个,并输出统计结果。(8分)(2)编写一个程序,随机生成20个1-100间的整数,对其中的偶数按从小到大顺序输出,且每行输出5个数。(12分)2010年09级C程序设计期末考试A卷参考答案姓名___________学号___________班级____________得分___________[注意]所有答案写在单张的答题卷上。六、判断题(正确的答T,错误的答F,本题共10分,每小题1分)题号12345678910答案TFFTFFTTFT七、单选题(本题共20分,每小题2分)题号11121314151617181920答案ACDDBBDACC八、程序填空题(本题共30分,每小题2分)题号21222324252627282930答案CACDABBCDB题号3132333435答案ACCAB第页(共7页)8九、程序阅读题(本题共20分,每小题5分)程序1程序2s=0s=1s=13s=136s=1370每行1分如果没写”s=”,扣2分,写成10行的扣3分b=36b=24b=12第一行1分,后两行各2分,格式错扣1分。程序3程序4a=15,b=10,c=25a=15,b=10,c=25a=15,b