(1)定义函数fact(n)计算n的阶乘:n!=1*2*??*n,函数返回值类型是double。
(2)定义函数cal(e)计算下列算式的值,直到最后一项的绝对值小于e,函数返回值类型是double。 s=1+
12!?1?14!?......
-1
-2
-3
-n
(3)定义函数main(),输入正整数n,当精度e分别取值为10、10、10、??、10时,分别计算并输出下列算式的值,直到最后一项的绝对值小于精度e,以比较不同精度下算出的3!结果,要求调用函数cal(e)计算下列算式的值。
计算机等级考试参考答案(二级C)
试题1~6 (每小题3分)
⑴ A ⑵ A ⑶ B ⑷ B ⑸ A ⑹ B ⑺ C ⑼ C ⑽ C ⑾ D ⑿ D ⒀ D ⒁ C ⒂ B ⒄ A ⒅ B ⒆ C ⒇ D (21)D (22)C (23)B (24)A
试题7 (28分)
#include
int i,n;
double e=1;
printf(\
while(scanf(\ for(i=1;i<=n;i++) {
e=e*1.0/10;
printf(\ } }
double fact(int n) {
double y=1; int i;
for(i=1;i<=n;i++) y=y*i; return y;
26
⑻ D ⒃ A
}
double cal(double e) {
double s=0,t=1; int i=1; while(t>=e) {
s=s+t;
t=1/fact(++i); }
return s; }
2008年春浙江省高等学校计算机等级考试试卷(二级C)
说明:(1) 考生应将所有试题的答案填写在答卷上。其中试题1到试题6请在答卷上各小题正
确选项的对应位置处填“√”;
(2) 请将你的准考证号的后五位填写在答卷右下角的指定位置内; (3) 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入1个正整数n(n>=2),输出菲波那契(Fibonacci)序列的前n项,每行输出6个数。菲波那契(Fibonacci)序列:1,1,2,3,5,8,13,??,数列的前两个数都是1,从第三个数开始,每个数是前两个数之和。
运行示例: Enter n:10
1 1 2 3 5 8 13 21 34 55 【程序】
#include
int count, i, n, x1, x2, x; printf(”Enter n:”); scanf(”%d”,&n); x1 = x2 = 1;
printf(”mm”,x1, x2); (1) ;
for(i = 1; i <= n-2; i++){ (2) ;
printf(”m”, x); count++;
if( (3) ) printf(”\\n”); x1 = x2;
27
(4) ; } }
【供选择的答案】
(1) A、count = 2 B、count = 0
C、count = 1 D、count = -1
(2) A、x = x1 – x2 B、x = x1 + x2
C、x = x1 D、x = 2
(3) A、count / 6 == 0 B、count % 6 != 0
C、count % 6 == 0 D、count / 6 != 0
(4) A、x = x1 +x2 B、x2 = x1
C、x = x2 D、x2 = x
试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入2个正整数m和n(1<=m Enter m, n: 1 10 count = 4, sum = 17 【程序】 #include if(m == 1) return (5) ; n = sqrt(m); for(i = 2; i <= n; i++) if(m % i == 0) return (6) ; return (7) ; } main() { int count = 0, i, m, n, sum = 0; printf(”Enter m, n:”); scanf(”%d%d”,&m, &n); for(i = m; i <= n; i++) if( (8) ){ sum += i; count++; } printf(\} 【供选择的答案】 (5) A、1 B、m C、m == 1 D、0 (6) A、m B、1 C、0 D、n (7) A、m B、1 28 C、0 D、i == n (8) A、prime(i) != 0 B、prime(i) == 0 C、i == prime(i) D、!prime(i) 试题3(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个2 * 3的二维数组,找到最大值以及它的行下标和列下标,并输出该矩阵。 运行示例: Enter a array(2*3):3 2 10 -9 6 -1 max = a[0][2] = 10 3 2 10 -9 6 -1 【程序】 #include printf(\ for(i = 0; i <2; i++) for(j = 0; j < 3; j++) scanf(\ (10) ; for(i = 0; i < 2; i++) for(j = 0; j < 3; j++) if(a[i][j] > a[row][col]){ (11) ; } printf(”max = a[%d][%d] = %d\\n”, row, col, a[row][col]); for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++) printf(”M”, a[i][j]); (12) } 【供选择的答案】 (9) A、&a[i][j] B、&a[j][i] C、a[i][j] D、a[j][i] (10) A、row = col = 2; B、row = col = 0; C、a[row][col] = 0; D、a[row][col] = -1; (11) A、row = j; col = i; B、a[row][col] = a[i][j]; C、row = i; col = j; D、a[row][col] = a[j][i]; (12) A、printf(”\\n”)}; B、}printf(”\\n”); C、; D、printf(”\\n”);} 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include { int op1, op2, res; 29 char operator; scanf(”%d”, &op1); operator = getchar(); while(operator != ?=?){ scanf(”%d”, &op2); switch(operator){ case ?+?: res = op1+op2; break; case ?-?: res = op1-op2; break; case ?*?: res = op1*op2; break; case ?/?: res = op1/op2; break; default: res = 0; } op1 = res; operator = getchar(); } printf(”%d\\n”, res); } (13) 程序运行时,输入2*3-2=,输出 (13) 。 A、6 B、2 C、0 D、4 (14) 程序运行时,输入15+2/3=,输出 (14) 。 A、16 B、15 C、6 D、5 (15) 程序运行时,输入1+2*10-10/2=,输出 (15) 。 A、10 B、16 C、15 D、25 (16) 程序运行时,输入1+3*5/2-7=,输出 (16) 。 A、3 B、1 C、-2 D、-3 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include { int k = 0, number = 0; char str[MAXLEN]; while((str[k] = getchar()) != ?#?) k++; str[k] = ?\\0?; for(k = 0; str[k] != ?\\0?; k++) if(str[k]>=?0?&&str[k]<=?9?||str[k]==?A?||str[k]==?B?) if(str[k] >= ?0?&&str[k] <= ?9?) number = number * 12 + str[k] – ?0?; else if(str[k] == ?A?||str[k] == ?B?) number = number * 12 + str[k] –?A? + 10; else; /*第15行*/ else break; /*第16行*/ printf(”%d\\n”,number); } (17) 程序运行时,输入10#,输出 (17) 。 A、16 B、10 C、12 D、1 (18) 程序运行时,输入1a0#,输出 (18) 。 A、264 B、10 C、1 D、12 30