浙江理工大学09-10c语言期末试卷(共11页).doc
精选优质文档-倾情为你奉上2010年09级C程序设计期末考试卷(A)注意 所有答案写在单张的答题卷上。一、 判断题(本题共10分,每小题1分,用T表示正确,用F表示错误。)(1)C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。(2)C语言中宏定义也是C语句,其末尾要加分号。(3)C源程序经过编译后就生成了可执行文件(以.exe为扩展名)。(4)C语言中的变量在使用前必须先定义,定义时要指定变量名和数据类型。(5)在C语言中,for语句只能用在已知循环次数的情况下。(6)如果定义了int array10,其元素下标分别从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.5C 2.0D2.5(13)能正确表示逻辑关系:“a10或a0”的C语言表达式是_。A a>=10 or a<=0Ba>=10 | a<=0C a>=10&& a<=0 Da>=10 | a<=0(14)在以下定义中,错误的是_。A int a=1,2Bchar s=”hello” Cchar s10=“test”Dint n=5, an(15)若有定义char x = "abcde" char y = 'a', 'b', 'c', 'd', 'e';则 。Ax数组与y数组的长度相同Bx数组长度大于y的长度Cx 数组长度小于y数组长度Dx数组等价于y 数组(16)当调用函数时,实参是一个数组名,则向函数传送的是 。 A 数组的长度 B 数组的首地址C 数组的每一个元素的地址 D 数组每个元素的值(17)以下有关switch语句的正确说法是_。Abreak语句是语句中必须的一部分B 在switch 语句中的每一个case都要用break语句Cbreak语句在switch 语句中不可以使用D在switch 语句中可以根据需要使用或不使用break语句 (18)已知a=3;则a2值是_。A1 B6 C9D2(19)如果k=0,a=1,b=2,c=3; 执行k=a<b?b+2: c*2; 后,k的值等于_。A 0 B 2 C4D 6(20)已有定义int i, a10, *p; 则合法的赋值语句是_。A p=3; B p=a5;C p=a+2;Dp=a2+2;三、 程序填空题(本题共30分,每小题2分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个最佳的答案。1【程序说明】输入一个整数n,打印出n层倒金字塔。(下图是n=3时的图案)专心-专注-专业* *【程序代码】#include<stdio.h>main() int n,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 j>nB j<nC j>=1D j<=n(22)A i<n-j B i<=n-jC i>jD i>=j(23)A i<n-j B i>n-jC i<2*j-1D i>2*j-1(24)A return 0B continueC breakD printf("n")2.【程序说明】从键盘上任意输入一个字符串和字符,要求从该字符串中删除所有的该字符。【程序代码】#include <stdio.h>_(25)_void main() char s80,c; int i,j; gets(s); c=getchar(); for(i=j=0; _(26)_;i+) if (_(27)_) sj=si; _(28)_; sj = 0; puts(s);【选项】(25)A #include <string.h> B #include <math.h>C#define gets(s) D #include gets(s)(26)A i<=80 B si !=0C j<=80 D sj !=0(27)Asi = = c B si != cC si = = c D si != c(28)A i+ B si +C j+ D sj+3【程序说明】某班学生(不超过50人),每个学生有学号、姓名、平时成绩、期末考试成绩和总评成绩(总评成绩=平时成绩*30%+期末考试成绩*70%),从文件score.dat中读入所有入学生数据(包括学号、姓名、平时成绩和期末考试成绩),计算出每个同学的总评成绩。【程序代码】#include <stdio.h>struct student char id10; char name10; int score1;/*平时成绩 */ int score2;/*期未成绩*/ float final;/*总评成绩*/;int main()int i=0,n;FILE *fp; (29)_;fp = (30); while (!feof(fp) fscanf(fp,"%s%s%d%d",(31)); i+; n = i;for (i=0; i <n; i+)datai.final = _(32)_;return 0; 【选项】(29)A struct student data B student dataC struct student data50 D student data50(30)A fopen(file, "r")B fopen(“score.dat”, "r") C fopen(file, r) D fopen(score.dat, r)(31)A datai.id,datai.name, &(datai.score1), &(datai.score2)B &datai.id, &datai.name, &(datai.score1), &(datai.score2)C datai.id,datai.name, datai.score1, datai.score2D &(datai.id),&(datai.name), datai.score1, datai.score2(32)A &datai.score1 *0.3+&datai.score2*0.7B (datai.score1 *30+datai.score2*70)/100C datai.score1 *0.3+datai.score2*0.7D score1 *0.3+.score2*0.7 4【程序说明】将字符串b复制到字符串a中去。【程序代码】#include <stdio.h>void scopy (char *s, char *t)/* t复制到s*/int i=0;while (_(33)_)_(34)_;int main()char a20, b10;scanf(“%s”, b);scopy (_(35)_);puts(a); 【选项】(33)A si !=0B si =(ti !=0)C (si=ti) != 0D si =ti !=0(34)A i+B *t+C *s+D s+, t+(35)A a20, b10B a, bC a, bD &a, &b四、 程序阅读题(本题共20分,每小题5分)阅读下列程序并写出运行结果。1【程序】#include <stdio.h>int main() int t=0,s=0, i;for(i=0;i<=4;i+) t = i + 10*t;s = s + t; printf("s=%dn", s); 2【程序】#include <stdio.h>int main() int a, b, c; scanf("%d%d", &a, &b); c = a%b; while (c!=0)printf("b=%dn", b); a = b; b = c; c = a%b; printf("b=%dn", b); 键盘输入96 36后,请写出程序运行结果。3【程序】# include <stdio.h>void swap1(int *x,int *y) int temp; temp=*x; *x=*y; *y=temp;void swap2(int *x, int *y) int *temp; temp=x; x=y; y=temp;void swap3(int x, int y) int temp; temp = x; x=y; y=temp;void main()int a,b,c,temp;a=10;b=15;c=25;if(a<b) swap1(&a,&b);printf("a=%2d,b=%2d,c=%2dn",a,b,c);if(a<c) swap2(&a,&c);printf("a=%2d,b=%2d,c=%2dn",a,b,c);if(b<c) swap1(&b, &c);printf("a=%2d,b=%2d,c=%2dn",a,b,c);if(b<c) swap2(&b,&c);printf("a=%2d,b=%2d,c=%2dn",a,b,c);if(b<c) swap3(b,c);printf("a=%2d,b=%2d,c=%2dn",a,b,c);4【程序】#include<stdio.h>int x=10;void f1() int x=8; x=+1; printf("f1:%dn",x);void f2() x=x+1; printf("f2:%dn",x);int main() x=2; printf("main:%dn",x); f1(); f2(); int x=5; f1(); f2(); 五、 程序设计题(本题共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九、 程序阅读题(本题共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=25,c=10a=15,b=25,c=10a=15,b=25,c=10每行1分,格式错扣1分。main: 2f1: 1f2: 3f1: 1f2: 4每行1分十、 程序设计题(本题共20分)评分标准:include语句:0.5分主函数定义:1分变量定义:0.5分输入语句:1分选择结构:2分循环语句:2分printf语句:1分(1)8分#include <stdio.h>int main() char str80; int i,uletters=0, lletters=0,digits=0,sp=0,others=0; gets(str); i = 0; while (stri !='0') if (stri>='A' && stri<='Z') uletters+; else if (stri >='a' && stri<='z') lletters+; else if (stri>='0' && stri<='9') digits+; else if (stri =' ') sp+; else others+; i+; printf("大写字母:%d, 小写字母:%d,数字:%d,空格:%d,其它:%dn", uletters, lletters, digits, sp, others); return 0;(2)12分#include <stdio.h>#include <stdlib.h>#include <time.h> /* 1分*/int main() int i, j=0, temp, count,index,a20,b20; srand(time(NULL); for (i=0; i < 20; i+) ai = rand()%100+1; /* 生成随机数 2分*/ if (ai%2=0) /* 选出偶数 2分*/ bj = ai;j+; count = j; for (i=0; i < count-1; i+) /* 排序 5分*/ index = i; for (j = i+1; j < count; j+) if (bindex > bj) index = j; temp = bindex; bindex = bi; bi = temp; for (i = 0; i < count; i+) printf("%4d ", bi); /* 输出 1分*/ if (i+1)%5=0) printf("n"); /* 换行 1分*/ printf("n"); return 0;