《浙江理工大学09-10c语言期末试卷(含答案)(8页).doc》由会员分享,可在线阅读,更多相关《浙江理工大学09-10c语言期末试卷(含答案)(8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-浙江理工大学09-10c语言期末试卷(含答案)-第 8 页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)
2、在函数中用关键字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结
3、果是_。A 1.0 B 1.5C 2.0D2.5(13)能正确表示逻辑关系:“a10或a0”的C语言表达式是_。A a=10 or a=10 | a=10& a=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 数组的长度
4、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=ab?b+2: c*2; 后,k的值等于_。A 0 B 2 C4D 6(20)已有定义int i, a10, *p; 则合法的赋值语句是_。A p=3; B p=a5;C
5、 p=a+2;Dp=a2+2;三、 程序填空题(本题共30分,每小题2分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个最佳的答案。1【程序说明】输入一个整数n,打印出n层倒金字塔。(下图是n=3时的图案)【程序代码】#includemain() 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 jnB j=1D j=n(22)A in-j B ijD i=j(23)A in-jC i2
6、*j-1(24)A return 0B continueC breakD printf(n)2.【程序说明】从键盘上任意输入一个字符串和字符,要求从该字符串中删除所有的该字符。【程序代码】#include _(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 B #include C#define gets(s) D #include gets(s)(26)A
7、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 struct student char id10; char name10; int score1;/*平时成绩 *
8、/ 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 fope
9、n(“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.
10、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.74【程序说明】将字符串b复制到字符串a中去。【程序代码】#include 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
11、!=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 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 int main() int a, b, c; scanf(%d%d, &a, &b); c = a
12、%b; while (c!=0)printf(b=%dn, b); a = b; b = c; c = a%b; printf(b=%dn, b);键盘输入96 36后,请写出程序运行结果。3【程序】# include 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
13、a,b,c,temp;a=10;b=15;c=25;if(ab) swap1(&a,&b);printf(a=%2d,b=%2d,c=%2dn,a,b,c);if(ac) swap2(&a,&c);printf(a=%2d,b=%2d,c=%2dn,a,b,c);if(bc) swap1(&b, &c);printf(a=%2d,b=%2d,c=%2dn,a,b,c);if(bc) swap2(&b,&c);printf(a=%2d,b=%2d,c=%2dn,a,b,c);if(bc) swap3(b,c);printf(a=%2d,b=%2d,c=%2dn,a,b,c);4【程序】#incl
14、udeint 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
15、年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分,
16、写成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 int main() char str80; int i,uletters=0, l
17、letters=0,digits=0,sp=0,others=0; gets(str); i = 0; while (stri !=0) if (stri=A & stri=a & 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 #include #include /* 1分*/int main
18、() 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 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;