1、2006 年秋浙江省高等学校计算机等级考试试卷(二级 C)试题 1(每小题 3 分,共 12 分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入一行字符,统计并输出其中英文字母、数字和其他字符的个数。 运行示例:Enter characters: f(x,y)=3x+5y-10letter=5, digit=4, other=6【程序】#include void main( ) int digit, i, letter, other; (1) ch; digit = letter = other = 0;printf(“Enter characters
2、: “);while( (2) != n)if( (3) ) letter +; (4) (ch = 0 long reverse(long number); printf(“Enter an integer:“);scanf(“%ld“, /*6*/printf(“After reversed:%ldn“, (5) ); long reverse(long number) int flag;(6) ;flag = number 0 B、number void main( ) int j, k, sum = 0;int a32;printf(“Enter an array:n“);for(j
3、= 0; j void main( ) int k;for(k = 5; k 0; k-)if(k=3)continue; /* 第 6 行 */printf(“%d “, k); (13) 程序的输出是 (13) 。A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3(14) 将第 6 行中的 continue 改为 break 后,程序的输出是 (14) 。A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3(15) 将第 6 行中的 continue 删除(保留分号)后,程序的输出是 (15) 。A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3(16)
4、将第 6 行全部删除后,程序的输出是 (16) 。A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3本题注意以下两点:1break 跳出本层循环2Contiune 结束本次循环,立即执行下一次条件判断。然后细心即可。试题 5(每小题 3 分,共 12 分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】# include void main() char c, s80= “Happy New Year“;int i;void f(char *s, char c);c = getchar();f(s, c);puts(s); void f(char *
5、s, char c) int k = 0, j = 0;while(sk != 0)if(sk != c)sj = sk;j+; k+; sj = 0; (17) 程序运行时,输入字母 a,输出 (17) 。A、Happy New Year B、Hppy New YerC、Hay New Year D、Happy Nw Yar(18) 程序运行时,输入字母 e,输出 (18) 。A、Happy New Year B、Hppy New YerC、Hay New Year D、Happy Nw Yar(19) 程序运行时,输入字母 p,输出 (19) 。A、Happy New Year B、Hpp
6、y New YerC、Hay New Year D、Happy Nw Yar(20) 程序运行时,输入字母 b,输出 (20) 。A、Happy New Year B、Hppy New YerC、Hay New Year D、Happy Nw Yar仔细研究以下语句:if(sk != c)sj = sk;j+;发现其作用是删除数组 S 中等于字符变量 C 的元素,或者也可以这样说,把不等于字符变量 C 的元素都保留。因此 17 删除 a, 因此 18 删除 e, 因此 19 删除 p, 因此 20 删除 b。试题 6(每小题 3 分,共 12 分)#include struct st int
7、x, y, z; ;void f(struct st *t, int n);void main( ) int k, n;struct st time;scanf(“%d%d%d%d“, f( printf(“%d:%d:%dn“, time.x, time.y, time.z); void f(struct st *t, int n) t-z = t-z + n; /*等价于 z=z+n;*/if(t-z = 60)t-y = t-y + t-z/60; /*等价于 y=y+z/60;*/t-z = t-z%60; /*等价于 z=z%60;*/if(t-y = 60)t-x = t-x +
8、t-y/60; /*等价于 x=x+y/60;*/t-y = t-y%60; /*等价于 y=y%60;*/if(t-x = 24) t- x = t-x % 24;(21)程序运行时,输入 12 12 50 10,输出 (21) 。A、12:12:0 B、12:12:50 C、12:12:60 D、12:13:0 (22) 程序运行时,输入 12 12 30 10,输出 (22) 。A、12:12:0 B、12:12:10 C、12:12:30 D、12:12:40 (23) 程序运行时,输入 22 59 30 30,输出 (23) 。A、23:0:0 B、22:59:60 C、22:59:
9、30 D、22:0:0 (24) 程序运行时,输入 23 59 0 300,输出 (24) 。A、0:4:0 B、23:59:300 C、23:59:00 D、23:0:0 这里主要运用了结构体的知识,当把程序变换为没有结构体的一般形式后(见下面) ,就非常容易理解了。程序等价于以下片段:sacnf(“%d:%d:%d”,f(x,y,z,n);printf(“%d:%d:%d”,x,y,z);void f(x,y,z,n);z=z+n;if(z=0)y=y+z/60;z=z%60;if(y=60)x=x+y/60;y=y%60;if(x=24)x=x%24;试题 7 (14 分)编写程序,输入 100 个学生的英语成绩,统计并输出该门课程的平均分以及不及格学生的人数。#include main() int nopass=0;n=1;fs;float pjf=0.0;while(ndouble tatal(int k);double t=0.0;for(m=1;m=k;m+) t=t+1.0/m;return t;main()double s=0.0;int n,i;scanf(“input %d”,for (i=1,i=n, n+)s=s+tatal(i);printf(“s=%f”,s);11.23nks