|
2007年春浙江省高等学校
计算机等级考试试卷(二级C)
说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上的各小题选项的对应位置上填“√”。
⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内;
⑶ 考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】
输入一个正整数,按照从高位到低位的顺序输出各位数字。
运行示例:
Enter an integer: 1902
The digits are: 1 9 0 2
【程序】
#include <stdio.h>
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;
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 <stdio.h>
#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
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 <stdio.h>
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、;
(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 <stdio.h>
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 <stdio.h>
int k = 1;
void Fun();
void main()
{ int j;
for(j = 0; j < 2; j++)
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 <stdio.h>
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
(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年的范围内选择还清贷款的年限,想得到一张“还款年限-月还款额表”以供参考。
(1) 定义函数cal_power(x, n)计算x的n次幂(即xn),函数返回值类型是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)计算月还款额。 |
|