当前位置:文档之家› 2007年秋c

2007年秋c

2007年秋c2007年秋浙江省高等学校计算机等级考试试卷(二级C)试题1(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】 输入2个整数lower 和 upper ,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2°F 。

计算公式如下,式中:c 表示摄氏温度,f 表示华氏温度。

5(32)9f c ⨯-= 运行示例: Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 32 0.0 34 1.1 【程序】#include <stdio.h> main( ){ int fahr, lower, upper;double celsius;printf("Enter lower:");scanf("%d", &lower);printf("Enter upper:");scanf("%d", &upper);printf("fahr celsius\n");for (fahr = lower; (1) ; (2) ){long a, sn;long fn(long a, int n);printf("Enter a:");scanf("%ld", &a);printf("Enter n:");scanf("%d", &n);(5)for(i=1; i<=n; i++)(6)printf("sum=%ld\n",sn); }long fn(long a, int n) /*注意1*/ { int i;long tn=0;for(i=1; i<=n; i++){tn=tn+a;(7)}(8)}【供选择的答案】(5) A、sn=0; B、;C、sn=1;D、sn=a;和的初值为0!(6) A、sn=sn+fn(a,i); B、sn=sn+fn(a,n);C、sn=sn+fn(i,a);D、sn=sn+fn(i,n);循环终止次数为n,因此不能是n.否则不能累加,所以B错误。

要和/*注意1*/匹配,所以CD错误。

注意:例如,fn(3,2)的返回值是33。

(2个3)(7) A、tn=tn*10; B、a=a*10;C、sn=tn*10;D、sn=sn+a*10;这里与sn无关,所以CD错误。

如果选A,则最后是tn=330.因为返回的是tn,所以如果选择A,则tn的个位数就一定是0.这不符合题目要求。

(8) A、return; B、return sn;C、return a;D、return tn;试题3(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】输入一个以回车结束的字符串(少于80个字符),删除其中除英文字母和数字字符以外的其它字符,再判断新字符串是否对称(不区分大小写字母)。

运行示例1:Enter a string: Madam I'm AdamYes运行示例2:Enter a string: elephantNo【程序】#include <stdio.h>#include < (9) >main( ){ int flag, i, k, length;char str[80];printf("Enter a string: ");gets(str);i = k = 0;while(str[i] != '\0'){if(isupper(str[i]))str[i]=tolower(str[i]);if(isdigit(str[i])||isalpha(str[i] )){(10)k++; }i++; }(11)length = k;flag = 1;for(k = 0; k <= length/2; k++) if(str[k] != str[length-1-k]){(12)break; }if(flag) printf("Yes\n");else printf("No\n"); } 【供选择的答案】(9) A、ctype.h B、string.hC、stdlib.hD、math.h本题是课本p114页例6.9与p122的5题的综合。

参考课本p114页最后1行。

(10) A、i++; B、str[k] = str[i];C、str[i]=str[k];D、; 参考课本p122页倒数第4行。

(11) A、str[i] = '\0'; B、str[i-1] = '\0';C、str[k] = '\0';D、; 参考课本p122页倒数第3行。

注意,这里的变量k就相当于课本的变量j.(12) A、flag = 1; B、flag = 0;C、 ;D、continue;参考课本p115页第7行。

试题4(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】#include <stdio.h>main(){ int i, m;scanf("%d", &m);for(i = 2; i <= m/2; i++) if (m % i == 0){printf("%d#", i);break;/* 第8行 */}printf("%d", i);}(13) 程序运行时,输入5,输出(13)。

A、3B、3#3C、3#4D、3#5(14) 程序运行时,输入9,输出(14)。

A、3B、3#3C、3#4D、3#5(15) 将第8行改为“continue;”后,程序运行时,输入9,输出(15) 。

A、3B、3#3C、3#4D、3#5(16) 将第8行改为“;”后,程序运行时,输入9,输出(16) 。

A、3B、3#3C、3#4D、3#5这里就是根据程序的流程做出判断。

试题5(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】#include <stdio.h>main(){ int i, j, temp;int a[3][3]= {1,2,3,4,5,6,7,8,9};/*第3行*/void f(int *x, int *y);for(i = 0; i < 3; i++)for(j = 0; j < 3; j++)if(i < j) f(&a[i][j],&a[j][i]); /* 第8行 */for(i = 0; i < 3; i++)for(j = 0; j < 3; j++) printf("%2d",a[i][j]); }void f(int *x, int *y){ int t;t = *x; *x = *y; *y = t; }说明,函数f实现变量的交换。

/*第3行*/定义的数组是1,2,34,5,67,8,9(17)程序的输出是 (17) 。

A、3 2 1 6 5 4 9 8 7B、78 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9D、1 47 2 5 8 3 6 9/*第8行*/实现数组对角线左下与右上元素的交换。

数组变为:1,4,72,5,83,6,9(18) 将第8行改为“f(&a[i][j], &a[j][i]);”后,程序的输出是 (18) 。

A、3 2 1 6 5 4 9 8 7B、78 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9D、1 47 2 5 8 3 6 9两次交换,又复原了!所以数组没有变化。

(19) 将第8行改为“if(i < 2) f(&a[i][j], &a[2-i][j]);”后,程序的输出是(19) 。

A、3 2 1 6 5 4 9 8 7B、78 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9D、1 47 2 5 8 3 6 9数组变为:7,8,94,5,61,2,3(20) 将第8行改为“if(j < 2) f(&a[i][j], &a[i][2-j]);”后,程序的输出是(20) 。

A、3 2 1 6 5 4 9 8 7B、78 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9D、1 47 2 5 8 3 6 9试题6(每小题3分,共12分)#include <stdio.h>main(){ int i, x1, x2;int a[5]={1,2,3,4,5};void f1(int x, int y), f2(int *x,int *y );x1 = x2 = 0;for(i = 1; i < 5; i++){ /*语句7*/ if(a[i] > a[x1])x1 = i;if(a[i] < a[x2])x2 = i; } /*语句11*/f2(&a[x1], &a[0]);for(i = 0; i < 5; i++) printf("%2d", a[i]);printf("\n");f1(a[x2], a[1]);for(i = 0; i < 5; i++) printf("%2d", a[i]);printf("\n");f2(&a[x2], &a[4]);for(i = 0; i < 5; i++) printf("%2d", a[i]);printf("\n");f1(a[x1], a[3]);for(i = 0; i < 5; i++) printf("%2d", a[i]);printf("\n");}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;} 数组a的原始数据为:a[5]={1,2,3,4,5}也就是:a[0]=1, a[1]=2, a[2]=3,a[3]=4, a[4]=5语句7到语句11实现这样的功能:在a[1]=2, a[2]=3, a[3]=4, a[4]=5找出最大和最小的数,所以x1=4但是,没有比a[0]更小的数,所以x2一直没有变,x2=0注意:函数f1是传值方式调用,没有实现交换。

相关主题