为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

计算机二级c语言

2017-09-20 50页 doc 242KB 91阅读

用户头像

is_215732

暂无简介

举报
计算机二级c语言计算机二级c语言 2008年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:? 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的 对应位置上填“?”。 ? 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ? 考试时间为90分钟。 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一批学生成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级 分为三级,分别为:A(90~100)、...
计算机二级c语言
计算机二级c语言 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 void main() { int mark, a, p, f; a=p=f=0; printf(“Enter scores:”); while ( (1) ){ if (mark>=90) a++; (2) p++; (3) f++; (4) } printf(“A:%d; P:%d; F:%d;\n”,a,p,f); } 【供选择的答案】 (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的各位数字的立方和是: 3331+5+3=153 运行示例: 153 370 371 407 【程序】 #include void main() { int digit,, j, sum, x; for(j=1; j<1000;j++){ (5) (6) do{ (7) sum=sum+digit*digit*digit; x=x/10; }while (8) ; if(sum==j) printf(“%d ”,sum); } } 【供选择的答案】 (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%10; 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 (9) void sort( (10) ) { int i, index, k, t; for(k=0; ka[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 void main() { int j, k, s1, s2; s1=s2=0; for(j=1; j<=5; j++){ s1++; for(k=1; k<=j; k++) s2++; } 共76页 第3页 printf(“%d %d”, s1, s2); } 程序2 #include void main() { int j , k, s1, s2; s1=0; for(j=1; j<=5; j++){ s1++; for(k=1, s2=0; k<=j; k++) s2++; } printf(“%d %d”,s1, s2); } 程序3 #include void main() { int j , k, s1, s2; s1=0; for(j=1; j<=5; j++){ s1++; for(k=1; k<=j; k++, s2=0) s2++; } printf(“%d %d”,s1, s2); } 程序4 #include void main() { int j , k, s1, s2; s1=0=s2; for(j=1; j<=5; j++,s1=0){ s1++; for(k=1; k<=j; k++) s2++; } printf(“%d %d”,s1, s2); } (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) 。 (16) 程序4运行时,输出 ( A. 0 15 B. 5 0 C. 5 5 D. 5 15 试题5(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 程序1 #include void main() { int i, m=15, y=-1; for(i=2; i<=m/2; i++) if(m % i= =0) y=0; else y=1; printf(“%d”,y); } 程序2 #include void main() { int i, m=15, y=-1; for(i=2; i<=m/2; i++) if(m % i= =0) {y=0; break;} printf(“%d”,y); } 程序3 #include void main() { int i, m=15, y=-1; 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 void main() { 共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) 。 (17) 程序1运行时,输出 ( 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 void main() { int k; char ch, a[10], *s[10]={“one”, “two”, “three”, “four”}; k=0; while((ch=getchar())!=?\n? && k<9) if(ch>?5? && ch void main( ) { int digit, number, power, t; printf("Enter an integer:"); scanf("%d", &number); number = number < 0 ? -number : number; power = 1; (1) while( (2) ){ power *= 10; t /= 10; }; printf("The digits are:"); while( (3) ){ digit = number / power; printf("%d " , digit); (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 #define MAXNUM 50 int getmax( (5) ) { int k, max; (6) for(k = 1; k < n; k++) if(max < array[k]) max = array[k]; return max; } void main( ) { int k, x; int mark[MAXNUM]; printf("Enter marks:"); k = 0; scanf("%d", &x); while( (7) ){ mark[k++] = x; scanf("%d", &x); } if(k > 0) printf("Max = %d\n", getmax( (8) )); else printf("No marks!\n"); } 【供选择的答案】 (5) A、int n; int array[] B、void C、int *array D、int array[],int n (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、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 void main( ) { int j, k, sum; int a[4][4]; printf("Enter an array:\n"); for(j = 0; j < 4; j++) for(k = 0; k < 4; k++) scanf("%d", &a[j][k]); sum = 0; for(j = 0; j < 4; j++) for(k = 0; k < 4; k++) if( (9) ) sum += a[j][k]; printf("sum1 = %d\n", sum); (10) for(j = 0; j < 4; j++) for( (11) ; (12) ; k++) sum += a[j][k]; printf("sum2 = %d\n", sum); } 【供选择的答案】 (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 void main( ) { int i, j, k; scanf("%d", &i); j = k = 0; if((i/10) > 0) /* 第7行 */ j = i; if((i != 0) && (j == 0)) k = i; else k = -1; /* 第12行 */ printf("j=%d, k=%d\n", j, k); } (13) 程序运行时,输入5,输出 (13) 。 A、j=0, k=5 B、j=5,k=5 C、j=0,k=-1 D、j=5,k=-1 (14) 程序运行时,输入99,输出 (14) 。 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 int k = 1; void Fun(); void main() { int j; for(j = 0; j < 2; j++) 共76页 第11页 Fun(); printf("k=%d", k); } void Fun() { int k = 1; /* 第11行 */ printf("k=%d,", k); 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 struct st{ char c; char s[80]; }; char * f(struct st t); void main( ) { int k; struct st a[4] = {{'1',"123"}, {'2',"321"}, {'3',"123"}, {'4',"321"}}; for(k = 0; k < 4; k++) printf("%s\n", f(a[k])); } 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 (23) 程序运行时,第3行输出 (23) 。 A、3 B、123 C、1 D、321 (24) 程序运行时,第4行输出 (24) 。 A、123 B、1 C、3 D、321 试题7 (28分) 某客户为购房办理商业贷款,选择了按月等额本息还款法,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month),计算如下。客户打算在5,30年的范围内选择还清贷款的年限,想得到一张“还款年限,月还款额表”以供参考。 monthraterate(1),moneyloan,,month(1)1,,rate n(1) 定义函数cal_power(x, n)计算x的n次幂(即x),函数返回值类型是double。 (2) 定义函数cal_money(loan,rate,month)计算月还款额,函数返回值类型是double,要 求调用函数cal_power(x, n)计算x的n次幂。 (3) 定义函数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 void main( ) { int digit, i, letter, other; (1) ch; 共76页 第13页 digit = letter = other = 0; printf("Enter characters: "); while( (2) != '\n') if( (3) ) letter ++; (4) (ch >= '0' && ch <= '9') digit ++; else other ++; printf("letter=%d, digit=%d, other=%d\n", letter, digit, other); } 【供选择的答案】 (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 C、else if D、if else 试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返 回number的逆序数。例如reverse(12345)的返回值是54321。 运行示例: Enter an integer: -123 After reversed: -321 【程序】 #include void main( ) { long in; long reverse(long number); printf("Enter an integer:"); scanf("%ld", &in); printf("After reversed:%ld\n", (5) ); } 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%10 B、res*10 + number%10 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 void main( ) { int j, k, sum = 0; int a[3][2]; printf("Enter an array:\n"); for(j = 0; j < 3; j++) for(k = 0; k < 2; k++) scanf("%d", (9) ); for(j = 0; j < 3; j++){ (10) for(k = 0; k < 2; k++) sum = (11) ; printf("sum of row %d is %d\n", (12) , sum); } } 共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 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) 将第6行全部删除后,程序的输出是 (16) 。 A、5 4 3 2 1 B、5 4 2 1 C、5 4 D、3 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 # include void main() { char c, s[80]= "Happy New Year"; 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) 程序运行时,输入字母p,输出 (19) 。 A、Happy New Year B、Hppy New Yer C、Hay New Year D、Happy Nw Yar (20) 程序运行时,输入字母b,输出 (20) 。 A、Happy New Year B、Hppy New Yer C、Hay New Year D、Happy Nw Yar 试题6(每小题3分,共12分) #include struct st{ int x, y, z; }; void f(struct st *t, int n); void main( ) { int k, n; struct st time; scanf("%d%d%d%d", &time.x, &time.y, &time.z, &n); f(&time, n); printf("%d:%d:%d\n", time.x, time.y, time.z); } void f(struct st *t, int n) { t->z = t->z + n; if(t->z >= 60){ t->y = t->y + t->z/60; t->z = t->z%60; } if(t->y >= 60){ t->x = t->x + t->y/60; t->y = t->y%60; 共76页 第17页 } 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..., ,1kn23k 2006年春浙江省高等学校 计算机等级考试试卷(二级C) 说明:? 考生应将所有试题的答案填写在答卷上。其中试题1,试题6,请在答卷上各小题正确选 项的对应位置处填“?”; ? 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ? 考试时间为90分钟; 试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 求 1 + 2/3 + 3/5 + 4/7 + 5/9 + „ 的前20项之和。 运行示例: sum = 11.239837 【程序】 #include void main( ) { 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 B、s = 1 C、s = -1 D、s = 2 (2) A、i/b B、double(i)/double(b) C、i/2*i-1 D、(double)i/(double)b (3) A、; B、b = 2 * i – 1; C、b = 1.0 * b; D、b = b + 2; (4) A、"sum = %d\n" B、"s = %c\n" C、"sum = %f\n" D、"s = %s\n" 试题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 void main( ) { int i, j, t, a[10]; printf("Enter 10 integers: "); 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("After sorted: "); for(i = 0; i < 10; i++) printf("%d ", a[i]); printf("\n"); } 【供选择的答案】 (5) A、"%f", a[i] B、"%lf", &a[i] C、"%s", a D、"%d", &a[i] (6) A、j = 0 B、j = 1 共76页 第19页 C、j = i D、j = i - 1 (7) A、j > i B、j < 9 - i C、j < 10 - i D、j > i - 1 (8) A、a[i-1] < a[i] B、a[j+1] < a[j+2] C、a[j] < a[j+1] D、a[i] < a[j] 试题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 #include < (9) > void main( ) { char s[80], t[80], i, m; printf("Enter a string:"); gets(s); printf("Enter an integer:"); scanf("%d", &m); for(i = 0; (10) ; i++) (11) ; (12) printf("The new string is "); puts(t); } 【供选择的答案】 (9) A、ctype.h B、math.h C、stdio.h D、string.h (10) A、i < m B、s[i]!= '\0' C、s[i]!= '\0' && i < m D、s[i]!= '\0' || i < m (11) A、*s++ = *t++ B、t[i] = s[i] 共76页 第20页 C、*t++ = *s++ D、s[i] = t[i] (12) A、t[i] = '\0'; B、; C、*++s = '\0'; D、*++t = '\0'; 试题4(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include void main( ) { int s, x1, y1, z1, x2, y2, z2; printf("Enter 6 integers:"); scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2); s = f(x2, y2, z2) - f(x1, y1, z1); printf("%d\n", s); } 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 B、28 C、0 D、-1 (14) 程序运行时,输入0 0 1 0 0 0,输出 (14) 。 A、29 B、28 C、0 D、-1 (15) 程序运行时,输入2000 2 1 2000 3 1,输出 (15) 。 A、29 B、28 C、0 D、-1 (16) 程序运行时,输入1981 2 1 1981 3 1,输出 (16) 。 A、29 B、28 C、0 D、-1 试题5(每小题3分,共12分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 # include void main ( ) { 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("(%d,%d)\n", a, b); a = -1, b = 1; f2(&a, &b); printf("(%d,%d)\n", a, b); a = -1, b = 1; f3(&a, &b); printf("(%d,%d)\n", a, b); a = -1, b = 1; f4(a, b); printf("(%d,%d)\n", a, b); } 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) C、(-1, -1) D、(1,1) (18) 程序运行时,第2行输出 (18) 。 A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) (19) 程序运行时,第3行输出 (19) 。 A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) (20) 程序运行时,第4行输出 (20) 。 A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1) 试题6(每小题3分,共12分) #include struct card{ char *face; char *suit; }; 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("(%2s of %-6s)\n", wdeck[i].face, wdeck[i].suit); } void main() { struct card deck[4]; char *face[]={"K","Q"}; char *suit[]={"Heart","Club"}; 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。 n1s,, ,1k!k 共76页 第23页 运行示例: Enter n: 5 sum = 1.71667 2005年秋浙江省高等学校 计算机等级考试试卷(二级C) 说明:? 考生应将试题一至试题四的答案涂在答题卡上,将试题五的答案填写在答卷上,否则作无 效处理; ? 请将你的准考证号的后四位填写在答卷右下角的指定位置内; ? 考试时间为120分钟。 试题一、判断题(每题1分,共10分) 说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1)不同类型的变量在内存中占用存储空间的大小都是一样的。 (2)程序调试就是找出并改正C源程序中的语法错误。 (3)表示数学式32) return f(n-1)+n; else return n; } A、9 B、10 C、2 D、4 (18) 不正确的赋值或赋初值的方式是 (18) 。 A、char *p="hello"; B、char s[10]= "hello"; C、char s[10]; s="hello"; D、char s[5]={'h', 'e', 'l', 'l', 'o'}; (19) 若定义FILE *fp; 则文件指针fp 指向 (19) 。 A、文件在磁盘上的读写位置 B、文件在缓冲区上的读写位置 C、整个磁盘文件 D、文件类型结构体 (20) 设变量定义如下,则表达式 *p->str++ 等价于 (20) 。 struct{ int len; char *str; }*p; A、*p++->str B、(*p->str)++ C、*p->(str++) D、*(p->str)++ 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1 【程序说明】 求 2/1 + 3/2 + 5/3 + 8/5 + „ 的前10项之和。(该序列从第2项起,每一项的分子是前一项分 子与分母的和,分母是前一项的分子) 【程序】 #include void main() 共76页 第25页 { int i, a = 1, b = 1, t; (21) ; for(i = 1; i <= 10; i++){ t = a; (22) ; b = t; y = (23) ; } printf("%f\n", y); } (21) A、int y = 0 B、int y C、double y = 0 D、double y (22) A、a = b B、b = a + b C、a = a + b D、b = a (23) A、y + 1.0*a/b B、y + a/b C、a/b D、1.0*a/b 程序2 【程序说明】 读入一批正整数(以零或负数为结束标志),输出其中的素数。函数prime(m)用于判断m是否 为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】 #include "stdio.h" #include "math.h" void main( ) { int x; int prime(int m); scanf("%d", &x); while( (24) ){ if(prime(x)) printf("%d\n", x); scanf("%d", &x); } } 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页 return (26) ; } (24) A、x < 0 B、x >= 0 C、x <= 0 D、x > 0 (25) A、res = 1 B、res = 0 C、res = -1 D、res = 2 (26) A、1 B、res C、0 D、-1 程序3 【程序说明】 输入1000个整数,用选择法将它们从小到大排序后输出。 【程序】 #include void sort(int a[ ], int n); void main( ) { int i, a[1000]; for(i = 0; i < 1000; i++) scanf("%d", &a[i]); (27) ; for(i = 0; i < 1000; i++) printf("%d ", a[i]); printf("\n"); } 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) D、sort(a[1000]) (28) A、int a, int n B、int a[] C、int *a, int *n D、int *a, int n (29) A、k B、0 C、n D、i (30) A、a[i] ?a[index] B、a[i] ? a[index] C、a[i] a[index] 试题四、程序阅读题(每空2分,共20分) 说明:阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1 #include "stdio.h" 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("%d\n", sum); for(k = 0; k < n; k++) sum = sum + a[k][n-k-1]; printf("%d\n", sum); } (31) 程序运行时,第1行输出 (31) 。 A、15 B、12 C、3 D、0 (32) 程序运行时,第2行输出 (32) 。 A、30 B、24 C、 15 D、12 程序2 #include void main( ) { char ch; while((ch = getchar()) != '\n'){ if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch; putchar(ch); } } (33) 程序运行时,输入ABC,输出 (33) 。 A、abc B、zyx C、ZYX D、ABC (34) 程序运行时,输入xyz,输出 (34) 。 A、XYZ B、ABC C、cba D、xyz (35) 程序运行时,输入a+Z,输出 (35) 。 A、a+a B、z+z C、Z+a D、a+A 程序3 #include int f(int number, int digit) { int count = 0; while(number != 0){ if(number%10 == digit) count++; number = number / 10; } return count; } void main( ){ printf("count=%d\n", f(10090, 0)); printf("count=%d\n", f(10090, 9)); } (36) 程序运行时,第1行输出 (36) 。 共76页 第28页 A、count=0 B、count=1 C、count=3 D、count=5 (37) 程序运行时,第2行输出 (37) 。 A、count=3 B、count=9 C、count=1 D、count=5 程序4 #include void main( ) { int choice, i; float price; for( i = 1; i <= 5; i++) { scanf("%d", &choice); 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("%0.1f\n", price); } printf("Thanks \n"); } (38) 程序运行时,输入3 7 -1,第1行输出 (38) 。 A、0.0 B、3.0 C、4.5 D、Thanks (39) 程序运行时,输入3 7 -1,第2行输出 (39) 。 A、0.0 B、3.0 C、7.0 D、Thanks (40) 程序运行时,输入3 7 -1,第3行输出 (40) 。 A、-1.0 B、0.0 C、7.0 D、Thanks 试题五、程序设计题(每题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 sqrt(x) 5 2.24 6 2.45 … … 999 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代表两个不同的变量。 16(8) 若表达式sizeof(unsigned)的值为2,则unsigned 类型数据能表示的最大整数为2-1。 (9) break语句只能用于循环结构中。 (10) while语句先判断循环条件,所以循环体有可能一次也不执行。 试题二、单选题(每题2分,共20分) (11) 执行scanf("%d%lf%d", &money, &rate, &year),输入 (11) 后,money=1000,year=3,rate=0.025。 A、1000 3 0.025 B、1000 0.025 3 C、1000, 3, 0.025 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("%c->%c#", a, b) ; else{ f(n-1, a, c, b); printf("%c->%c#", a, b); 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("%d", t); 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, "abc"}, *p; A、*p = point; B、p = &point; C、point = p; D、p->x = point.y; 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 共76页 第31页 程序1、 【程序说明】 –6根据下式计算s的值,要求精确到最后一项的绝对值小于10。 111 s,,,,,?1357 【程序】 #include #include void main( ) { int flag = 1, t = 1; (21) ; while( (22) ){ item = flag * 1.0 / t; s = s + item; (23) ; t = t + 2; } printf ( "s = %f\n", s); } (21) A、double item = 2, s = 0; B、double item = 0, s = 0; C、double item = 1, s = 1; D、double item = 3, s = 1; (22) A、item < 1E-6 B、item >= 1E-6 C、fabs (item) < 1E-6 D、fabs (item) >= 1E-6 (23) A、flag = -1 B、s = -s C、flag = -flag; D、t = -t 2、程序2 【程序说明】 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,„,18=7+11。将6,100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 【程序】 #include "stdio.h" #include "math.h" 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("%d=%d+%d\n", i, k, i-k); 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) B、prime(i) && prime(k) C、prime(k) && prime(i-k) D、prime(k) (25) A、if(m%k != 0) return 0 B、if(m%k == 0) return 0 C、if(m%k == 0) return 1 D、if(m%k != 0) return 1 (26) A、return 0; B、return 1; C、else return 0; D、else return 1; 程序3、 【程序说明】 输入一个字符串(少于80个字符),滤去所有的非八进制字符后,组成一个新字符串(八进制形式),然后将其转换为十进制整数后输出。函数stoi(str) 将八进制形式的字符串str转换为十进制整数,例如,stoi("12")的值为10(八进制12对应十进制10)。 【程序】 #include void main( ) { int i, k; char s[10]; int stoi(char *str); gets(s); for(i = k = 0; s[i] != '\0'; i++) if(s[i] <= '7' && s[i] >= '0') (27) ; (28) ; printf("digit = %d\n", (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++ B、s[k] = s[i] C、s[k] = s[i], k++ D、s[i] = s[k] (28) A、s[i] != '\0' B、s[k] != '\0' C、s[i] = '\0' D、s[k] = '\0' (29) A、stoi(s) B、s 共76页 第33页 C、stoi(s[i]) D、n (30) A、n = n * 8 + (str[i] - '0') B、n = n * 10 + (str[i] - '0') C、n = n * 8 + str[i] D、n = n + str[i] 试题四、程序阅读题(每题5分, 共20分) 说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 1、 程序1 #include void main( ) { int x = 10023; do{ printf("%d#", x%10); x = x / 10; }while (x != 0); } 2、 程序2 #include void main( ) { int i, x = 1, y = 1; for (i = 1; i <= 5; i++){ x = x + y; y++; printf("%d#", x); } } 3、 程序3 # include void main ( ) { int x = 1, y = 1; void f(int m,int n, int *px,int *py); f(2004, 70, &x, &y); printf ("%d#%d#", x, y); f(2005, 98, &x, &y); printf ("%d#%d#", x, y); } 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%400==0; for ( k=1; n>tab[flag][k]; k++) 共76页 第34页 n = n - tab [flag][k]; *px = k; *py = n; } 4、 程序4 /* 假设读写文件的操作能正常完成 */ #include #include void main() { char ch, *s = "ACEDB"; int x; FILE *in; if ((in = fopen("file.txt","w")) != NULL) while(*s != '\0') fputc(*s++,in); fclose(in); if((in=fopen("file.txt","r")) != NULL) 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("%d#", x); } fclose(in); } 试题五、程序设计题(每题10分,共30分) 1. 输入x,计算并输出下列分段函数 f(x) 的值。可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs()和幂函数pow()。 ||0xx,,,xx,,,102, fx(),,3(2)24xx,,,,,254xx,,, 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 B、(*p).y=3.0 C、point.x=2.0 D、p->s="a" (32) 。 (37) 下列程序段的输出结果是 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 D、20 (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) D、(3,3) 共76页 第37页 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序(段),在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、 【程序说明】 输入一批以 -1结束的整数,求偶数和。 【程序】 #include void main() { int x, sum; sum=0; 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("%d", &x) B、scanf("%d", x) C、sum=0 D、x=sum 、程序2 2 【程序说明】 a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵, 输出“YES”, 否则, 输出“NO”。 (下三角矩阵,即主对角线以上的元素都为0, 主对角线为从矩阵的左上角至右下角的连线) 【程序】 #include void main( ) { 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 C、flag==1 D、flag=1 (40) A、a[k][i]!=0 B、a[i][k]==0 C、a[i][k]!=0 D、a[k][i]==0 (41) A、flag=0 B、flag==0 C、flag==1 D、flag=1 程序3、 【程序说明】 输入一个字符串,将其中的大写字母转换为小写字母后输出。 【程序】 #include void main( ) { char str[80]; int k; gets(str); 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 void main( ) { int j, k; float f,s; 共76页 第39页 s=0; f=1; for(k=1; k<=3; k++){ for(j=1; j void main( ) { 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%10; number /= 10; printf("%d#", res); } return flag*res; } 7、 程序3 #include #include void main() { FILE *in; 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 n的阶乘;mypow(x, n)计算x的n次幂(即x),2个函数的返回值类型都是double。 234xxxxn1x...(1)n,,,,,,, 2!3!4!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("%d", MA(5, 4+2)-7); 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 void main( ) { int y; double d=3.4, x; x=(y=d/2.0)/2; printf(" (%0.2f, %d) ", x, y); } 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("#"); else continue; printf("*"); } } A、#*#* B、*#*# C、## D、以上都不对 (35) 设变量定义为 int a[3]={1, 4, 7}, *p=&a[2]-2;,则*p的值是 (35) 。 A、&a[2]-2 B、5 C、2 D、1 (36) 若变量已正确定义, (36) 不能使指针p成为空指针。 A、p='\0' B、p=0 C、p=NULL D、p=EOF (37) 下列程序的输出结果是 (37) 。 #include int x; 共76页 第42页 int p(int *y) { ++*y; return x-1; } void main() { int y; y=p(&x); printf(" (%d, %d) ", x, y); } A、(-1, 0) B、(1, -1) C、(1, 0) D、出错 试题三、程序填空题(每空2分,共16分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 程序1、 【程序说明】 输出1,1000之间所有满足各位数字的立方和等于它本身的数。 【程序】 #include void main( ) { int digit, k, m, s; for (k=1; k<=1000; k++){ (38) while(m!=0){ digit=m%10; 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%10 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 void main( ) { 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;} D、sub=k; break; (42) A、sub!=-1 B、sub!=0 C、sub==-1 D、sub==0 程序3、 【程序说明】 当前目录下存放着文本文件from.txt,将其中除数字以外的内容显示在屏幕上。 【程序】 #include #include void main() { 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("from.txt","w"))==NULL B、(fr=fopen("from.txt","r"))==NULL C、fr=fopen("from.txt","r")==NULL D、fr=fopen("from.txt","a")==NULL (44) A、ch=getchar(fr) B、ch=fgetc() C、ch=fgetc(fr) D、ch=getchar() (45) A、ch>='0'||ch<='9' B、ch<'0'&&ch>'9' C、ch>='0'&&ch<='9' D、ch<'0'||ch>'9' 试题四、程序阅读题(每题5分, 共15分) 说明:阅读下列程序,将运行时的输出结果写在答卷纸的相应题号下。 8、 程序1 共76页 第44页 #include void main() { int i, k,m; 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 void main() { int j, k; 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 void main( ) { int i=0, n; 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 3、 void main() double fact(int n) {int n,i; { double ep=1; int k; scanf(“%d”,&n); double result = 1; for(i=1; i<=n; i++) for(k=1; k<=n; k++) { result *=k; ep=ep/10; return result; printf(“%f\n”,cal(ep)); } } } 2、double cal(double e) { int i=1; double s=1; do{ i++; s=s+1/fact(i); }while(1/fact(i)>=e); return s; } 共76页 第46页 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 #include void main() double total(int n) {float a[100],sum=0.0,aver; { int i; int i,total=0; double sum=1.0; for (i=2;i<=n;i++) printf(“请输入100个学生的英语成绩:\n”); sum=sum+1.0/i; for (i=0;i<100;i++) return (sum); scanf(“%f”,&a[i]); } for (i=0;i<100;i++) void main() { sum=sum+a[i]; {double s; if ( a[i]<60) total++; int m; } printf(“请输入一个正整数:”); aver=sum/100; scanf(“%d”,&m)); printf(“平均值为:%f,不及格的学生总共 s=total(m); 有:%d\n”,aver,total); printf(“s=%f\n”,s); } } 共76页 第47页 2006年春计算机等级考试(二级C)参考答案 试题1~6 :ADDCD ACCDC BACDA BBABB ABCD 试题7 试题8 #include #include void main( ) void main( ) { int mark, a, p, f; { int i, n; c = p = f = 0; double x, sum; printf("Enter scores:"); double fact(int n); scanf ("%d", &mark); scanf("%d", &n); while (mark >= 0){ sum = 0; if(mark >= 85) a++; for(i=1; i<=n; i++) else if (mark >= 60) p++; sum = sum + 1/fact(i); else f++; printf("sum=%f\n", sum); scanf ("%d", &mark); } } double fact(int n) printf(">=85:%d\n", a); { int i; printf("60-84:%d\n", p); double res = 1; printf("<60:%d\n", f); for(i=1; i<=n; i++) res = res*i; } return res; } 2005年秋计算机等级考试(二级C)参考答案 试题1 : BBBBA BBAAA 试题2~4 :ADBCA DACBD CCADB BBDAC BBBDA CCCAD 试题五、程序设计题(每题10分,共30分) 1、 2、 #include #include void main( ) #include { double rate, salary, tax; void main() scanf("%lf", &salary); { int x; if (salary <= 850) rate = 0; printf("x sqrt(x)\n"); else if(salary <= 1350) rate=0.05; for(x=5;x<=1000;x++) else if(salary <= 2850) rate=0.10; printf("%d %f\n", x, sqrt(x)); else if(salary <= 5850) rate=0.15; } else rate = 0.20; tax = rate * (salary-850); printf("tax=%0.2f\n", tax); } 3 #include void main() { char str[80], ch; int count=0, i=0; gets(str); ch = getchar(); 共76页 第48页 for(i=0; str[i]!='\0'; i++) if(str[i] == ch) count++; printf("count = %d\n", count); } 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 #include #include float ctof(int c) void main() { {float x,y return (32+c*9.0/5); } printf(“请输入x:”); void main() scanf(“%f”,&x); {float F;; if (x<0) y=fabs(x); int i; else if (x>=0&&x<2) y=sqrt(x+1); printf(“摄氏温度与华氏温度对应表:\n”); else if (x>=2&&x<4 ) y=pow((x+2),3); else if (x>=4) y=2*x+5; printf(“摄氏温度\t华氏温度\n”); printf(“y=%f\n”,f); for (i=-100;i<=150;i+=5) } printf(“%d\t%f\n”,i,ctof(i)); } 3、 #include void main() {int a[10],n,i,j,x,y,max; printf(“请输入一个正整数n(1?n?6):”); scanf(“%d”,&n); printf(“请输入一个n行n列的矩阵:\n”); for (i=0;imax) {max=a[i][j];x=i;y=j;} printf(“绝对值最大的元素为:%d,下标分别为:%d,%d\n”,max,x,y); } 2004年秋计算机等级考试 (二级C) 参考答案 试题1,2:ABAAA ABBAB CCDDB DACBA 试题3:1、BCA 2、DCA 3、CD 4、BA 共76页 第49页 试题四、程序阅读题(每题5分,共15分) 1 1#3# 21# 错1项扣2分 2 4#47#479#-479 错1项扣2分 3 IF YOU FAIL TO PL 错1项扣2分 试题五、编程题(每题10分,共20分) 1、 #include #include main( ) { int i, sub, t; int a[10]; for(i=0; i<10; i++) scanf("%d", &a[i]); sub=0; for(i=1; i<10; i++) if(abs(a[sub])>abs(a[i])) sub=i; t=a[sub]; a[sub]=a[9]; a[9]=t; for(i=0; i<10; i++) printf("%d ", a[i]); } 2、 #include double fact(int n) main( ) { int i; { int flag, i, n; double res=1; double x, sum; for(i=1; i<=n; i++) double fact(int n); res=res*i; double mypow(double x, int n); return res; scanf("%lf%d", &x, &n); } sum = 0; double mypow(double x, int n) flag = 1; { int i; for(i=1; i<=n; i++){ double res=1; sum = sum + flag*mypow(x,i)/fact(i); for(i=1; i<=n; i++) flag = -flag; res=res*x; } return res; printf("%f\n", sum); } } 2003年秋计算机等级考试 (二级C) 参考答案 试题1,2:ABAAB BABB B ACBCA DBBAD AC 试题3:1、BAD 2、DA 3、BCD 试题4、 1、1#2#3#1#1#3 2、3 4 5 #4 5 3 #5 3 4 # 3、298 共76页 第50页 试题5、 1. 2. #include //参考答案 #include //参考答案 #include void main( ) void main() { { int a[10],i,c=0,sum=0; int isprime(int x); float ave; int m,n,sum=0,i; for(i=0;i<10;i++) while(1) { { scanf("%d,%d",&m,&n); scanf("%d",&a[i]); if(mave)c++; printf("Sum=%d\n",sum); } } printf("%d",c); int isprime(int x) { } int i; for(i=2;i #include #include void main() { int i,n; /***** 1 *****/ struct axy { float x,y; } a; //struct axy { float x,y; } *a; scanf("%d",&n); a=(float*) malloc(n*2*sizeof(float)); for(i=0;i #define N 10 void main() { int i,j,min,temp; int a[N]={5,4,3,2,1,9,8,7,6,0}; printf("\nThe array is:\n"); /* 输出数组元素 */ for (i=0;i=a[j]) min =j; /****** 2 ******/ temp=a[min]; a[min]=a[j]; a[j]=temp; //temp=a[min]; a[min]=a[i]; a[i]=temp; } printf("\nThe sorted numbers: \n"); /* 输出排序结果 */ for (i=0;i #include void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i #include void main() { float x,eps,s=1,t=1,i=1; scanf("%f%f",&x,&eps); do { /***** 1 *****/ t=-t*x/++i; //t=-t*x/i++; s+=t; /***** 2 *****/ } while(fabs(t)=eps); printf("%f\n",s); } 5(运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333。 #include void main() { int i,a,n; long t=0; /********* 1 *******/ s=0; // long s=0; scanf("%d%d",&a,&n); for(i=1;i<=n;i++) { 共76页 第53页 /******* 2 ******/ t=t*10+i; //t=t*10+1; s=s+t; } s=s*a; printf("%ld\n",s); } 6(输入一个字符串,将组成字符串中所有非英文字母的字符删除后输出。(例如:输 入”abc123+xyz.5”,应输出”abcxyz”) #include #include void main() { char str[256]; int i,j,k=0,n; gets(str); n=strlen(str); for(i=0;i'z') //if (tolower(str[i])>='a' && tolower(str[i])<='z') { /********2********/ str[n]=str[i]; n++; //str[k]=str[i]; k++; } str[k]='\0'; printf("%s\n",str); } 7(用递归法将一个六位整数n转换成字符串。(例如:输入123456,应输出字符串“123456”) #include void itoa(long i,char *s) { if(i==0) return; /****** 1 ******/ *s = '1'+i%10; // *s = '0'+i%10; itoa(i/10,s-1); } void main() { long n; char str[7]=""; scanf("%ld",&n); /****** 2 ******/ itoa(n,str+6); // itoa(n,str+5); printf("%s",str); 共76页 第54页 } 8(运行时输入10个数,然后分别输出其中的最大值,最小值。 #include void main() { float x,max,min; int i; /******** 1 *******/ for(i=0;i<=10;i++) { //for(i=0;i<10;i++) { scanf("%f",&x); /******* 2 ********/ if(i= =0) { max=x;min=x;} //if(i==1) { max=x;min=x;} if(x>max) max=x; if(x void main() { int n,i; scanf("%d",&n); /****** 1 ******/ i=1; //i=2; while(n>1) if(n%i==0) { printf("%d\t",i); n/=i; } else /******** 2 *******/ n++; //i++; } 共76页 第55页 程序填空题及答案 该文件中”_______N______”是根据程序功能需要填充的部分,请完成程序填充。(注意:不得加行、 减行、加句、减句,否则后果自负) (注:注释符号”//”后为参考答案) 1(程序功能:求输入的整数各位数字之和,如输入234则输出9,输入-321则输出6。 #include #include #include void main() { int n,s=0; scanf("%d",&n); ______ 1 ______ //n=abs(n); while(n!=0) { ______ 2 ______ // s=s+n%10; n=n/10; } printf("%d\n",s); } 2(将字符串s中所有的字符?c?删除。 #include void main() { char s[80]; int i,j; gets(s); for(i=j=0;______1______;i++) //s[i]!='\0' if(s[i] != 'c') { s[j]=s[i]; ______2______ //j++; } s[j]='\0'; puts(s); } 3(输入三个整数,按由小到大的顺序输出这三个数。 #include void swap(______1______) //int *pa,int *pb { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; } void main() 共76页 第56页 { int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(______2______) //a>b swap(&a,&b); printf("%d,%d,%d",a,b,c); } (输入m、n (要求输入数均大于0),输出他们的最大公约数。 4 #include void main() { int m,n,k; while(scanf("%d%d",&m,&n), _______1_____ ); //m<=0||n<=0 for( ____2____; n%k!=0||m%k!=0; k--); //k=m>n?m:n printf("%d\n",k); } 5.输入1个整数后,输出该数的位数。(例如:输入3214则输出4,输入-12345则输出5)。 #include void main() { int n,k=0; scanf("%d",&n); while( _____1_____ ){ //n!=0 k++; _____2_____; //n=n/10 } printf("%d\n",k); } 6. 数列第1、2项均为1,此后各项值均为该项的前2项之和。计算数列第30项的值。 #include _______1______ //long f(int n); void main() { printf("%ld\n",f(30)); } long f(int n) { if( ______2______ ) //n==0 || n==1 return 1; else return f(n-1)+f(n-2); } 7(调用函数f, 将1个整数首尾倒置。例如:若程序输入12345,则输出54321,如程序输入-76543, 共76页 第57页 则输出-34567。 #include #include long f(long n) { long m,y=0; m=fabs(n); while(m!=0) { y=y*10+m%10; ____1____ //m=m/10; } if(n>=0) return y; else _____2_____ //return -y; } void main() { printf("%ld\t",f(12345)); printf("%ld\n",f(-34567)); } 8(找出100~999间所有的Armstrong数。所谓Armstrong数是指这个3位数各位数字的立方和等于自身。(例如:371=3*3*3+7*7*7+1*1*1,则371就是Armstrong数 )。 #include #include void main() { int i,a,b,c; for(i=100;i<=999;i++) { a=i/100; _______1_______ //b=(i-a*100)/10; c=i%10; if (________2________) //pow(a,3)+pow(b,3)+pow(c,3)==i printf("%d is a Armstrong number!\n",i); } } 9(将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。(例如:输入十进制数79,将输出十六进制数4f) # include # include char trans(int x) { if(x<10) return '0'+x; else _______1________ //return 'a'+x-10; } int DtoH(int n,char *str) { int i=0; while(n!=0) { 共76页 第58页 ________2________ //str[i]=trans(n%16); n/=16;i++;} return i-1; } void main() { int i,k,n; char *str; scanf("%d",&n); k=DtoH(n,str); for (i=0;i<=k;i++) printf("%c",str[k-i]); } 10(调用函数f,从字符串中删除所有的数字字符。 #include #include #include void f(char *s) { int i=0; while(s[i]!='\0'){ if(isdigit(s[i])) ____1____(s+i,s+i+1); //{strcpy ___2___ i++;} //i--;} } void main() { char str[80]; gets(str); f(str); puts(str); } 11(求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。(例如:b[1]=a[1]+a[0],…b[9]=a[9]+a[8]) #include void main() { int a[10],b[10],i; printf("\nInput 10 numbers: "); for (i=0; i<10;i++) /* 数组输入 */ scanf("%d", &a[i]); for (i=1; i<10; i++) b[i]=______1______; /* 计算b数组中的元素 */ //a[i-1]+a[i] for (i=1; i<10; i++) { printf("%3d",b[i]); if (______2______) printf("\n"); /* 每行打印3个数据 */ //i%3==0 } } 12(调用函数f,去除数组中的负数,输入数组x[7],数出结果为:1 3 4 6 共76页 第59页 #include void f(int *a,int *m) { int i,j; for(i=0;i<*m;i++) if(a[i]<0) { for(j=i--;j<*m-1;j++) a[j]=a[j+1]; _____1_____; //(*m)-- } } void main() { int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; _______2_______; //f(x,&n) for(i=0;i void main() { char c; c=getchar(); if(______1______) //c>='a' && c<='u' c=c+5; else if (c>='v' && c<='z') ______2______ //c=c-21; putchar(c); } 14(输入整数n (n>0),求m使得2的m次方小于或者等于n,2的m+1次方大于或者等于n。 #include void main() { int m=0,t=1,n; while( _____ 1 ________); //scanf("%d",&n),n<=0 while(!(t<=n&&t*2>=n)){ _____ 2 _____ //t*=2; m++; } printf("%d\n",m); } 14(该程序计算4位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。 #include struct STUDENT { char name[16]; int math; int english; 共76页 第60页 int computer; int average; }; void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */ { int sum=0; sum = ______1______; //pst->math+pst->english+pst->computer; pst->average = sum/3; } void main() { int i; struct STUDENT st[4]={{"Jessica",98,95,90},{"Mike",80,80,90}, {"Linda",87,76,70},{"Peter",90,100,99}}; for(i=0;i<4;i++) { GetAverage(______2______); //st+i } printf("Name\tMath\tEnglish\tCompu\tAverage\n"); for(i=0;i<4;i++) { printf("%s\t%d\t%d\t%d\t%d\n",st[i].name,st[i].math,st[i].english, st[i].computer,st[i].average); } } 15(调用函数f 计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x,当x=1.7时的值。 #include float f(float,float*,int); void main() { float b[5]={1.1,2.2,3.3,4.4,5.5}; printf("%f\n",f(1.7,b,5)); } float f( _______1________ ) //float x,float *a,int n { float y=a[0],t=1; int i; for(i=1;i #include void main() { char a[80]; int n[3]={0},i; gets(a); ________1________ //i=0;while(a[i++]!='\0') {if (tolower(a[i])>='a' && tolower(a[i])<='z') /*统计字母个数*/ n[0]++; else if (________2________) /*统计数字个数*/ //a[i]>='0' && a[i]<='9' 共76页 第61页 n[1]++; else n[2]++; } for(i=0;i<3;i++) printf("%d\n",n[i]); } (调用find函数再输入的字符串中查找”the”这个单词,如果查到返回出现的次数;如果未找到返17 回0。 #include int find(char *str) { char *fstr="the"; int i=0,j,n=0; while (str[i]!='\0') { for(______1______) //j=0;j<3;j++ if (str[j+i]!=fstr[j]) break; if (______2______) n++; //j>=3 i++; } return n; } void main() { char a[80]; gets(a); printf("%d",find(a)); } 共76页 第62页 程序设计题及答案 1( 设计编程并运行程序,完成以下功能:x[i],y[i]分别表示平面上1个点的x,y坐标,求下列5点各 点距离总和,并将该数以格式”%.4f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 (注:由于每个考生准考证号码不一样,所以题目答案中直接写入当前目录的design1.dat或者design2.dat文件,考试时考生应对文件目录做相应变换。) #include #include //参考答案 #include #include void main() void main() { FILE *p; { FILE *p; float s,x[5]={-1.5,2.1,6.3,3.2,-0.7}; float s,x[5]={1,2,3.0,4.0,5}; float y[5]={7,5.1,3.2,4.5,7.6}; int i,j; float y[5]={1,2,3.0,4.0,5}; int i,j; /* s=0; * p=fopen("d:\\result\\...\\paper\\design1.dat","w"); * for(i=0;i<5;i++) * 考生在这里添加代码 for(j=i+1;j<5;j++) * s=s+sqrt(pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2)); * fprintf(p,"%.4f",s); */ fclose(p); } } 2(设计编程并运行程序,完成以下功能:对x=1,2,…10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式”%.3f” 写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 #include #include void main() void main() { FILE *p; float f(float),max,x; { FILE *p; float f(float),max,x; /* p=fopen("d:\\result\\...\paper\\design1.dat ","w"); * x=1; max=x-10*cos(x)-5*sin(x); * for(x=2;x<=10;x++) * 考生在这里添加代码 if(max #include //参考答案 #include #include void main() void main() { { FILE *fp; FILE *p; float n=1,t=1,pi=0; float n=1,t=1,pi=0; int i; int i; 共76页 第63页 /* * i=1; * p=fopen("d:\\result\\...\\paper\\design1.dat * 考生在这里添加代码 ","w"); * while(t>=0.000001) * { pi=pi+n*t; t=1.0/(i+2); */ n=-n; i=i+2; } } pi*=4; fprintf(p,"%.4f",pi); fclose(p); 4(将满足条件pow(1.05,n)<1e6<(1.05,n+1)的n及其相应的pow(1.05,n)值以格式”%d,%.0f” 写入到考} 生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 #include #include void main() void main() { float y=1.05; int n=1; FILE *p; { float y=1.05;int n=1; FILE *p; /* p=fopen("d:\\result\\...\\paper\\design1.dat * ","w"); * while(y<=100000) * 考生在这里添加代码 { y=pow(1.05,n); * n=n+1; * } */ n=n-2; fprintf(p,"%d,%.0f",n,pow(1.05,n)); fprintf(p,"%d,%.0f",n,pow(1.05,n)); fclose(p); fclose(p); } } 5. 计算字符串s中每个字符串的权重值,所谓权重值就是字符再字符串重的位置值与该字符的ASCII 码值的乘积。位置值从1开始依次递增,将每个字符权重值以格式”%d” 写入到考生文件夹中paper 子文件夹下的文件design1.dat中。 #include #include //参考答案 #include void main() void main() { FILE *p;int i,w; { char *s="we45*&y3r#$1"; FILE *p; int i,w; p=fopen("d:\\result\\...\\paper\\design1.dat char *s="we45*&y3r#$1"; ","w"); /* for(i=0;*(s+i)!='\0';i++) * { w=*(s+i)*(i+1); * fprintf(p,"%d,",w); * 考生在这里添加代码 } * fclose(p); * } */ } 6(计算表达式1+2!+3!+…+12!,并将计算结果以格式”%ld”写入到考生文件夹中paper子文件夹下 共76页 第64页 #include //参考答案 的文件design1.dat中。 void main() #include { FILE *p;long s=1,k=1;int i; void main() p=fopen("d:\\result\\...\\paper\\design1.dat { FILE *p; long s=1,k=1; int i; ","w"); /* for(i=2;i<=12;i++) * { k=k*i; * s=s+k; * 考生在这里添加代码 } * fprintf(p,"%ld",s); * fclose(p); */ } } 7(在数组a 的10个数中求平均值v,将大于等于v数组元素进行求和,并将结果以格式”%.5f”写 入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 void main() void main() { FILE *p; int i; { FILE *p;int i; float a[10]; float a[10]; float sum,v=0; float sum,v=0; a[10]={7.23,1.5,5.24, a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81} 2.1,2.45,6.3,5,3.2,0.7,9.81} p=fopen("d:\\result\\...\\paper\\design1.dat /* ","w"); * for(i=0;i<=9;i++) * sum=sum+a[i]; * 考生在这里添加代码 v=sum/10.0;sum=0; * for(i=0;i<=9;i++) * if (a[i] #include //参考答案 void main() void main() { FILE *p; { FILE *p; int i,j,temp,n=0; int i,j,temp,n=0; int a[10]={7,6,20,3,14,88,53,62,10,29} int a[10]={7,6,20,3,14,88,53,62,10,29}; int b[10]; int b[10]; /* j=0; * for(i=0;i<10;i++) if(a[i]%2==0) * { b[j]=a[i];j++;n++;} * 考生在这里添加代码 n--; * * 共76页 第65页 */ for(i=0;ib[j]) {temp=b[i];b[i]=b[j];b[j]=temp;} p=fopen("d:\\result\\...\\paper\\design1.dat t","w"); for(i=0;i #include //参考答案 #include #include void main() void main() { FILE *p; char *s="634,.%@\\w|SQ2",c; { FILE *p;char *s="634,.@\\w|SQ2",c; int i,j,k,n=strlen(s); int i,j,k,n=strlen(s); /* p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * for(i=0;is[j])k=j; * if(i!=k){c=s[i];s[i]=s[k];s[k]=c;} } */ for(i=0;i #include //参考答案 void main() void main() { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; FILE *p; /* int i,j; float t; * p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * for(i=0;i<3;i++) * 考生在这里添加代码 { t=a[i][i]; * for(j=0;j<3;j++) * a[i][j]=a[i][j]/t; */ } for(int i=0;i<3;i++) { for(i=0;i<3;i++) { for(int j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); for(j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); fprintf(p,"\n"); fprintf(p,"\n"); } } fclose(p); fclose(p); } } 共76页 第66页 11(已知公鸡每只5元,母鸡每只3元,小鸡1元3只。求出用100元买100只鸡的解。 将得到的解按公鸡、母鸡、小鸡的只数以”%d,%d,%d\n”的格式写入到考生文件夹paper子文件夹下 的文件design1.dat中。 #include //参考答案 #include void main() void main() { FILE *p; { FILE *p; int cock,hen,chick; int cock,hen,chick; p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); /* for(cock=0;cock<=100;cock++) * for(hen=0;hen<=100;hen++) * { chick=100-cock-hen; * 考生在这里添加代码 if(5*cock+3*hen+chick/3.0==100) * fprintf(p,"%d,%d,%d\n",cock,hen,chick); * } */ fclose(p); } } 12(计算500~800区间内素数的个数cnt和素数和sum,请编写函数JSValue( )实现程序的要求,最 后把cnt和sum的值写入到考生文件夹paper子文件夹下的文件design1.dat中。 #include #include //参考答案 int cnt,sum; int cnt,sum; void JSValue() void JSValue() { { int i,j,half; int i,j,half; cnt=0;sum=0; /* for(i=500;i<=800;i++) * { half=i/2; * for(j=2;j<=half;j++) * 考生在这里添加代码 if(i % j==0) break; * if(j>half){cnt++;sum+=i;} * } */ } } void main() void main() { FILE *p; { p=fopen("d:\\result\\...\\paper\\design1.dat FILE *p; ","w"); p=fopen("design.dat","w"); JSValue(); JSValue(); fprintf(p,"%d,%d",cnt,sum); fprintf(p,"%d,%d",cnt,sum); fclose(p); fclose(p); } } 13(有数列2/1,3/2,5/3,8/5,13/8,21/13…求出数列前40项的和。将计算结果格式”%.6f”写入到考生文 件夹中paper子文件夹下的文件design1.dat中。 #include void main() { 共76页 第67页 FILE *p; int i; #include //参考答案 float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s; void main() float f,t; { FILE *p; s=t1/f1+t2/f2; int i; /* float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s; * float f,t; * s=t1/f1+t2/f2; * 考生在这里添加代码 p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * for(i=0;i<19;i++) * { t1=t1+t2; f1=f1+f2; */ s+=t1/f1; f2=f1+f2; } t2=t1+t2; s+=t2/f2; } fprintf(p,"%.6f",s); fclose(p); } 14.计算多项式a0+a1*sin(x)+a2*sin(x*x)+…..+a9*sin(x*x* x*x* x*x* x*x*x)的值,将计算结果格 式”%.6f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 #include #include void main() void main() { { FILE *p; FILE *p; int i; float x=2.345,t=1.0,y=0.0; int i; float x=2.345,t=1.0,y=0.0; float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; float a[10]={1.2,-1.4,-4.0,1.1, p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); 2.1,-1.1,3.0,-5.3,6.5,-0.9}; for(i=0;i<10;i++) /* { t=t*x; * y=y+a[i]*sin(t); * } * 考生在这里添加代码 fprintf(p,"%.6f",y); * fclose(p); * } */ } 15(数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,将结果格式”%.3f” 写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include void main() { FILE *p; float s=0,a=81;int i; /* * 共76页 第68页 #include //参考答案 * #include * 考生在这里添加代码 void main() * { FILE *p; float s=0,a=81;int i; * p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); */ for(i=1;i<=30;i++) } { s=s+a; a=sqrt(a); } fprintf(p,"%.3f",s); fclose(p); } 16(在正整数中找出1个最小的、被3,5,7,9除余数分别是1,3,5,7的数,将该数以格式”%d” 写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 #include #include void main() void main() { { FILE *p; int i=1; /* p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * while(1) { * if((i%3==1)&&(i%5==3)&&(i%7==5)&&(i%9==7)) * 考生在这里添加代码 {fprintf(p,"%d",i);break;} i++; * } * fclose(p); */ } } 17. z=f (x,y)=(3.14*x-y)/(x+y),若x,y取值为区间[1,6]的整数,找出使z取最小值的x1,y1,并将x1,y1 以格式”%d,%d”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 void main() void main() { FILE *p; float f(float x,float y),min; { FILE *p; float f(float x,float y),min; int x,y,x1,y1; int x,y,x1,y1; /* p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * min=f(1,1);x1=1;y1=1; * for(x=1;x<=6;x++) * 考生在这里添加代码 for(y=1;y<=6;y++) * if(f(x,y) #include //参考答案 int Year(int x) int Year(int x) { { int p=11.5,y=1999; int p=11.5,y=1999; while(p #include //参考答案 void main() void main() { FILE *p; long s=1,k=1; int i; { FILE *p; long s=1,k=1; int i; /* p=fopen("d:\\result\\...\\paper\\design1.dat * ","w"); * for(i=1;i<=12;i++) * 考生在这里添加代码 { k=k*i; s=s+k; } * fprintf(p,"%ld",s); * fclose(p); */ } } 20将数组a 的每行均除以该行上绝对值最大的元素,然后将a 数组写入到考生文件夹中paper子文 件夹下的文件design1.dat中。 #include #include void main() { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7}, {3,4,1.27}}; 共76页 第70页 #include //参考答案 #include FILE *p; float x; int i,j; void main() /* { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; * FILE *p; float x; int i,j; * float max;int k; * 考生在这里添加代码 for(i=0;i<3;i++) * { x=abs(a[i][0]); * for(j=0;j<3;j++) */ { if(x #include void main() { FILE *p; int i,k=0; float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; /* #include //参考答案 * #include * void main() * 考生在这里添加代码 { FILE *p; int i,k=0; * float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; * float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; */ p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); } for(i=0;i<10;i++) if(pow((x[i]-1),2)+pow((y[i]+0.5),2)<=25) k++; fprintf(p,"%d",k); fclose(p); } 22(寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。所谓回文就是指各位数字左右对称。请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,否则返回0。将结果写入到考生文件夹中paper子文件夹下的文件design1.dat中。 共76页 第71页 #include #include //参考答案 #include #include #include #include int JSValue(long m) int JSValue(long m) { { char s[25]; int n,i; itoa(m,s,10); n=strlen(s); /* for(i=0;i=n/2) return 1; else return 0; * } * void main() */ { FILE *p;long m; } p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); for(m=11;m<1000;m++){ if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)) void main() fprintf(p,"%ld ",m); { } FILE *p;long m; fclose(p); p=fopen("design.dat","w"); } for(m=11;m<1000;m++) { if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)) fprintf(p,"%ld ",m); } fclose(p); } 23(累加a字符串中各个字符的ASCII值,然后将累加和以格式”%d”写入到考生文件夹中paper子 文件夹下的文件design1.dat中。 #include #include //参考答案 void main() void main() { FILE *p; int s=0,i=0; { FILE *p; int s=0,i=0; char *a="r235%^%34cdDW,."; char *a="r235%^%34cdDW,."; /* p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); * for(i=0;*(a+i)!='\0';i++) * s=s+*(a+i); * 考生在这里添加代码 fprintf(p,"%d",s); * fclose(p); * } */ } 24(在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式”%.5f”写入到考 生文件夹中paper子文件夹下的文件design1.dat中。 #include #include 共76页 第72页 void main() { FILE *p; int i,k=0; float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81}; for(i=0;i<10;i++) v+=x[i]; v=v/10; d=fabs(x[0]-v); float d,v=0; #include //参考答案 #include /* void main() * { FILE *p; int i,k=0; * float d,v=0; * 考生在这里添加代码 float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81}; * for(i=0;i<10;i++) v+=x[i]; v=v/10; d=fabs(x[0]-v); * p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); */ for(i=1;i<10;i++) } if(d>fabs(x[i]-v)) {d=fabs(x[i]-v);k=i;} fprintf(p,"%.5f",x[k]); fclose(p); } 25(若a,b为1的对亲密数,则a的因子和等于b,b的因子和等于a,且a不等于b。如:220,284 是1对亲密数,284,220是1对亲密数。在6至5000内找出所有的亲密数对,并将每对亲密数用 语句fprintf(p,”%6d,%6d\n”,a,b) 写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 void main() void main() { FILE *p; int a,b,c,k; { FILE *p; int a,b,c,k; p=fopen("design.dat","w"); p=fopen("d:\\result\\...\paper\\design1.dat ","w"); /* for(a=6;a<=400;a++) * { for(b=6;b<=400;b++) * { c=0; * 考生在这里添加代码 for(k=1;k<=a;k++) * if (a%k==0)c=c+k; * for(k=b;k>=1;k--) */ if (b%k==0) c=c-k; } if(c==0 && a!=b) fprintf("%d,%d \n",a,b); } } fclose(p); } 26(计算2的平方根,3的平方根。。。。10的平方根之和,要求计算结果具有小数点后10位有效位 数,并将其以格式”%.10f”写入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include void main() { FILE *p; /* 共76页 第73页 * * #include //参考答案 * 考生在这里添加代码 #include * void main() * { FILE *p;int i;double sum=0; */ p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); } for(i=2;i<=10;i++) sum=sum+sqrt(i); fprintf(p,"%.10lf",sum); fclose(p); } 27(求Fibonacci数列中大于t的最小的一个数,结果由函数JSValue返回,其中Fibonacci数列F(n) 的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+f(n-2),分别计算当t=1000和t=3000时的结果,将计算结果写 入到考生文件夹中paper子文件夹下的文件design1.dat中。 #include #include //参考答案 int JSValue(int t) int JSValue(int t) { { int f1=1,f2=1,f; /* do * { f=f2; * f1=f1+f2; * 考生在这里添加代码 f2=f1+f; * printf("%d,%d\n",f1,f2); * }while(f1<=t); */ return(f1); } } void main() { FILE *p; p=fopen("d:\\result\\...\\paper\\design1.dat ","w"); fprintf(p,"%d,%d",JSValue(1000),JSValue(3000)); void main() fclose(p); { } FILE *p; p=fopen("design.dat","w"); fprintf(p,"%d,%d",JSValue(1000),JSValue(3000)); fclose(p); } 共76页 第74页 二级C程序设计考试大纲 基本要求 1(掌握C 语言的基本知识,包括C语言的功能和语法; (基本具备C语言程序设计能力,能熟练地阅读、理解和编写简短的C程序; 2 3(掌握一种C语言的编译和编程环境,能熟练地调试程序; 4(熟练掌握结构化程序设计的方法; (掌握程序设计中常用的基本算法。 5 考试范围 一、数据的定义 1. 基本类型(整型,实型,字符型) 常量 (1) 各种表示形式的整数、实数和字符(串)常量,符号常量的定义和使用,包括整数的十进 制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数 法,字符的转义序列,常用符号常量的含义(如NULL、EOF等); (2) 变量 变量的定义和初始化。 2. 构造类型 (1) 数组 一维和二维数组的定义和初始化,数组元素的引用,包括一维字符数组和字符串,二维 字符数组和字符串数组。 (2) 结构 结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。 3. 指针 (1) 指针和地址的概念; (2) 指针变量的定义和初始化; (3) 通过指针引用指向实体。 4. 构造类型和指针类型的混合定义及应用 (1) 指针、数组和地址间的关系; (2) 指针数组; (3) 结构数组; (4) 结构指针; (5) 结构中含指针或数组; (6) 指向指针的指针(即二级指针)。 5. 空类型的定义和使用 6. 变量的存储类别、作用域和生存期 (1) 变量的存储类别,包括auto 自动型、static 静态型、extern 外部参照型; (2) 全局变量和局部变量,包括自动局部变量和静态局部变量、全局变量和静态全局变 量、外部变量。 二、运算及流程控制 1. 基本运算 运算符的功能,运算符的优先级、结合性和目数,隐式类型转换和强制类型转换。 共76页 第75页 2. 表达式 各类表达式的组成和计算过程。 3. 语句 (1) 表达式语句、空语句、复合语句; (2) 简单控制语句(break、continue、return); (3) 选择控制语句(if、switch); (4) 重复控制语句(for、while、do—while)。 三、程序结构和函数 1. 程序结构 main函数与其他函数之间的关系,包括库函数和自定义函数。 2. 函数的定义 (1) 函数定义的ANSI C格式; (2) 函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数; (3) 函数的返回值,包括指针作为函数的返回值。 3. 函数的调用 (1) 函数调用的一般格式; (2) 函数的嵌套调用和递归调用; (3) 标准库函数的调用。 常用数学函数:cos、sqrt、pow、exp、fabs、log、log10等; 常用字符函数:isalnum、isalpha、isdigit、islower、toupper等; 常用字符串函数:strcpy、strcmp、strcat、strlen等。 四、数据的输入和输出 1. 文件的基本概念; 2. 标准文件的输入和输出,常用输入输出函数:scanf、printf、getchar、putchar、 gets、puts等; 3. 缓冲文件系统(文本文件) (1) 文件的打开和关闭,常用函数:fopen和fclose; (2) 文件的基本读写操作,常用函数:fscanf、fprintf、fgetc、fputc、fgets、fputs 等; (3) 文件的状态检测,常用函数feof等。 五、编译预处理 1. 编译预处理的基本概念; 2. 宏定义; 3. 文件包含。 六、常用算法 1. 分类(排序)算法:冒泡和选择; 2. 检索(查找)算法 (1) 无序数据序列的查找; (2) 有序数据序列的查找:二分法。 共76页 第76页
/
本文档为【计算机二级c语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索