计算机二级c语言
更新时间:2024-01-08 09:30:01 阅读量: 教育文库 文档下载
2008年秋浙江省高等学校 计算机等级考试试卷(二级C)
说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的
对应位置上填“√”。
⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ⑶ 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一批学生成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级分为三级,分别为:A(90~100)、P(68~89)和F(0~59)。
运行示例:
Enter scores:88 71 68 70 59 81 91 0 60 77 83 -10 A:1; P:8; F:2; 【程序】
#include
【供选择的答案】
(1) A. mark>=0 B. mark>0
C. mark<=0 D. mark<0 (2) A. else if (mark>=60) B. if (mark>=60)
C. else (mark>=60) D. if (mark<90) (3) A. else(mark<60) B. else C. if(mark>0) D. else if (mark<=60) (4) A. scanf(“%d”,mark) ; B. scanf(“%d”,&mark); C. ; D. mark=getchar();
试题2(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
共76页 第1页
求1~999之间所有满足各位数字的立方和等于它本身的数。例如:153的各位数字的立方和是:13+53+33=153
运行示例:
153 370 371 407 【程序】
#include
【供选择的答案】 (5) A. sum=0; B. sum=1;
C. sum=j; D. ; (6) A. x=1; B. x=j; C. ; D. x=sum; (7) A. digit=x/10; B. ; C. digit=x; D. digit=x; (8) A. x==0; B. j!=0; C. j==0; D. x!=0;
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】
输入10个整数,将它们从小到大排序后输出。 【运行示例】
Enter 10 integers: 10 98 -9 3 6 9 100 -1 0 2 After sorted: 100 98 10 9 6 3 2 0 -1 -9 【程序】
#include 共76页 第2页 for(i=k+1; i<=n; i++){ if(a[i]>a[index]) index=1; (11) ; } } void swap(int *x, int *y) { int t; t=*x; *x=*y; *y=*t; } void main() { int I, a[10]; printf(“Enter 10 integers:”); for(i=0; i<10; i++) scanf(“%d”,&a[i]); (12) ; printf(“After sorted:”); for(i=0; i<10; i++) printf(“%d”, a[i]); printf(“\\n”); } (9) A. void swap(int *x, int *y) B. ; C. void swap(int *x, int *y); D. void swap(int *x, *y) (10) A. int &a, int n B. int *a, int *n C. int *a, int n D. int a, int *n (11) A. swap(*a[index], *a[k]) B. swap(a[index], *a[k]) C. swap(index, k) D. swap(&a[index], &a[k]) (12) A. sort(a) B. sort(a[10]) C. sort(a[], 10) D. sort(a, 10) 试题4(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 程序1 #include for(j=1; j<=5; j++){ s1++; for(k=1; k<=j; k++) s2++; } 共76页 第3页 printf(“%d %d”, s1, s2); } 程序2 #include 程序3 #include 程序4 #include (13) 程序1运行时,输出 (13) 。 A. 0 15 B. 5 0 C. 5 5 D. 5 15 (14) 程序2运行时,输出 (14) 。 A. 0 15 B. 5 0 共76页 第4页 C. 5 5 D. 5 15 (15) 程序3运行时,输出 (15) 。 A. 0 15 B. 5 0 C. 5 5 D. 5 15 (16) 程序4运行时,输出 (16) 。 A. 0 15 B. 5 0 C. 5 5 D. 5 15 试题5(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 程序1 #include for(i=2; i<=m/2; i++) if(m % i= =0) y=0; else y=1; printf(“%d”,y); } 程序2 #include for(i=2; i<=m/2; i++) if(m % i= =0) {y=0; break;} printf(“%d”,y); } 程序3 #include for(i=2; i<=m/2; i++) if(m % i= =0) break; if(i> m/2) y=1; else y=0; printf(“%d”,y); } 程序4 #include 共76页 第5页 int i, m=15, y=-1; for(i=2; i<=m/2; i++) if(m % i= =0) { break; y=0; } printf(“%d”,y); } (17) 程序1运行时,输出 (17) 。 A. 1 B. 0 C. 15 D. -15 (18) 程序1运行时,输出 (18) 。 A. 1 B. 0 C. 15 D. -15 (19) 程序1运行时,输出 (19) 。 A. 1 B. 0 C. 15 D. -15 (20) 程序1运行时,输出 (20) 。 A. 1 B. 0 C. 15 D. -15 试题6(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include (21) 程序运行时,输入5678,输出 (21) 。 A. two three B. two C. one four three D. four three two one (22) 程序运行时,输入8561#,输出 (22) 。 A. two three B. two C. one four three D. four three two one (23) 程序运行时,输入7902#,输出 (23) 。 A. two three B. two C. one four three D. four three two one (24) 程序运行时,输入7633#,输出 (24) 。 A. two three B. two C. one four three D. four three two one 共76页 第6页 试题7(28分) (1) 定义函数fact(n) 计算n的阶乘:n!=1*2*……*n,函数返回值类型是double。 (2) 定义函数cal(e) 计算下列算式的值,直到最后一项的绝对值小于e,函数返回值类型是 double。 111 s?1????......2!3!4! (3) 定义函数main(),输入正整数n,当精度e分别取值为10-1、10-2、10-3/……10-n时,分别计 算并输出下列算式的值,直到最后一项绝对值小于精度e,以此比较不同精度下算出的结果。要求调用cal(e) 计算下列算式的值。 s?1?111???......2!3!4!共76页 第7页 2007年春浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的 对应位置上填“√”。 ⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ⑶ 考试时间为90分钟。 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个正整数,按照从高位到低位的顺序输出各位数字。 运行示例: Enter an integer: 1902 The digits are: 1 9 0 2 【程序】 #include { int digit, number, power, t; printf(\ scanf(\ number = number < 0 ? -number : number; power = 1; (1) while( (2) ){ power *= 10; t /= 10; }; printf(\ while( (3) ){ digit = number / power; printf(\ (4) power /= 10; } } 【供选择的答案】 (1) A、 t = 1; B、t = number; C、 ; D、number = 1; (2) A、t >= 10 B、power >= 100 C、t != 0 D、number != 0 (3) A、 power == 0 B、digit != 0 C、number != 0 D、power >= 1 (4) A、number /= power; B、number %= 10; 共76页 第8页 C、number %= power; D、number /= 10; 试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 连续输入一批学生的成绩,直到输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0~100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。 运行示例: Enter marks: 90 80 77 65 -1 Max = 90 【程序】 #include for(k = 1; k < n; k++) if(max < array[k]) max = array[k]; return max; } void main( ) { int k, x; int mark[MAXNUM]; printf(\ k = 0; scanf(\ while( (7) ){ mark[k++] = x; scanf(\ } if(k > 0) printf(\ else printf(\} 【供选择的答案】 (5) A、int n; int array[] B、void (6) A、max = 0; B、; C、max = array[0]; D、max = array[n]; (7) A、k < MAXNUM || x >=0 && x <= 100 B、k < MAXNUM && x >=0 && x <= 100 C、k > MAXNUM && x >=0 || x <= 100 D、k > MAXNUM || x >=0 || x <= 100 (8) A、mark, k B、mark 共76页 第9页 C、int *array D、int array[],int n C、mark[] D、mark, n 试题3(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个4 行4 列的矩阵,计算并输出该矩阵除 4 条边以外的所有元素之和sum1,再计算和输出该矩阵主对角线以上(含主对角线)的所有元素之和sum2, 主对角线为从矩阵的左上角至右下角的连线。 运行示例: Enter an array: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sum1 = 34 sum2 = 70 【程序】 #include printf(\ for(j = 0; j < 4; j++) for(k = 0; k < 4; k++) scanf(\ sum = 0; for(j = 0; j < 4; j++) for(k = 0; k < 4; k++) if( (9) ) sum += a[j][k]; printf(\ (10) for(j = 0; j < 4; j++) for( (11) ; (12) ; k++) sum += a[j][k]; printf(\} 【供选择的答案】 (9) A、j != 3 && k != 3 && j != 0 && k !=0 B、j != 3 && k != 3 || j != 0 && k !=0 C、j != 3 || k != 3 && j != 0 || k !=0 D、j == 3 && k == 3 || j == 0 && k ==0 (10) A、sum1 = 0; B、sum = 0; C、sum2 = 0; D、; 共76页 第10页 (11) A、k = 0 B、k = j C、k = 1 D、k = 3 (12) A、k <= j B、k > 0 C、 k > j D、k < 4 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include if((i/10) > 0) /* 第7行 */ j = i; if((i != 0) && (j == 0)) k = i; else k = -1; /* 第12行 */ printf(\} (13) 程序运行时,输入5,输出 (13) 。 A、j=0, k=5 C、j=0,k=-1 B、j=5,k=5 D、j=5,k=-1 (14) 。 (14) 程序运行时,输入99,输出 A、j=99, k=-1 B、j=0, k=-1 C、j=0, k=99 D、j=99, k=99 (15) 将第12行改为“k = -1;j=i/10;”后,程序运行时,输入99,输出 (15) 。 A、j=99, k=-1 B、j=9, k=99 C、j=99, k=99 D、j=9, k=-1 (16) 将第7行改为“if((i/10) > 0){”,第12行改为“k = -1;}”后,程序运行时,输入5,输出 (16) 。 A、j=0, k=-1 B、j=0,k=0 C、j=5,k=5 D、j=5,k=-1 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include for(j = 0; j < 2; j++) 共76页 第11页 Fun(); printf(\} void Fun() { int k = 1; /* 第11行 */ printf(\ k++; } (17)程序的输出是 (17) 。 A、k=1,k=2,k=3 B、k=1,k=2,k=1 C、k=1,k=1,k=2 D、k=1,k=1,k=1 (18)将第11行改为“static int k=1;”后,程序的输出是 (18) 。 A、k=1,k=1,k=1 B、k=1,k=1,k=2 C、k=1,k=2,k=1 D、k=1,k=2,k=3 (19) 将第11行改为“k=1;”后,程序的输出是 (19) 。 A、k=1,k=2,k=1 B、k=1,k=1,k=1 C、k=1,k=1,k=2 D、k=1,k=2,k=3 (20) 将第11行改为“;”后,程序的输出是 (20) 。 A、k=1,k=1,k=2 B、k=1,k=2,k=3 C、k=1,k=1,k=1 D、k=1,k=2,k=1 试题6(每小题3分,共12分) #include char c; char s[80]; }; char * f(struct st t); void main( ) { int k; struct st a[4] = {{'1',\ for(k = 0; k < 4; k++) printf(\} char * f(struct st t) { int k = 0; while(t.s[k]!='\\0'){ if(t.s[k] == t.c) return t.s+k; k++; } return t.s; } (21) 程序运行时,第1行输出 (21) 。 A、321 B、21 C、123 D、12 共76页 第12页 (22) 程序运行时,第2行输出 (22) 。 A、21 B、12 C、3 D、1 A、3 B、123 C、1 D、321 (24) 程序运行时,第4行输出 (24) 。 A、123 B、1 C、3 D、321 (23) 程序运行时,第3行输出 (23) 。 试题7 (28分) 某客户为购房办理商业贷款,选择了按月等额本息还款法,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month),计算公式如下。客户打算在5~30年的范围内选择还清贷款的年限,想得到一张“还款年限-月还款额表”以供参考。 rate(1?rate)monthmoney?loan?(1?rate)month?1 (1) 定义函数cal_power(x, n)计算x的n次幂(即x),函数返回值类型是double。 (2) 定义函数cal_money(loan,rate,month)计算月还款额,函数返回值类型是double,要 求调用函数cal_power(x, n)计算x的n次幂。 ()n 定义函数main(),输入贷款本金 loan(元)和月利率 rate,输出“还款年限-月还款额表”,还款年限的范围是5~30年,输出时分别精确到年和元。要求调用函数cal_money(loan,rate,month)计算月还款额。 2006年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的 对应位置上填“√”。 ⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ⑶ 考试时间为90分钟。 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一行字符,统计并输出其中英文字母、数字和其他字符的个数。 运行示例: Enter characters: f(x,y)=3x+5y-10 letter=5, digit=4, other=6 【程序】 #include { int digit, i, letter, other; (1) ch; 共76页 第13页 digit = letter = other = 0; printf(\ while( (2) != '\\n') if( (3) ) letter ++; (4) (ch >= '0' && ch <= '9') digit ++; else other ++; printf(\} 【供选择的答案】 (1) A、* B、float C、double D、char (2) A、(ch = getchar()) B、ch = getchar() C、getchar(ch) D、putchar(ch) (3) A、(ch >= 'a' && ch <= 'z') && (ch >= 'A' && ch <= 'Z') B、(ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') C、ch >= 'a' && ch <= 'Z' D、ch >= 'A' && ch <= 'z' (4) A、if B、else D、if else C、else if 试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。 运行示例: Enter an integer: -123 After reversed: -321 【程序】 #include long reverse(long number); printf(\ scanf(\ printf(\} long reverse(long number) { int flag; (6) ; flag = number < 0 ? -1 : 1; if( (7) ) number = - number; 共76页 第14页 while(number != 0){ res = (8) ; number /= 10; } return flag*res; } 【供选择的答案】 (5) A、reverse( ) B、in C、reverse(in) D、reverse (6) A、res = 0 B、long res C、long res = 0 D、res (7) A、number > 0 B、number < 0 C、number != 0 D、number == 0 (8) A、number B、res*10 + number C、number/10 D、res*10 + number/10 试题3(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个3 行2 列的矩阵,分别输出各行元素之和. 运行示例: Enter an array: 6 3 1 -8 3 12 sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 15 【程序】 #include { int j, k, sum = 0; int a[3][2]; printf(\ for(j = 0; j < 3; j++) for(k = 0; k < 2; k++) scanf(\ for(j = 0; j < 3; j++){ (10) for(k = 0; k < 2; k++) sum = (11) ; printf(\ } } 共76页 第15页 【供选择的答案】 (9) A、a[j][k] B、a[k][j] C、&a[j][k] D、&a[k][j] (10) A、; B、sum = -1; C、sum = 1; D、sum = 0; (11) A、sum + a[j][k] B、sum + a[j][j] C、sum + a[k][k] D、0 (12) A、k B、j C、0 D、1 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include for(k = 5; k > 0; k--){ if(k==3) continue; /* 第6行 */ printf(\ } } (13) 程序的输出是 (13) 。 A、5 4 3 2 1 B、5 4 2 1 A、5 4 3 2 1 B、5 4 2 1 A、5 4 3 2 1 B、5 4 2 1 A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3 C、5 4 D、3 C、5 4 D、3 (16) 。 C、5 4 D、3 (14) 将第6行中的continue改为break后,程序的输出是 (14) 。 (15) 将第6行中的continue删除(保留分号)后,程序的输出是 (15) 。 (16) 将第6行全部删除后,程序的输出是 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 # include { char c, s[80]= \ int i; void f(char *s, char c); c = getchar(); f(s, c); puts(s); } void f(char *s, char c) { int k = 0, j = 0; 共76页 第16页 while(s[k] != '\\0'){ if(s[k] != c){ s[j] = s[k]; j++; } k++; } s[j] = '\\0'; } (17) 程序运行时,输入字母a,输出 (17) 。 A、Happy New Year B、Hppy New Yer C、Hay New Year D、Happy Nw Yar (18) 程序运行时,输入字母e,输出 (18) 。 A、Happy New Year B、Hppy New Yer C、Hay New Year D、Happy Nw Yar (19) 。 (19) 程序运行时,输入字母p,输出 C、Hay New Year A、Happy New Year B、Hppy New Yer D、Happy Nw Yar (20) 。 (20) 程序运行时,输入字母b,输出 C、Hay New Year A、Happy New Year B、Hppy New Yer D、Happy Nw Yar 试题6(每小题3分,共12分) #include int x, y, z; }; void f(struct st *t, int n); void main( ) { int k, n; struct st time; scanf(\f(&time, n); printf(\ } void f(struct st *t, int n) { t->z = t->z + n; if(t->z >= 60){ } if(t->y >= 60){ t->x = t->x + t->y/60; t->y = t->y`; 共76页 第17页 t->y = t->y + t->z/60; t->z = t->z`; } 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: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 试题7 (14分) 编写程序,输入100个学生的英语成绩,统计并输出该门课程的平均分以及不及格学生的人数。 试题8 (14分) 编写程序,输入一个正整数n,计算并输出下 列算式的值。要求定义和调用函数total(n)计算1+1/2+1/3+??+1/n,函数返回值的类型是double。 n1111s???1???...? 23nk?1k 2006年春浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题1~试题6,请在答卷上各小题正确选 项的对应位置处填“√”; ⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ⑶ 考试时间为90分钟; 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 求 1 + 2/3 + 3/5 + 4/7 + 5/9 + ? 的前20项之和。 运行示例: sum = 11.239837 【程序】 #include int i, b = 1; double s; (1) ; for(i = 1; i <= 20; i++){ s = s + (2) ; 共76页 第18页 (3) } printf( (4) , s); } 【供选择的答案】 (1) A、s = 0 C、s = -1 (2) A、i/b (3) A、; C、i/2*i-1 B、s = 1 D、s = 2 B、double(i)/double(b) D、(double)i/(double)b B、b = 2 * i – 1; C、b = 1.0 * b; (4) A、\ C、\ D、b = b + 2; B、\ D、\ 试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入10个整数,将它们从大到小排序后输出。 运行示例: Enter 10 integers: 1 4 -9 99 100 87 0 6 5 34 After sorted: 100 99 87 34 6 5 4 1 0 -9 【程序】 #include { int i, j, t, a[10]; printf(\ for(i = 0; i < 10; i++) scanf( (5) ); for(i = 1; i < 10; i++) for( (6) ; (7) ; j++) if( (8) ){ t = a[j]; a[j] = a[j+1]; a[j+1] = t; } printf(\ for(i = 0; i < 10; i++) printf(\ printf(\} 【供选择的答案】 (5) A、\、\ C、\ D、\ (6) A、j = 0 B、j = 1 共76页 第19页 C、j = i D、j = i - 1 (7) A、j > i B、j < 9 - i D、j > i - 1 D、a[i] < a[j] C、j < 10 - i (8) A、a[i-1] < a[i] B、a[j+1] < a[j+2] C、a[j] < a[j+1] 试题3(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个字符串和一个正整数m,将该字符串中的前m个字符复制到另一个字符串中,再输出后一个字符串。 运行示例1: Enter a string: 103+895=? Enter an integer: 6 The new string is 103+89 运行示例2: Enter a string: 103+895=? Enter an integer: 60 The new string is 103+895=? 运行示例3: Enter a string: 103+895=? Enter an integer: 0 The new string is 【程序】 #include { char s[80], t[80], i, m; printf(\ gets(s); printf(\ scanf(\ for(i = 0; (10) ; i++) (11) ; (12) printf(\puts(t); } 【供选择的答案】 (9) A、ctype.h C、stdio.h (10) A、i < m B、math.h D、string.h B、s[i]!= '\\0' B、t[i] = s[i] D、s[i]!= '\\0' || i < m C、s[i]!= '\\0' && i < m (11) A、*s++ = *t++ 共76页 第20页 C、*t++ = *s++ D、s[i] = t[i] B、; D、*++t = '\\0'; (12) A、t[i] = '\\0'; C、*++s = '\\0'; 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include { int s, x1, y1, z1, x2, y2, z2; printf(\ scanf(\s = f(x2, y2, z2) - f(x1, y1, z1); printf(\} f(int x, int y, int z) { int k, n; int tab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; n = (x % 4 == 0 && x % 100 != 0 || x % 400 == 0); for(k = 1; k < y; k++) z = z + tab[n][k]; return z; } (13) 程序运行时,输入1 0 0 0 0 0,输出 (13) 。 A、29 A、29 A、29 A、29 B、28 B、28 B、28 B、28 C、0 C、0 C、0 C、0 D、-1 D、-1 D、-1 D、-1 (14) 程序运行时,输入0 0 1 0 0 0,输出 (14) 。 (15) 程序运行时,输入2000 2 1 2000 3 1,输出 (15) 。 (16) 程序运行时,输入1981 2 1 1981 3 1,输出 (16) 。 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 # include { int a = -1, b = 1; void f1(int x, int y), f2(int *x, int *y); void f3(int *x, int *y), f4(int x, int y); f1(a, b); 共76页 第21页 printf(\ a = -1, b = 1; f2(&a, &b); printf(\ a = -1, b = 1; f3(&a, &b); printf(\ a = -1, b = 1; f4(a, b); printf(\} void f1(int x, int y) { int t; t = x; x = y; y = t; } void f2(int *x, int *y) { int t; t = *x; *x = *y; *y = t; } void f3(int *x, int *y) { int *t; t = x; x = y; y = t; } void f4(int x, int y) { int *t = malloc(sizeof(t)); *t = x; x = y; y = *t; } (17) 程序运行时,第1行输出 (17) 。 A、(1, -1) B、(-1, 1) A、(1, -1) B、(-1, 1) A、(1, -1) B、(-1, 1) A、(1, -1) B、(-1, 1) C、(-1, -1) C、(-1, -1) C、(-1, -1) C、(-1, -1) D、(1,1) D、(1,1) D、(1,1) D、(1,1) (18) 程序运行时,第2行输出 (18) 。 (19) 程序运行时,第3行输出 (19) 。 (20) 程序运行时,第4行输出 (20) 。 试题6(每小题3分,共12分) #include void filldeck(struct card *wdeck, char *wface[],char *wsuit[]) { int i; for (i = 0; i < 4; i++){ 共76页 第22页 wdeck[i].face = wface[i%2]; wdeck[i].suit = wsuit[i/2]; } } void deal(struct card *wdeck) { int i; for (i = 0; i < 4; i++) printf(\} void main() { struct card deck[4]; char *face[]={\ char *suit[]={\ filldeck(deck,face,suit); deal(deck); } (21) 程序运行时,第1行输出 (21) 。 A、(K of Heart) B、(Q of Heart) C、(K of Club) D、(Q of Club) (22) 程序运行时,第2行输出 (22) 。 A、(K of Heart) B、(Q of Heart) C、(K of Club) D、(Q of Club) (23) 程序运行时,第3行输出 (23) 。 A、(K of Heart) B、(Q of Heart) C、(K of Club) D、(Q of Club) (24) 程序运行时,第3行输出 (24) 。 A、(K of Heart) B、(Q of Heart) C、(K of Club) D、(Q of Club) 试题7 (14分) 编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。 运行示例: Enter scores: 88 71 68 70 59 81 91 42 66 77 83 0 >=85:2 60-84:7 <60 2 试题8 (14分) 编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。 s? ?k!k?1n1共76页 第23页 运行示例: Enter n: 5 sum = 1.71667 2005年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将试题一至试题四的答案涂在答题卡上,将试题五的答案填写在答卷上,否则作无 效处理; ⑵ 请将你的准考证号的后四位填写在答卷右下角的指定位置内; ⑶ 考试时间为120分钟。 试题一、判断题(每题1分,共10分) 说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1)不同类型的变量在内存中占用存储空间的大小都是一样的。 (2)程序调试就是找出并改正C源程序中的语法错误。 (3)表示数学式3 (7)表达式 (1.23 << 2)符合C语言语法。 (8)与float型数据相比,double型数据的精度高,取值范围大。 (9)在C语言中,表达式(010+2)的值是10。 (10)do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。 试题二、单选题(每题2分,共20分) (11) 若x是double型变量,n是int型变量,执行 (11) ,并输入3 1.25后,x=1.25, n=3。 A、scanf(\ B、scanf(\D、scanf(\ C、scanf(\ 是 (12) 。 A、(x%3 != 0) || (y%3 != 0) B、(x%3 != 0) && (y%3 != 0) D、(x%3 == 0) && (y%3 == 0) B、x != 0 C、(x%3 == 0) || (y%3 == 0) A、x == 0 C、x == 1 int count = 0, x, y, z; for(x = 1; x <= 2; x++) for(y = 1; y <= 3; y++) for(z = 1; z <= 4; z++) count++; printf(\ 共76页 第24页 (12) 若变量已经被正确定义,为表示“变量x和y都能被3整除”,应使用的C表达式 (13) while( (13) ) 等价于while(x)。 D、x != 1 (14) 下列程序段的输出结果是 (14) 。 A、10 C、24 A、p=&(x+1); C、p=&x+1; B、9 D、0 B、p=&x; (15) 若变量已经被正确定义,则语句 (15) 是不正确的。 D、p=&x,p++; (16) 设变量定义如下,则表达式 (16) 是正确的。 struct student { int num; char name[20]; float score; } stud[10]; A、stud[2]=stud[1]+3 C、stud[1]=stud[1]-stud[2] int f(int n) { if(n>2) return f(n-1)+n; else return n; } A、9 B、10 C、2 D、4 (18) 不正确的赋值或赋初值的方式是 (18) 。 A、char *p=\ B、char s[10]= \D、char s[5]={'h', 'e', 'l', 'l', 'o'}; C、char s[10]; s=\ B、stud[1]==stud[2] D、stud[1]=stud[2] (17) 对于以下递归函数f,调用函数f(4),其返回值是 (17) 。 (19) 若定义FILE *fp; 则文件指针fp 指向 (19) 。 A、文件在磁盘上的读写位置 B、文件在缓冲区上的读写位置 C、整个磁盘文件 struct{ int len; char *str; }*p; A、*p++->str C、*p->(str++) B、(*p->str)++ D、*(p->str)++ D、文件类型结构体 (20) 设变量定义如下,则表达式 *p->str++ 等价于 (20) 。 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1 【程序说明】 求 2/1 + 3/2 + 5/3 + 8/5 + ? 的前10项之和。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子) 【程序】 #include 共76页 第25页 { int i, a = 1, b = 1, t; (21) ; for(i = 1; i <= 10; i++){ t = a; b = t; } printf(\} (21) A、int y = 0 (22) A、a = b B、int y D、double y B、b = a + b D、b = a B、y + a/b D、1.0*a/b C、double y = 0 C、a = a + b (23) A、y + 1.0*a/b C、a/b 程序2 【程序说明】 读入一批正整数(以零或负数为结束标志),输出其中的素数。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】 #include \#include \void main( ) { int x; int prime(int m); scanf(\ while( (24) ){ if(prime(x)) printf(\ scanf(\ } } int prime(int m) { int k, n, res; if(m == 1) return 0; res = 1; n = (int)sqrt(m); for(k = 2; k <= n; k++) if(m%k == 0){ (25) ; break; } 共76页 第26页 (22) ; y = (23) ; return (26) ; } (24) A、x < 0 (25) A、res = 1 (26) A、1 程序3 【程序说明】 输入1000个整数,用选择法将它们从小到大排序后输出。 【程序】 #include { int i, a[1000]; for(i = 0; i < 1000; i++) scanf(\ (27) ; for(i = 0; i < 1000; i++) printf(\ printf(\} void sort( (28) ) { int i, index, k, t; for(k = 0; k < n-1; k++){ index = (29) ; for(i = k + 1; i < n; i++) if( (30) ) index = i; t = a[index]; a[index] = a[k]; a[k] = t; } } (27) A、sort(a[ ], 1000) B、sort(a, 1000) C、sort(a) (28) A、int a, int n B、int a[] (29) A、k B、0 (30) A、a[i] ≤a[index] B、a[i] ≥ a[index] C、n B、x >= 0 B、res = 0 C、x <= 0 C、0 D、x > 0 C、res = -1 D、res = 2 B、res D、-1 D、sort(a[1000]) D、int *a, int n D、i C、int *a, int *n C、a[i] a[index] 试题四、程序阅读题(每空2分,共20分) 说明:阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1 #include \void main( ) { int j, k, n = 3, temp, sum = 0; int a[6][6]; for(k = 0; k < n; k++) for(j = 0; j < n; j++) a[k][j] = k * n + j; 共76页 第27页 for(k = 0; k < n; k++) sum = sum + a[k][k]; printf(\ for(k = 0; k < n; k++) sum = sum + a[k][n-k-1]; printf(\ } (31) 程序运行时,第1行输出 (31) 。 A、15 B、12 C、3 D、0 (32) 程序运行时,第2行输出 (32) 。 A、30 B、24 C、 15 程序2 #include while((ch = getchar()) != '\\n'){ if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch; putchar(ch); } } (33) 程序运行时,输入ABC,输出 (33) 。 A、abc B、zyx C、ZYX (34) 程序运行时,输入xyz,输出 (34) 。 A、XYZ B、ABC C、cba (35) 程序运行时,输入a+Z,输出 (35) 。 A、a+a B、z+z C、Z+a 程序3 #include if(number == digit) count++; number = number / 10; } return count; } void main( ){ printf(\ printf(\ } (36) 程序运行时,第1行输出 (36) 。 共76页 第28页 D、12 D、ABC D、xyz D、a+A A、count=0 A、count=3 程序4 B、count=1 B、count=9 C、count=3 D、count=5 (37) 程序运行时,第2行输出 (37) 。 C、count=1 D、count=5 #include for( i = 1; i <= 5; i++) { scanf(\ if(choice == -1) break; switch (choice) { case 1: price=2.5; break; case 2: price=1.5; break; case 3: price=4.5; break; case 4: price=3.5; break; default: price=0.0; break; } printf(\ } printf(\} (38) 程序运行时,输入3 7 -1,第1行输出 (38) 。 A、0.0 A、0.0 A、-1.0 B、3.0 C、4.5 D、Thanks B、3.0 C、7.0 D、Thanks D、Thanks (39) 程序运行时,输入3 7 -1,第2行输出 (39) 。 (40) 程序运行时,输入3 7 -1,第3行输出 (40) 。 B、0.0 C、7.0 试题五、程序设计题(每题10分,共30分) 1、输入一个职工的月薪salary,计算并输出应交的个人所得税tax = rate * (salary-850)。其中rate的计算方式如下: 当 salary ≤850 时,rate = 0; 当 850 < salary ≤ 1350 时,rate = 5%; 当 1350 < salary≤ 2850 时,rate = 10%; 当 2850 < salary ≤ 5850 时,rate = 15%; 当 5850 < salary 时,rate = 20%。 2、输出一张平方根表(如下表所示),x的取值范围是[5, 1000],请调用库函数sqrt()计算平方根。 x 5 6 … 999 sqrt(x) 2.24 2.45 … 31.61 共76页 第29页 1000 31.62 3、输入一个字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数。 2005年春浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴考生应将试题一至试题三的答案涂写在答题卡上,将试题四、试题五的答案填写在答卷上, 否则作无效处理; ⑵请将你的准考证号的后四位填写在答卷右下角的指定位置内; ⑶考试时间为120分钟。 试题一、判断题(每题1分,共10分) 说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1) 在C 语言中,常量和变量都有数据类型。 (2) C 语言的运算符只有单目运算符和双目运算符两种。 (3) 若变量已正确定义,表达式 x + y = z符合C语言语法。 (4) C编译器可以找出C源程序中所有的语法错误和逻辑错误。 (5) 表达式3 * 5 / 2 和表达式3 / 2 * 5等价。 (6) 表达式m = n++ 的求解顺序是先计算m = n,再计算n = n + 1。 (7) 变量名fahr和Fahr代表两个不同的变量。 (8) 若表达式sizeof(unsigned)的值为2,则unsigned 类型数据能表示的最大整数为216-1。 (9) break语句只能用于循环结构中。 (10) while语句先判断循环条件,所以循环体有可能一次也不执行。 试题二、单选题(每题2分,共20分) (11) 执行scanf(\,输入 (11) 后,money=1000,year=3,rate=0.025。 A、1000 3 0.025 C、1000, 3, 0.025 B、1000 0.025 3 D、1000, 0.025, 3 (12) 判断变量ch 是英文字母的表达式为 (12) 。 A、( 'a' <= ch <= 'z') || ( 'A' <= ch <= 'Z') B、(ch >= 'a' && ch <= 'z') && ( ch >= 'A' && ch <= 'Z') C、(ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z') D、( 'A' <= ch <= 'z') && ( 'A' <= ch <= 'z') (13) while( (13) ) 等价于while(!x)。 A、x == 1 B、x == 0 C、x != 0 D、x != 1 (14) 以下程序段输出字符串str,其中循环条件str[i] != '\\0' 还可以写成 (14) 。 char str[80]; for(i = 0; str[i] != '\\0'; i++) putchar(str[i]); A、str[i] != NULL B、i < 80 共76页 第30页 C、!(str[i] = '\\0') D、i <= 80 (15) 设变量定义为:int n, *p; char ch, *q, *g;,则语句 (15) 是不正确的。 A、p = &n; g = q = &ch; B、p = &n; q = &ch; C、p = &n; g = &ch; D、p = &n; q = &ch; g = p; (16) 设变量定义如下,则对其中的结构分量num正确的引用是 (16) 。 struct student { int num; char name[20]; float score; } stud[10]; A、stud[1].num = 10; B、student.stud.num = 10; C、struct.stud.num = 10; D、struct student.num = 10; (17) 对于以下递归函数f,调用函数f(2, '1', '2', '3')的输出结果是 (17) 。 void f(int n, char a, char b, char c) { if (n == 1) printf(\ else{ f(n-1, a, c, b); printf(\ f(n-1, c, b, a); } } A、1->2#1->3#3->2# B、3->2#1->2#1->3# C、'1'->'3'#'3'->'2'#'1'->'2'# D、1->3#1->2#3->2# (18) 下列程序段的输出结果是 (18) 。 int t, a[3] = {10, 5, 1}; int *p; for(p = a; p < a+3; p++) t = t + *p; printf(\A、15 B、16 C、10 D、不确定 (19) 设变量定义为:int *p[3], a[3];, (19) 是正确的赋值。 A、p = &a[0] B、*p = **a C、p[0] = a D、**p = a (20) 对于以下的变量定义,语句 (20) 在语法和语义上都是正确的。 struct node { float x, y; char s[10]; } point = {1, 2, \ A、*p = point; B、p = &point; C、point = p; D、p->x = point.y; 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 共76页 第31页 程序1、 【程序说明】 根据下式计算s的值,要求精确到最后一项的绝对值小于10–6。 s?1?1?1?1?? 357【程序】 #include { int flag = 1, t = 1; (21) ; while( (22) ){ item = flag * 1.0 / t; s = s + item; (23) ; t = t + 2; } printf ( \} (21) A、double item = 2, s = 0; C、double item = 1, s = 1; (22) A、item < 1E-6 C、fabs (item) < 1E-6 (23) A、flag = -1 C、flag = -flag; 2、程序2 【程序说明】 B、double item = 0, s = 0; D、double item = 3, s = 1; B、item >= 1E-6 D、fabs (item) >= 1E-6 B、s = -s D、t = -t 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,?,18=7+11。将6~100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】 #include \#include \void main( ) { int i, k; int prime(int m); for (i = 6; i <= 100; i = i+2 ) for(k = 3; k <= 50; k++) if( (24) ){ printf(\ break; } } 共76页 第32页 int prime(int m) { int k,n; if(m == 1) return 0; n = (int)sqrt(m); for(k = 2; k <= n; k++) (25) ; (26) ; } (24) A、prime(i) C、prime(k) && prime(i-k) (25) A、if(m%k != 0) return 0 C、if(m%k == 0) return 1 (26) A、return 0; C、else return 0; 程序3、 【程序说明】 B、prime(i) && prime(k) D、prime(k) B、if(m%k == 0) return 0 D、if(m%k != 0) return 1 B、return 1; D、else return 1; 输入一个字符串(少于80个字符),滤去所有的非八进制字符后,组成一个新字符串(八进制形式),然后将其转换为十进制整数后输出。函数stoi(str) 将八进制形式的字符串str转换为十进制整数,例如,stoi(\的值为10(八进制12对应十进制10)。 【程序】 #include int stoi(char *str); gets(s); for(i = k = 0; s[i] != '\\0'; i++) if(s[i] <= '7' && s[i] >= '0') (27) ; (28) ; printf(\ (29) ); } int stoi(char *str) { int i, n = 0; for(i = 0; str[i] != '\\0'; i++) (30) ; return n; } (27) A、s[i] = s[k]; i++ C、s[k] = s[i], k++ (28) A、s[i] != '\\0' C、s[i] = '\\0' (29) A、stoi(s) B、s[k] = s[i] D、s[i] = s[k] B、s[k] != '\\0' D、s[k] = '\\0' B、s 共76页 第33页 C、stoi(s[i]) (30) A、n = n * 8 + (str[i] - '0') C、n = n * 8 + str[i] D、n B、n = n * 10 + (str[i] - '0') D、n = n + str[i] 试题四、程序阅读题(每题5分, 共20分) 说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 1、 程序1 #include { int x = 10023; do{ printf(\ x = x / 10; }while (x != 0); } 2、 程序2 #include { int i, x = 1, y = 1; for (i = 1; i <= 5; i++){ x = x + y; y++; printf(\ } } 3、 程序3 # include { int x = 1, y = 1; void f(int m,int n, int *px,int *py); f(2004, 70, &x, &y); printf (\ f(2005, 98, &x, &y); printf (\} void f(int m,int n, int *px,int *py) { int k, flag; int tab [2][13]= { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, }; flag = m%4==0 && m% 100!= 0 || m@0==0; for ( k=1; n>tab[flag][k]; k++) 共76页 第34页 n = n - tab [flag][k]; *px = k; *py = n; } 4、 程序4 /* 假设读写文件的操作能正常完成 */ #include { char ch, *s = \ int x; FILE *in; if ((in = fopen(\ while(*s != '\\0') fputc(*s++,in); fclose(in); if((in=fopen(\ while((ch=fgetc(in)) !=EOF){ switch (ch) { case 'A': x = 95; break; case 'B': x = 85; break; case 'C': x = 75; break; case 'D': x = 60; break; default: x = 0; break; } printf(\ } fclose(in); } 试题五、程序设计题(每题10分,共30分) 1. 输入x,计算并输出下列分段函数 f(x) 的值。可以调用数学库函数:平方根函数sqrt(),绝对 值函数fabs()和幂函数pow()。 ?|x|??x?1f(x)??3?(x?2)?2x?5?x?00?x?22?x?4x?4 2. 输出一张摄氏-华氏温度转换表,摄氏温度的取值区间是[ -100℃, 150℃ ],温度间隔5℃。要 求定义和调用函数ctof(c),将摄氏温度C转换为华氏温度F,计算公式:F = 32 + C * 9 / 5。 3. 输入一个正整数 n (1≤n≤6),再输入一个n 行 n 列的矩阵,找出该矩阵中绝对值最大的元素 以及它的行下标和列下标。 共76页 第35页 4. 2004年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将试题一至试题三的答案涂在答题卡上,将试题四、试题五的答案填写在答卷上, 否则作无效处理; ⑵ 请将你的准考证号的后四位填写在答卷右下角的指定位置内; ⑶ 考试时间为120分钟。 试题二、语言基础题(本题共30分) (一)判断题(每题1分,共10分) 说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (21) C 语言程序的三种基本结构是顺序、选择和嵌套。 (22) 在C 语言程序中,在函数内部定义的变量称为全局变量。 (23) 运算符“=”和“&=”的优先级相同。 (24) '%f' 是不正确的字符常量。 (25) 运算符“+”不能作为单目运算符。 (26) 如果运算符“*”和“/”都是右结合的,则表达式10 * 6 / 5 的值是10。 (27) s(s-a)(s-b)(s-c) 是合法的C语言表达式。 (28) 表达式 !!6的值是6。 (29) 表达式 ~(~2<<1)的值是5。 (30) 对于变量定义:int a[10], *p=a+8; 数组a的最后一个元素是p[1]。 (二)单选题(每题2分,共20分) (31) 执行语句 printf(\ (26) \, \A\); 将得到出错信息。 A、%u B、%s C、%e D、%d (32) 设c是一个字符变量,求解表达式 (27) 后,c的值不是1就是0。 A、c=getchar()!='\\n' B、(c=getchar())!='\\n' C、c = '1' D、c = EOF (33) 下列定义中, (28) 定义的变量可以存放 -123.4。 A、long a; B、unsigned b; C、int d; D、float c; (34) 对于变量定义:char *pp[100], pp是一个 (29) 。 A、函数 B、数组元素 C、指针变量 D、数组 (35) 下列程序段的输出结果是 (30) 。 char *st[ ]={\SUN\, \MOON\, \STAR\, \X\}; printf(\(%s, %c)\, *(st+1)+1, *(*(st+2)+2)+2); A、(MOON,M) B、(OON,C) C、(OON,Q) D、(OON, A) (36) 对于以下的变量定义,表达式 (31) 是不正确的。 struct node { float x, y; char s[10]; } point, *p=&point; 共76页 第36页 A、p->x=2.0 C、point.x=2.0 B、(*p).y=3.0 D、p->s=\a\ (37) 下列程序段的输出结果是 (32) 。 int a = 10, b=0; if ( a > 15 ) b = 1; else if ( a < 2 ) b = 2; else b = 3; printf(\%d\, b); A、3 B、2 C、1 D、0 (38) 只有当输入的数据满足1<=month<=12时,循环语句 (33) 才能正常退出。 A、do{ scanf(\%d\, &month); } while (month >= 1 || month <= 12); B、do{ scanf(\%d\, &month); } while (month >= 1 && month <= 12); C、do{ scanf(\%d\, &month); } while (month < 1 || month > 12); D、do{ scanf(\%d\, &month); } while (month <= 1 || month >= 12); (39) 调用函数f(27)的输出结果是 (34) 。 void f(int n) { if(n<5) printf(\%d\, n); else{ printf(\%d\, n%5); f(n/5); } } A、102 B、2 01 C、21 (40) 下列程序段的输出结果是 (35) 。 int k=3, j=4; int *p=&k, *q=&j; (*p)--; j=k; (*q)--; printf(\(%d, %d)\, k, j); A、(2,1) B、(1,2) C、(4,3) 共76页 第37页 D、20 D、(3,3) 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序(段),在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、 【程序说明】 输入一批以 -1结束的整数,求偶数和。 【程序】 #include scanf(\%d\, &x); (36) { if( (37) ) sum=sum+x; (38) ; } printf(\sum=%d \, sum); } (36) A、while(x == -1) B、while(x != -1) C、if(x == -1) D、if(x != -1) (37) A、x==2 B、x%2==2 C、x%2==0 D、x/2==0 (38) A、scanf(\ B、scanf(\ C、sum=0 D、x=sum 2、程序2 【程序说明】 a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵, 输出“YES”, 否则, 输出“NO”。(下三角矩阵,即主对角线以上的元素都为0, 主对角线为从矩阵的左上角至右下角的连线) 【程序】 #include { int flag, i, k; int a[3][3]; for (i=0;i<3;i++) for (k=0;k<3;k++) scanf(\%d\,&a[i][k]); (39) ; for (i=0;i<3&&flag;i++) for (k=i+1; k<3&&flag;k++) if( (40) ) (41) ; if(flag) printf(\YES\\n\); else printf(\NO\\n\); } 共76页 第38页 (39) A、flag=0 B、flag==0 (40) A、a[k][i]!=0 B、a[i][k]==0 (41) A、flag=0 B、flag==0 程序3、 C、flag==1 C、a[i][k]!=0 C、flag==1 D、flag=1 D、a[k][i]==0 D、flag=1 【程序说明】 输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】 #include for(k=0; str[k]!= '\\0'; k++) if ( (42) ) (43) ; puts(str); } (42) A、'A'<=str[k]<='Z' B、str[k]> 'A'&&str[k]< 'Z' C、str[k]>= 'A'&&str[k]<= 'Z' D、str[k]>= 'A'||str[k]<= 'Z' (43) A、str[k] = str[k] – 32 B、str[k] = str[k] - 'a' + 'A' C、tolower(str[k]) D、str[k] = str[k] - 'A' + 'a' 程序4、 【程序说明】 请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。 【程序】 int f1(char s[ ]) int f2(char *s) { int k=0; { char *ss; (44) ; while(s[k]!= '\\0') while(*s!='\\0') k++; s++; return k; return (45) ; } } (44) A、s=ss B、ss=s C、ss=NULL D、s=NULL (45) A、ss-s B、s-ss-1 C、s-ss D、s-ss+1 试题四、程序阅读题(每题5分, 共15分) 说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 5、 程序1 # include 共76页 第39页 s=0; f=1; for(k=1; k<=3; k++){ for(j=1; j printf(\%.0f#\,s); } } 6、 程序2 #include { long fun(long number); printf(\%ld\\n\, fun(-974)); } long fun(long number) { int flag; long res = 0; flag = number<0 ? -1 : 1; if(number<0) number = - number; while(number!=0){ res = res*10 + number; number /= 10; printf(\%d#\, res); } return flag*res; } 7、 程序3 #include char *string1 = \IF YOU FAIL TO PLAN\; char *string2 = \YOU PLAN TO FAIL\; if ((in = fopen(\file1.txt\,\w\)) != NULL) while(*string2 != '\\0') fputc(*string2++,in); fclose(in); if((in=fopen(\file1.txt\,\r\)) != NULL) while(fgetc(in)!= EOF) putchar(*string1++); fclose(in); } 共76页 第40页 试题五、程序设计题(每题10分,共20分) 1、输入10个整数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。 2、输入一个正实数x和一个正整数n,求下列算式的值。要求定义和调用2个函数:fact(n)计算n的阶乘;mypow(x, n)计算x的n次幂(即x),2个函数的返回值类型都是double。 nx2x3x4n?1xx????...?(?1) 2!3!4!n!n 2003年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:⑴ 考生应将试题一至试题三的答案涂在答题卡上,将第四、五题的答案填写在答卷 上,否则作无效处理; ⑵ 请将你的准考证号的后四位填写在答卷右下角的指定位置内; ⑶ 考试时间为120分钟。 试题二、语言基础题(本题共34分) (一)判断题(每题1分,共10分) 说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (16) C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。 (17) 在C程序中,函数既可以嵌套定义,也可以嵌套调用。 (18) 在 C 程序中,APH 和 aph 代表不同的变量。 (19) 表达式0195是一个八进制整数。 (20) 表达式 3.14%2 不符合C语言语法。 (21) 设变量定义为 char cc[ ]=\12\\n345\ ,则表达式 sizeof(cc) 的值是7。 (22) 执行 printf (\%d\,'M'-'A'+'a' -'m'); ,输出0。 (23) 表达式 !x 等价于x != 1。 (24) 表达式 (z=0, (x=2)||(z=1),z) 的值是1。 (25) 执行 printf(\%x\,\12345\+1);,输出12346。 (二)单选题(每题2分,共24分) (26) 运算符 (26) 的优先级最高。 A、[ ] B、+= C、? : D、++ (27) 若a是整型变量,表达式 ~(a ^ ~a ) 等价于 (27) 。 A、~a B、1 C、0 D、2 (28) 下列程序段的输出结果是 (28) 。 #define MA(x, y) ((x)*(y)) printf(\ A、30 B、23 C、15 D、1 (29) 设有整型变量a, b,c,其中a,b的值分别为10与20,计算表达式“c=(a%2==0)?a:b” 后,c的值为 (29) 。 A、0 B、5 C、10 D、20 共76页 第41页 (30) 下列程序的输出结果是 (30) 。 #include { int y; double d=3.4, x; x=(y=d/2.0)/2; printf(\ } A、(0.00, 1) B、(0.85, 1.7) C、(0.50, 1) D、以上都不对 (31) 程序段 (31) 的功能是将变量u、s中的最大值赋给变量t。 A、if (u>s) t=u; t=s; B、t=u; if (t>s) t=s; C、if (u>s) t=s; else t=u; D、t=s; if (u>t) t=u; (32) 对于以下递归函数f,调用 f(3) 的返回值是 (32) 。 int f(int n) { if(n) return f(n-1) + n; else return n; } A、10 B、6 C、3 D、0 (33) 下列程序段的输出结果是 (33) 。 int k=1; switch(k) { case 1: putchar('P'); case 2: case 3: putchar('Q'); break; case 4: putchar('R'); default: putchar('S'); } A、P B、PQ C、PQR D、PQRS (34) 下列程序的输出结果是 (34) 。 void main() { int k; for(k=1; k<5; k++) { if(k%2) printf(\ printf(\ } } A、#*#* B、*#*# A、&a[2]-2 A、p='\\0' B、5 C、## D、以上都不对 (35) 设变量定义为 int a[3]={1, 4, 7}, *p=&a[2]-2;,则*p的值是 (35) 。 C、2 D、1 C、p=NULL D、p=EOF (36) 若变量已正确定义, (36) 不能使指针p成为空指针。 B、p=0 (37) 下列程序的输出结果是 (37) 。 #include 共76页 第42页 int p(int *y) { ++*y; return x-1; } void main() { int y; y=p(&x); printf(\ } A、(-1, 0) B、(1, -1) C、(1, 0) D、出错 试题三、程序填空题(每空2分,共16分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、 【程序说明】 输出1~1000之间所有满足各位数字的立方和等于它本身的数。 【程序】 #include { int digit, k, m, s; for (k=1; k<=1000; k++){ (38) while(m!=0){ digit=m; s=s+digit*digit*digit; (39) ; } if( (40) ) printf(\%d \, s); } } (38) A、s=0; B、m=k; s=0; C、m=k; D、k=m; s=0; (39) A、m=m/10 B、m=m C、m=m D、m=k/10 (40) A、m!=s B、m==s C、k!=s D、k==s 2、程序2 【程序说明】 输入10个整数,将它们存入数组a中,再输入一个数x,然后在数组中查找x,如果找到,输出相应的下标(如有多个元素与x相等,只要输出下标值最小的那个元素的下标),否则,输出“Not Found”。 【程序】 #include { int k, sub, x; int a[10]; 共76页 第43页 for(k=0; k<10; k++) scanf(\%d\, &a[k]); printf(\Input x\\n\); scanf(\%d\, &x); sub=-1; for(k=0; k<10; k++) if(a[k]==x) (41) if( (42) ) printf(\Index is %d\\n\, sub); else printf(\Not Found\\n\); } (41) A、sub=k; B、break; C、{ sub=k; break;} (42) A、sub!=-1 B、sub!=0 C、sub==-1 程序3、 【程序说明】 D、sub=k; break; D、sub==0 当前目录下存放着文本文件from.txt,将其中除数字以外的内容显示在屏幕上。 【程序】 #include { FILE *fr; int ch; if( (43 ) ) { printf(\ Can not open file--> form.txt \ ); exit(0); } while(!feof(fr)){ (44) ; if( (45) ) putchar(ch); } fclose(fr); } (43) A、(fr=fopen(\ B、(fr=fopen(\ C、fr=fopen(\ D、fr=fopen(\ (44) A、ch=getchar(fr) C、ch=fgetc(fr) B、ch=fgetc() D、ch=getchar() B、ch<'0'&&ch>'9' D、ch<'0'||ch>'9' (45) A、ch>='0'||ch<='9' C、ch>='0'&&ch<='9' 试题四、程序阅读题(每题5分, 共15分) 说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 8、 程序1 共76页 第44页 #include int a[8]={15,60,75,73,92,87,64,79}, s[10]; for(k=0; k<10; k++) s[k]=0; for(i=0; i<8; i++){ k=a[i]/10; s[k]++; } m=s[0]; k=1; while (k<10){ if(s[k]!=0) printf(\%d#\, s[k]); if (s[k]>m) m=s[k]; k++; } printf(\%d\, m); } 2、程序2 #include int a[3]={3, 4, 5}; for(j=0; j<3; j++){ for(k=0; k<3; k++) printf(\%d \,a[(j+k)%3]); printf(\#\); } } 3、程序3 #include char s[10]= \298h01\; n=0; for(i=0; s[i]!= '\\0'; i++) if(s[i]<= '9'&&s[i]>= '0') n=n*10+(s[i]- '0'); else break; printf(\%d\\n\, n); } 试题五、程序设计题(每题10分,共20分) 1、输入10个整数,求它们的平均值,并输出大于平均值的数据的个数。 2、 输入两个正整数m和n(m 共76页 第45页 答案 2008年秋计算机等级考试(二级C)答案 试题1~6 A,A,B,B A,B,C,D C,C,D,D D,C,B,A A,B,C,D D,C,B,A 试题7: 1、#include 2007年春计算机等级考试(二级C)参考答案 试题1~6 B,A,C,C D,C,B,A A,B,B,D A,A,D,B D,C,C,B C, A,A,D 试题7: 3、double cal_power; 1、 Cal_power(double x, int n) double cal_money; { void main() Double k=1; {int i,j; Int i; Double loan,rate,money; If(n!=0) Printf(“input loan,rate\\n”); { Scanf(“%lf%lf”,&loan,&rate); for(i=1;i 2006年秋计算机等级考试(二级C)参考答案 试题1~6:D,A,B,C C,C,B,B C,D,A,B B,C,A,D B,D,C,A D,D,A,A 试题7: 试题8: #include 2006年春计算机等级考试(二级C)参考答案 试题1~6 :ADDCD ACCDC BACDA BBABB ABCD 试题7 试题8 #include 2005年秋计算机等级考试(二级C)参考答案 试题1 : BBBBA BBAAA 试题2~4 :ADBCA DACBD CCADB BBDAC BBBDA CCCAD 试题五、程序设计题(每题10分,共30分) 1、 2、 #include #include 2005年春计算机等级考试(二级C)参考答案 试题一:A,B,B,B,B,A,A,A,B,A 试题二:B,C,B,A,D,A, D,D,C,B 试题三:1、A,D,C 2、C,B,B 3、C,D,A,A 试题四: 1、3#2#0#0#1# 2、2#4#7#11#16# 3、3#10#4#8# 4、95#75#0#60#85# 试题五: 1、 2 #include 2004年秋计算机等级考试 (二级C) 参考答案 试题1~2:ABAAA 试题3:1、BCA ABBAB CCDDB DACBA 2、DCA 3、CD 4、BA 共76页 第49页 试题四、程序阅读题(每题5分,共15分) 1 2 3 1#3# 21# 错1项扣2分 4#47#479#-479 错1项扣2分 IF YOU FAIL TO PL 错1项扣2分 试题五、编程题(每题10分,共20分) 1、 #include 试题1~2:ABAAB 试题3:1、BAD 试题4、 1、1#2#3#1#1#3 2、3 4 5 #4 5 3 #5 3 4 # 3、298 共76页 第50页 #include ACBCA 3、BCD DBBAD AC 2、DA
正在阅读:
计算机二级c语言01-08
2016河西学院英语单招测试版试题及答案01-11
中国古代文学史思考题05-06
高切坡临时安全防护措施 - 图文02-29
请假条表格02-08
人影工作计划03-28
部编版五年级下册语文期末检测卷 docx12-19
在初任公务员培训开班仪式上的讲话:牢记使命、务实担当09-07
现阶段国家法律法规关于专项施工方案编审的规定和解读 - 图文10-28
我国岩金矿床工业类型及特征04-30
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 二级
- 语言
- 计算机