浙江省二级C语言笔试真题(2007-2010年)

更新时间:2024-06-22 00:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2010年春浙江省高等学校

计算机等级考试试卷(二级C)

一、程序阅读与填空(24小题,每小题3分,共72分)

1. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】

输入一个整数,求它的各位数字之和及位数。例如,17的各位数字之和是8,位数是2。 运行示例:

Enter an integer:-153

sum = 8, count = 3 【程序】

#include main() {

int count = 0, in, sum = 0; printf(\ scanf(\ if( D ) in = -in; do{

sum = sum + (2) C ; (3)C ; count++;

}while( (4)B );

printf(\}

【供选择的答案】 (1) A、in == 0 B、in > 0

C、in != 0 D、in < 0 (2) A、in /10 B、in mod 10

C、in % 10 D、in (3) A、in = in % 10 B、in /10

C、in = in /10 D、in % 10 (4) A、in % 10 != 0 B、in != 0

C、!in D、in / 10 != 0

2. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】

输出50到70之间的所有素数。要求定义和调用函数isprime(m)判断m是否为素数,若m为素数则返回1,否则返回0。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

运行示例: 53 59 61 67 【程序】

#include

1

#include main()

{ int i; int isprime(int m); for(i = 50; i <= 70; i++) if( (5) B )

printf(\}

int isprime(int m) {

int i, k; (6)B

k = (int)sqrt((double)m); for(i = 2; i <= k; i++)

if(m % i == 0) (7) A ; (8)A ; }

【供选择的答案】 (5) A、isprime (m) != 0 B、isprime (i) != 0

C、isprime (m) == 0 D、isprime (i) == 0 (6) A、if(m != 1) return 1; B、if(m == 1) return 0;

C、; D、if(m == 1) return 1; (7) A、return 0 B、return 1

C、return i <= k D、return (8) A、return 1 B、return 0

C、return D、return i <= k

3. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】

输入6个整数,找出其中最小的数,将它和最后一个数交换,然后输出这6个数。要求定义和调用函数swap(x, y),该函数交换指针x和y所指向单元的内容。

运行示例:

Enter 6 integers: 6 1 8 2 10 97 After swaped: 6 97 8 2 10 1 【程序】

void swap(int *x, int *y) { int t; (9) ; }

main()

{ int i, index, a[10]; for(i = 0; i < 6; i++) scanf(\ (10) ;

for(i = 1; i < 6; i++) if(a[index] > a[i]) (11) ; (12) ;

printf(\ for(i = 0; i < 6; i++) printf(\

2

printf(\}

【供选择的答案】 (9) A、t = *x, *x = *y, *y = t

B、t = x, x = y, y = t

C、*t = *x, *x = *y, *y = *t D、&t = x, x = y, y = &t

(10)A、index = 0 B、index = 5 C、index = index D、index = 1 (11)A、a[index] = a[i] B、i = index C、a[i] = a[index] D、index = i (12)A、swap(a[index], a[5]) B、swap(*a[index], *a[5]) C、swap(a[*index], a[*5]) D、swap(&a[index], &a[5])

4. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

#include

#define T(c) (((c) >= '0') && ((c) <= '9') ? (c) - '0' : -1) void f1(char ch) {

switch(ch){

case '0': printf(\ case '1': printf(\

case '2': printf(\ case '3': printf(\ default: printf(\ }

printf(\}

double f2() {

return (double)(5/2); }

double f3(int n) {

if(n == 1) return 1.0;

else return 1.0 + 1.0/f3(n-1); }

main() {

printf(\ f1('1');

printf(\ printf(\} 【问题】

(13) 程序运行时,第1行输出 (13) 。

3

A、7 -1 B、-1 7 C、7 a (14) 程序运行时,第2行输出 (14) 。

A、1239 B、12 C、1 (15) 程序运行时,第3行输出 (15) 。

A、2.5 B、2 C、2.0 (16) 程序运行时,第4行输出 (16) 。 A、1.000 B、2.000 C、1.500

D、-1 -1 D、9 D、3

D、1.667

5. 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

程序1

#include main() {

int i, j, t, a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; for(i = 0; i < 3; i++)

for(j = 0; j <= i/2; j++){

t = a[i][j], a[i][j] = a[i][3-j], a[i][3-j] = t; }

printf(\ printf(\}

程序2

#include main() {

char str[10] = \ int i, number = 0;

for(i = 0; str[i] != '\\0'; i++)

if(str[i] >= '0' && str[i] <= '7')

number = number * 8 + str[i] - '0'; printf(\

for(i = 0; str[i] != '\\0'; i++)

if(str[i] >= '0' && str[i] <= '5')

number = number * 6 + str[i] -'0'; printf(\} 【问题】

(17) 程序1运行时,第1行输出 (17) 。

A、3 B、4 C、1 D、2 (18) 程序1运行时,第2行输出 (18) 。 A、12 B、11 C、10 D、9 (19) 程序2运行时,第1行输出 (19) 。 A、2 B、27 C、23 D、16 (20) 程序2运行时,第2行输出 (20) 。

A、19 B、140 C、147 D、2

6阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

4

#include main() {

int i, j;

char ch, *p1, *p2, *s[4]={\ for(i = 0; i < 4; i++){ p1 = p2 = s[i]; ch = *(p1 + i);

while(*p1 != '\\0'){ if(*p1 != ch){ *p2 = *p1; p2++; }

p1++; }

*p2 = '\\0'; }

for(i = 0; i < 4; i++) printf(\} 【问题】

(21) 程序运行时,第1行输出 (21) 。

A、our B、four C、fur D、fou (22) 程序运行时,第2行输出 (22) 。

A、ello B、hllo C、heo D、hell (23) 程序运行时,第3行输出 (23) 。

A、peak B、eak C、pek D、pak (24) 程序运行时,第4行输出 (24) 。

A、pple B、apple C、ale D、appe

二、程序编写 (每小题14分,共28分)

1.编写程序,输入100个整数,将他们存入数组a,求数组a中所有奇数之和。

2.按下面要求编写程序:

(1)定义函数total(n)计算1?2?3????n,函数返回值类型是int。

(2)定义函数main(),输入正整数n,计算并输出下列算式的值。要求调用函数total(n)计算1?2?3????n。 s?1?11?2?11?2?3????11?2?3???n

计算机等级考试参考答案(二级C)

一、程序阅读与填空(24小题,每小题3分,共72分) ⑴ D ⑵ C ⑶ C ⑷ B ⑸ B ⑹ B ⑺ A ⑻ A ⑼ A ⑽ A ⑾ D ⑿ D ⒀ A ⒁ B ⒂ C ⒃ D ⒄ D ⒅ C ⒆ C ⒇ B (21)A (22)B (23)C (24)D 二、程序编写(每小题14分,共28分)

5

1.

#include void main() {

int a[100], i, s=0;

for(i = 0; i < 100; i++) {

scanf(\ if(a[i] % 2 == 1) s = s + a[i]; }

printf(\} 2.

#include int total(int n) {

int i, s = 0;

for(i = 1; i <= n; i++) s = s + i; return s; }

void main() {

int i, n; float s = 0;

scanf(\

for(i = 1; i <= n; i++)

s = s + 1.0 / total(i); printf(\}

2009年秋浙江省高等学校

计算机等级考试试卷(二级C)

一、程序阅读与填空(24小题,每小题3分,共72分)

1. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

计算并输出下式的值,要求精确到最后一项的绝对值小于10(保留4位小数)。

s?1?14?17?110??

-3

运行示例: sum = 0.8361 【程序】

#include #include main() {

int denominator = 1, flag = 1;

6

double item, sum=0; ___(1)____ while(____(2)___){ ___(3)____

denominator =denominator + 3; flag = -flag;

}

printf(\ sum);

}

【供选择的答案】 (1) [A] item=0;

[C] ;

[B] item=0.0001 [D] item=2

[B] fabs(item)< 1E - 3 [D] fabs(item)< 0.001

(2) [A] fabs(item)>=1E - 3

[C] fabs(item)>= 0.0001

(3) [A]sum=sum +item; item=flag*1.0/denominator;

[B] sum=sum + flag*1.0/denominator; [C] item=flag*1.0/denominator; sum=sum+item; [D] item=item+flag*1.0/denominator; (4) [A] %.0f

[B]%.4f

[C]%f

[D] %4.f

2. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】输出1到100之间的所有完数。要求定义和调用函数is(n)判断n是否为完数,若n为完数则返回1,否则返回0。完数就是因子和与它本身相等的数,1不是完数。

运行示例: 6 28 【程序】

#include main() {

int i; int is(int n); for(i=1; i<=100; i+1) if(___(5)____) printf(“ %d ”, i);

}

int is (int n) {

int i, sum; __(6)___ sum = 0;

for(i=1; i<=n/2; i++)

if(___(7)____)

sum=sum+i;

7

}

if (__(8)__) return 1; else return 0;

【供选择的答案】 (5) [A] is(i)= =0

[C] !is(n)

[B] is(i) != 0 [D] is(n)

[B] if(n!=1) return 0; [D] if(n= =1) return 1; [B] n%i! =0 [D] i%n!=0

[B]sum!=n

[C]i>n/2

[D] sum= =n

(6) [A] if(n!=1) return 1;

[C] if(n= =1) return 0; (7) [A] n%i= =0

[C] i%n= =0 (8) [A] n= =0

3. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】计算并输入Fibonacci序列前10项之和。要求定义和调用函数fun(fib, n),该函数将Fibonacci序列前n项的值存放在一维数组fib中。Fibonacci序列:1,1,2,3,5,8,13,21,34,55,??,该序列的第一个数和第二个数都是1,从第三个数开始,每个数是前两个数之和。

运行示例: sum = 143 【程序】

#include main()

{ int i, sum, a[10];

___(9)____ ___(10)____ sum=0;

for(i=0; i<10; i++)

sum=sum+____(11)___; printf(“sum=%d”, sum); }

void fun (int fib[],int n) { }

int i;

fib[0] = fib[1] = 1; for(i=2; i

【供选择的答案】

8

(9) [A] fun(int fib[],int n);

[C] ; (10) [A] fun(fib, n); [C] fun(a,10);

[B] void fun(int fib[], int n) [D] void fun(int fib[], int n); [B] fun(a[], 10); [D] fun(a[10], 10);

(11) [A]fib[i] [B] a[i] [C] a[10] [D] fib[0] (12) [A] fib[i] = fib[i-1] + fib[i-2];

[B] fib[i-1] = fib[i-2] + fib[i-3]; [C] fib[i+1] = fib[i] + fib[i-1]; [D] fib[i] = fib[i-1] + fib[i+1];

4. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

#include

#define S(a, b) (a)>(b) ? (a):(b) int f1(char ch) { int grade;

switch(ch){ case “A”: grade =95; break; case “B”: grade =85; break; }

case “C”: grade =75; case “D”: grade =65; break;

default: grade=0; }

return grade;

int f2( )

{ static int k=1, s;

s = s+k; k++; return s ;

}

int f3 (int n )

{

if (n = = 1) return 2; else return f3(n-1);

}

main() { int i;

printf(“%d\\n”, f1(?C?)); for (i=1; i<=3; i++)

f2( );

9

printf(“%d\\n”, f2( )); printf(“%d\\n”, f3(4)); printf(“%d\\n”, S(3, 2+2)); } 【问题】

(13) 程序运行时,第1行输出 (13)

[A]65 [C] 75 (14) 程序运行时,第2行输出 (14) [A]10 [C] 6 (15) 程序运行时,第3行输出 (15) [A]24 [B]2

[B] 0

[D] 95 [B] 1 [D]2 [C] 10

[D] 1

(16) 程序运行时,第4行输出 (16)

[A] 3 [B]4 [C]5 [D] 1

5. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 程序1

#include main() {

int i, j, a[3] [3]={1,0,0,4,5,0,7,8,9}; int flag=1;

for (i=0;i<3;i++) for (j=0; j0; j--)

for(i=2; i>=j; i--) flag=a[i] [j];

printf(“%d\\n”, flag);

}

程序2

#include main()

{ char str[10] = ”4Ae2E”;

int i;

for(i=0; str[i] !=?\\0?; i++) if (str[i]>=?a? && str[i]<=?z?) putchar(str[i]); putchar(?\\n?);

10

for(i=0; str[i] !=?\\0?; i++) if (str[i]>=?a? && str[i]<=?z?) putchar(str[i] - ?a? + ?A?); else if (str[i]>=?A? && str[i]<=?Z?)

putchar(str[i] - ?A? + ?a?);

putchar(?\\n?); } 【问题】

(17) 程序1运行时,第1行输出 (17)

[A]0 [C] 8 (18) 程序1运行时,第2行输出 (18) [A]9 [C] 5 (19) 程序2运行时,第1行输出 (19) [A]AeE [B]a

[B] 1

[D] 9 [B] 7 [D]1 [C] ae

[D] e

(20) 程序2运行时,第2行输出 (20)

[A] 4Ae2E [B]42 [C]AeE [D] aEe

6. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

#include #include main( )

{ int i , j;

char str [10], *s[10]={“SQL”,”hello”,”bear”,”zone”}; gets (str);

for (i=0; i<4; i++){ }

if (i= =4) s[4]=str; for (i=0; i<5; i++) printf(“%s ”, s[i]); putchar(?\\n?);

if (strcmp(str, s[i]) > 0) continue; j =3;.

while ( j >= i){ s[j+1] = s[j]; j--; }

s[i] = str; break;

11

} 【问题】

(21) 程序运行时,输入apple , 输出 (21) [A]SQL apple hello bear zone [B] apple SQL hello bear zone [C] SQL hello bear zone apple [D] SQL hello apple bear zone (22) 程序运行时,输入I , 输出 (22) [A]SQL hello bear I zone [B] I SQL hello bear zone [C] SQL I hello bear zone [D]SQL hello bear zone I (23) 程序运行时,输入zoo , 输出 (23)

[A]zoo SQL hello bear zone [B] SQL hello bear zoo zone [C] SQL hello bear zone zoo [D] SQL hello zoo bear zone

(24) 程序运行时,输入orange , 输出 (24) [A] SQL orange hello bear zone [B] SQL hello orange bear zone [C]orange SQL hello bear zone [D] SQL hello bear orange zone

二、程序编写(每小题14分,共28分)

1. 编写程序,输入100个整数,将它们存入数组a中,查找并输出数组a中的最小值。

2.按下面要求编写程序:

(1)定义函数cal_power(x, n)计算x的n次幂(即xn),函数返回值类型是double.

(2)定义函数main(),输入浮点数x和正整数n,计算并输出下列算式的值。要求调用函数cal_power(x, n)计算x的n次幂。

s?1x?1x2?1x3????1xn

C模拟试卷29参考答案

一、程序阅读与填空(24小题,每小题3分,共72分)

题号 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) 答案 D A C B B C A D D C B A A A B B C C D D A B C D

二、程序编写(2小题,每小题14分,共28分)

12

1.

#include void main() {

int a[100],i;

int min;

for(i=0;i<100;i++)

scanf(\ min=a[0]; for(i=1;i<100;i++) if(a[i]

#include

double cal_power(double x,int n) {

double p = x; int i;

for(i=1;i

void main()

{

double x, s=0; int i,n;

scanf(\ for(i=1;i<=n;i++)

s=s+1/cal_power(x,i); printf(\}

2009年春浙江省高等学校

计算机等级考试试卷(二级C)

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入1个正整数n,计算下列算式的前n项之和。 S=1-1/3+1/5-1/7+?

13

运行示例: Enter n:2 Sum=0.67 【程序】

#include main( )

{ int denominator , flag,i, n;

double item,sum; printf(”Enter n:”); scanf(”%d”,&n);

denominator = 1; (1) ;

sum = 0

for(i = 1; (2) ; i++){ (3) ; sum=sum +item; (4) ;

Denominator= denominator+2; }

printf(”Sum=%.2f\\n”,sum); }

【供选择的答案】

(1) A、flag=0 B、flag=-1

C、flag=n D、flag=1

(2) A、i>=n B、i

C、i>n D、i<=n

(3) A、item=flag/denominator

B、item=1 /denominator

C、item=flag*1.0/denominator D、item=1.0/denominator

(4) A、flag=-1 B、flag=0

C、flag=-flag D、flag=flag

试题2(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。将6~20之间的偶数表示成两个素数之和,打印时一行打印5组。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

运行示例:

6=3+3,8=3+5,10=3+7,12=5+7,14=3+11 16=3+13 18=5+13 20=3+17 18=7+11 【程序】

#include #include int prime(int m) { int i, n;

14

if(m == 1) return 0; n = sqrt(m);

for(i = 2; i <= n; i++) if(m % i == 0) return 0 (5)

}

main()

{ int count, i,number; count=0;

for(number=6;number<=20;number=number+2){ for(i=3;i<=number/2;i=i+2) if(__(6)_____){

printf(“%d=%d+%d”,number,i,number – i); count++;

if(__(7)_____) printf(“\\n”); ( (8) ) } } }

【供选择的答案】

(5) A、; B、return 1;

C、return 0; D、else return 1; (6) A、prime(i)!=0 || prime(number – i)!=0 B、prime(i)!=0 && prime(number – i)!=0

C、prime(i)==0 || prime(number – i)==0

D、prime(i)==0 && prime(number – i)==0 (7) A、count % 5 ==0 B、count % 5!=0 C、(count+1)%5==0 D、(count+1)%5!=0 (8) A、break; B、else break; C、continue; D、;

试题3(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入一行字符,统计并输出其中数字字符、英文字母和其他字符的个数。要求定义并调用函数count(s, digit,letter,other)分类统计字符串s中数字字符、英文字母和其它字符的个数,函数形参s的类型是字符指针,形参digit,letter,other的类型是整形指针,函数类型是void。

运行示例:

Enter characters:f(x,y)=5x+2y-6 Digit=3 letter=5 other=6 【程序】

#include

void count (char *s, int * digit, int * letter, int * other) { _____(9)___ while(_____(10)___){

if (*s>=?0? && *s<=?9?) (*digit)++;

else if ((*s>=?a? && *s<=?z?)||(*s>=?A? && *s<=?z?)) (*letter)++;

15

else

(*other)++; s++; } }

main() { int i=0,digit,letter,other; char ch,str[80];

printf(“Enter characters:”); ch=getchar();

while (____(11)___){ str[i]=ch; i++;

ch=getchar(); }

str(i)=?\\0?; ___(12)__;

Printf(“digit=&d letter=%d other=%d\\n”, digit,letter,other); }

【供选择的答案】

(9) A、int dight=0,letter=0,other=0;

B、int *dight=0,*letter=0,*other=0; C、dight=letter=other=0;

D、*dight=*letter=*other=0; (10) A、*s++ !=?\\0 ? B、*s++ !=?\\n? C、*s!=?\\0? D、 *s !=?\\n? (11) A、ch !=?\\0? B、ch !=?\\n? C、ch ==?\\0? D、ch ==?\\n?

(12) A、count(str,&digit,&letter,&other)

B、count(&str,&digit,&letter,&other)

C、count(*str, digit, letter,other)

D、count(*str,*digit,*letter,*other)

试题4(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include main()

{ int flag=0,i;

int a[7]={8,9,7,9,8,9,7};

for(i=0;i<7;i++) if(a[i]==7){ flag=i

break; }

printf(“%d\\n”,flag); flag=-1

for(i=6;i>=0;i--) if(a[i]==8){ break; flag=i;

16

}

(13) 程序运行时,第1行输出 (13) 。

A、2 B、0 C、3 D、6 (14) 程序运行时,第2行输出 (14) 。

A、4 B、-1 C、0 D、5 (15) 程序运行时,第3行输出 (15) 。

A、2 4 6 B、4 C、1 3 5 D、6 (16) 程序运行时,第4行输出 (16) 。

A、2 4 6 B、2 C、1 3 5 D、6

试题5(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

int f1(int n)

{ if(n==1) return 1 ;

else return f1(n-1) + n; }

int f2(int n) { switch(n){ case 1:

case 2:return 1;

default: return f2(n-1) + f2(n-2); } }

void f3(int n)

{ printf(“%d”,n);

if(n/10 !=0) f3(n/10); }

void f4(int n)

{ if (n/10 !=0) f4(n/10); printf(“%d”, n); }

#include main()

{ printf(“%d\\n”,f1(4)); printf(“%d\\n”,f2(4)); f3(123);

printf(“\\n”);

}

printf(“%d\\n”,flag); flag=0;

for(i=0;i<7;i++) if(a[i]==9){

printf(“%d”,i); }

printf(“\\n”); flag=0;

for(i=0;i<7;i++)

if(a[i]==7) flag=i; printf(“%d\\n, flag”);

17

f4(123);

printf(“\\n”); }

(17) 程序运行时,第1行输出 (17) 。 A、10 B、24 C、6 D、1 (18) 程序运行时,第2行输出 (18) 。

A、1 B、3 C、2 D、4 (19) 程序运行时,第3行输出 (19) 。

A、123 B、3 C、321 D、1 (20) 程序运行时,第4行输出 (20) 。

A、1 B、123 C、3 D、321

试题6(每小题3分,共12分)

#include

struct num{ int a,b;};

void f(struct num s[], int n) { int index, j, k; struct num temp;

for(k=0;k< n-1;k++){ index=k;

for(j=k+1;j

if(s[j].b

main()

{ int count, i, k, m, n, no; struct num s[100],*p;

scanf(“%d%d%d”, &n, &m, &k); for(i=0;i

count = no =0; while(no

if(p->b==0) count++; if(count==m){ no++; p->b=no; count=0; } p++;

if(p==s + n) p=s; }

f(s,n);

printf(“%d: %d\\n”, s[k-1].b, s[k-1].a); }

(21) 程序运行时,输入5 4 3,输出 (21) 。

18

A、3: 5 B、2: 3 C、1: 2 D、4: 1

(22) 程序运行时,输入5 3 4,输出 (22) 。

A、3: 5 B、1: 2

C、4: 3 D、4: 2

(23) 程序运行时,输入7 5 2,输出 (23) 。

A、1: 5 B、6: 1

C、2: 3 D、2: 4

(24) 程序运行时,输入4 2 4#,输出 (24) 。

A、3: 3 B、4: 2

C、2: 4 D、4: 1

试题7 (28分)

(1) 定义函数fact(n)计算n的阶乘:n!=1*2*??*n,函数形参n的类型是int,

函数类型是double。

(2) 定义函数cal(x, e)计算下列算式的值,直到最后一项的值小于e,函数形参x

和e的类型都是double,函数类型是double。要求调用自定义函数fact(n)计算n的阶乘,调用库函数pow(x, n)计算x的n次幂。 S=x+x^2/2!+x^3/3!+x^4/4!+……

(3)

定义函数main(),输入两个浮点数x和e,计算并输出下列算式的值,直到最到最后一项的值小于精度e。要求调用自定义函数cal(x,e)计算下列算式的值。

S=x+x^2/2!+x^3/3!+x^4/4!+……

(4) 计算机等级考试参考答案(二级C)

试题1~6 (每小题3分)

⑴ D ⑵ D ⑶ C ⑷ C ⑸ B ⑹ B ⑺ A ⑻ A ⑼ D ⑽ C ⑾ B ⑿ A ⒀ A ⒁ B ⒂ C ⒃ D ⒄ A ⒅ B ⒆ C ⒇ B (21)A (22)D (23)C (24)D

试题7 (28分)

#include #include double fact(int n) {

double p=1; int i;

for(i=1;i<=n;i++) p=p*i;

return p; }

double cal(double x,double e) {

19

double s=0,t; int i=1; do{

t=pow(x,i)/fact(i); s=s+t; i++; }while(t>=e); return s; }

void main() {

double x,e,s;

scanf(\ s=cal(x,e); printf(\}2008

年秋浙江省高等学校计算机等级考试(二级C)

说明: 考试时间为90分钟。

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入一批学生的成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级分为三级,分别为A(90-100)、P(60-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 main()

{ int mark,a,p,f; a=p=f=0;

printf(“Enter scores:”); scanf(“%d”,&mark); while(___(1)___){ if(mark>=90) a++; ___(2)___ p++;

___(3)___ f++; ___(4)___ }

printf(“A:%d;P:%d;F:%d;\\n”,a,p,f);

20

}

【供选择的答案】 (1) [A] mark>=0

[C] mark<=0 (2) [A] else if(mark>=60)

[C] else (mark>=60) (3) [A] else (mark<60)

[C] if(mark>0) (4) [A] scanf(\”,mark);

[C] ;

[B] mark>0

[D] mark<0 [B] if(mark>=60) [D] if(mark<90) [B] else

[D] else if(mark<=60) [B] scanf(\”,&mark); [D] mark=getchar();

试题2(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】 求1-999之间所有满足各位数字的立方和等于它本身的数。例如153的各位数字的立方和是13+53+33=153 运行示例: 1 153 370 371 407

【程序】

#include 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; (7) [A] digit=x/10; (8) [A] x= =0

[B] sum=1; [B] ; [B] j!=0

[C] sum=j; [C] digit=x; [C] j= =0

[D] ; [D] digit=x; [D] x!=0

(6) [A] x=1; [B] x=j; [C] ; [D] x=sum;

试题3(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入10个整数,将它们从大到小排序后输出。

21

运行示例:

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;k

for(i=k+1;i

if(a[i]>a[index]) index=i; ___(11)___ } }

void swap(int *x,int *y) { int t;

t=*x;*x=*y;*y=t; }

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

[C] int *a,int n

(11) [A] swap(*a[index],*a[k])

[C] swap(index,k)

[B] int *a,int *n [D] int a,int *n

[B] swap(a[index],a[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分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

22

程序1

#include main()

{ int j,k,s1,s2; s1=s2=0;

for(j=1;j<=5;j++){ s1++;

for(k=1;k<=j;k++) s2++; }

printf(“%d %d”,s1,s2); }.

程序2

#include 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 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 main()

{ int j,k,s1,s2; s1=s2=0;

for(j=1;j<=5;j++,s1=0){ s1++;

for(k=1;k<=j;k++) s2++; }

printf(“%d %d”,s1,s2); }.

【供选择的答案】

23

(13) 程序1运行时,输出:

[A] 0 15 [B]5 0 (14) 程序2运行时,输出: [A] 0 15 [B]5 0 (15) 程序3运行时,输出: [A] 0 15 [B]5 0 (16) 程序4运行时,输出: [A] 0 15 [B]5 0

[C]5 5 [C]5 5 [C]5 5 [C]5 5

[D] 5 15 [D] 5 15 [D] 5 15 [D] 5 15

试题5(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】 程序1

#include 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 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 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 main()

{ int i,m=15,y=-1; for(i=2;i<=m/2;i++)

if(m%i= =0) {break;y=0;} printf(“%d”,y);

24

}

【供选择的答案】

(17) 程序1运行时,输出:

[A]1 [B]0 (18) 程序2运行时,输出: [A]15 [B]0 (19) 程序3运行时,输出: [A]-1 [B]1 (20) 程序4运行时,输出: [A]0 [B]15

[C]15 [C]-1 [C]0 [C]1

[D]-1 [D]1 [D]15 [D]-1

试题6(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include 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<=?8?) a[k++]=ch; a[k]=?\\0?;

for(k=0;a[k]!=?\\0?;k++) printf(“%ds”,s[(?9?-a[k])-1]); }

【供选择的答案】

(21) 程序运行时,输入5678,输出:

[A] two three [C] one four three (22) 程序运行时,输入8561#,输出:

[A] two three [C] one four three (23) 程序运行时,输入7902#,输出:

[A] two three [C] one four three (24) 程序运行时,输入7633#,输出:

[A] two three [C] one four three

[B] two

[D] four three two one [B] two

[D] four three two one [B] two

[D] four three two one [B] two

[D] four three two one

试题7(28分)

25

(1)定义函数fact(n)计算n的阶乘:n!=1*2*??*n,函数返回值类型是double。

(2)定义函数cal(e)计算下列算式的值,直到最后一项的绝对值小于e,函数返回值类型是double。 s=1+

12!?1?14!?......

-1

-2

-3

-n

(3)定义函数main(),输入正整数n,当精度e分别取值为10、10、10、??、10时,分别计算并输出下列算式的值,直到最后一项的绝对值小于精度e,以比较不同精度下算出的3!结果,要求调用函数cal(e)计算下列算式的值。

计算机等级考试参考答案(二级C)

试题1~6 (每小题3分)

⑴ A ⑵ A ⑶ B ⑷ B ⑸ A ⑹ B ⑺ C ⑼ C ⑽ C ⑾ D ⑿ D ⒀ D ⒁ C ⒂ B ⒄ A ⒅ B ⒆ C ⒇ D (21)D (22)C (23)B (24)A

试题7 (28分)

#include #include double fact(int n); double cal(double e); void main() {

int i,n;

double e=1;

printf(\

while(scanf(\ for(i=1;i<=n;i++) {

e=e*1.0/10;

printf(\ } }

double fact(int n) {

double y=1; int i;

for(i=1;i<=n;i++) y=y*i; return y;

26

⑻ D ⒃ A

}

double cal(double e) {

double s=0,t=1; int i=1; while(t>=e) {

s=s+t;

t=1/fact(++i); }

return s; }

2008年春浙江省高等学校计算机等级考试试卷(二级C)

说明:(1) 考生应将所有试题的答案填写在答卷上。其中试题1到试题6请在答卷上各小题正

确选项的对应位置处填“√”;

(2) 请将你的准考证号的后五位填写在答卷右下角的指定位置内; (3) 考试时间为90分钟。

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入1个正整数n(n>=2),输出菲波那契(Fibonacci)序列的前n项,每行输出6个数。菲波那契(Fibonacci)序列:1,1,2,3,5,8,13,??,数列的前两个数都是1,从第三个数开始,每个数是前两个数之和。

运行示例: Enter n:10

1 1 2 3 5 8 13 21 34 55 【程序】

#include main( ) {

int count, i, n, x1, x2, x; printf(”Enter n:”); scanf(”%d”,&n); x1 = x2 = 1;

printf(”mm”,x1, x2); (1) ;

for(i = 1; i <= n-2; i++){ (2) ;

printf(”m”, x); count++;

if( (3) ) printf(”\\n”); x1 = x2;

27

(4) ; } }

【供选择的答案】

(1) A、count = 2 B、count = 0

C、count = 1 D、count = -1

(2) A、x = x1 – x2 B、x = x1 + x2

C、x = x1 D、x = 2

(3) A、count / 6 == 0 B、count % 6 != 0

C、count % 6 == 0 D、count / 6 != 0

(4) A、x = x1 +x2 B、x2 = x1

C、x = x2 D、x2 = x

试题2(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入2个正整数m和n(1<=m

Enter m, n: 1 10 count = 4, sum = 17 【程序】

#include #include int prime(int m) { int i, n;

if(m == 1) return (5) ; n = sqrt(m);

for(i = 2; i <= n; i++)

if(m % i == 0) return (6) ; return (7) ;

}

main()

{ int count = 0, i, m, n, sum = 0; printf(”Enter m, n:”); scanf(”%d%d”,&m, &n); for(i = m; i <= n; i++) if( (8) ){ sum += i; count++; }

printf(\}

【供选择的答案】

(5) A、1 B、m

C、m == 1 D、0 (6) A、m B、1 C、0 D、n (7) A、m B、1

28

C、0 D、i == n (8) A、prime(i) != 0 B、prime(i) == 0 C、i == prime(i) D、!prime(i)

试题3(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入一个2 * 3的二维数组,找到最大值以及它的行下标和列下标,并输出该矩阵。 运行示例:

Enter a array(2*3):3 2 10 -9 6 -1 max = a[0][2] = 10 3 2 10 -9 6 -1

【程序】

#include main( ) { int col, i, j, row; int a[2][3];

printf(\ for(i = 0; i <2; i++)

for(j = 0; j < 3; j++)

scanf(\

(10) ;

for(i = 0; i < 2; i++)

for(j = 0; j < 3; j++)

if(a[i][j] > a[row][col]){ (11) ; }

printf(”max = a[%d][%d] = %d\\n”, row, col, a[row][col]); for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++)

printf(”M”, a[i][j]);

(12)

}

【供选择的答案】

(9) A、&a[i][j] B、&a[j][i] C、a[i][j] D、a[j][i]

(10) A、row = col = 2; B、row = col = 0; C、a[row][col] = 0; D、a[row][col] = -1; (11) A、row = j; col = i; B、a[row][col] = a[i][j]; C、row = i; col = j; D、a[row][col] = a[j][i]; (12) A、printf(”\\n”)}; B、}printf(”\\n”); C、; D、printf(”\\n”);}

试题4(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include main()

{ int op1, op2, res;

29

char operator;

scanf(”%d”, &op1); operator = getchar(); while(operator != ?=?){ scanf(”%d”, &op2); switch(operator){

case ?+?: res = op1+op2; break; case ?-?: res = op1-op2; break; case ?*?: res = op1*op2; break; case ?/?: res = op1/op2; break; default: res = 0; }

op1 = res;

operator = getchar(); }

printf(”%d\\n”, res); }

(13) 程序运行时,输入2*3-2=,输出 (13) 。

A、6 B、2 C、0 D、4 (14) 程序运行时,输入15+2/3=,输出 (14) 。

A、16 B、15 C、6 D、5 (15) 程序运行时,输入1+2*10-10/2=,输出 (15) 。 A、10 B、16 C、15 D、25 (16) 程序运行时,输入1+3*5/2-7=,输出 (16) 。 A、3 B、1 C、-2 D、-3

试题5(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include #define MAXLEN 80 main ()

{ int k = 0, number = 0; char str[MAXLEN];

while((str[k] = getchar()) != ?#?) k++;

str[k] = ?\\0?;

for(k = 0; str[k] != ?\\0?; k++)

if(str[k]>=?0?&&str[k]<=?9?||str[k]==?A?||str[k]==?B?) if(str[k] >= ?0?&&str[k] <= ?9?)

number = number * 12 + str[k] – ?0?; else if(str[k] == ?A?||str[k] == ?B?)

number = number * 12 + str[k] –?A? + 10; else; /*第15行*/ else break; /*第16行*/ printf(”%d\\n”,number); }

(17) 程序运行时,输入10#,输出 (17) 。

A、16 B、10 C、12 D、1 (18) 程序运行时,输入1a0#,输出 (18) 。 A、264 B、10 C、1 D、12

30

(19) 将第16行改为“;”后,程序运行时,输入A*0#,输出 (19) 。 A、0 B、120 C、10 D、12

(20) 将第16行改为“else break;”后,删除第15行,程序运行时,输入1b0#,输出 (20) 。

A、10 B、12 C、276 D、1

试题6(每小题3分,共12分)

#include main()

{ char *s[2] = {”****”, ”****”}; while(*s[1] != ?\\0?){

printf(”%s\\n”, s[0]+strlen(s[1])-1); s[1]++; } }

(21) 程序运行时,第1行输出 (21) 。

A、**** B、*** C、** D、*

(22) 程序运行时,第2行输出 (22) 。

A、**** B、***

C、** D、*

(23) 程序运行时,第3行输出 (23) 。

A、**** B、***

C、** D、*

(24) 程序运行时,第3行输出 (24) 。

A、**** B、***

C、** D、*

试题7 (28分)

(5) 定义函数fact(n)计算n的阶乘:n!=1*2*??*n,函数返回值类型是double。

n(6) 定义函数cal(m, n)计算累加和:s??k?m?(m?1)?......?n,函数返回

k?m值类型是double。

(7) 定义函数main(),输入正整数n,计算并输出下列算式的值。该算式中,每一项

n的分子是累加和,要求调用函数cal(m,n)计算?k;每一项的分母是阶乘,要

k?m求调用函数fact(n)计算n!。

(8) y=1+

1?22!?1?2?33!?......?1?2?......?nn!

计算机等级考试参考答案(二级C)

试题1~6 (每小题3分)

⑴ A ⑵ B ⑶ C ⑷ D ⑸ D ⑹ C ⑺ B ⑻ A ⑼ A ⑽ B ⑾ C ⑿ D ⒀ D ⒁ D ⒂ A ⒃ A ⒄ C ⒅ C ⒆ B ⒇ B (21)D (22)C (23)B (24)A

31

试题7 (28分)

#include double fact(int n) {

int i;

double p=1;

for(i=1;i<=n;i++) p*=i; return(p); }

double cal(int m,int n) {

int i;

double s=0; for(i=m;i<=n;i++) s+=i; return(s); }

void main() {

int i,n;

double y=0;

printf(\ scanf(\ for(i=1;i<=n;i++)

y+=cal(1,i)/fact(i);

printf(\}

2007年秋浙江省高等学校计算机等级考试试卷(二级C)

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2℉。计算公式如下,式中:c表示摄氏温度,f表示华氏温度。

C=

5??f?32?9

运行示例:

32

Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 32 0.0 34 1.1

【程序】

# include 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) ){ celsius = (3) ;

printf(“%d (4) \\n”,fahr,celsius); }

【供选择的答案】

(1) A、 fahr <= upper B、 fahr < upper C、 fahr >= upper D、 fahr > upper (2) A、 fahr++ B、 fahr = fahr -2

C、 fahr + 2 D、 fahr = fahr + 2

(3) A、 5 * (fahr - 32)/9 B、 (5.0/9.0) * (fahr - 32) C、 5 / 9* (fahr - 32) D、 5 * fahr – 32/9

(4) A、 m B、 %6.2f C、 %6.1f D、 %6.0f

试题2(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入2个正整数a和n,求a+aa+aaa+aa?a(n个a)之和,要求定义并调用函数fn(a,n),它的功能是返回aa?a(n个a)。例如,fn(3,2)的返回值是33。

运行示例:

Enter a: 2 Enter n: 3 sum = 246 【程序】

33

# include main( )

{ int i,n; 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) { 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;

(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); (7) A、tn=tn*10; B、a=a*10; C、sn=tn*10; D、sn=sn+a*10; (8) A、return; B、return sn; C、return a; D、return tn;

试题3(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

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

运行示例1:

Enter a string: Madam I’m Adam

34

Yes

运行示例2:

Enter a string: elephant No 【程序】

# include

# 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.h

C、stdlib.h D、math.h

(10) A、i++; B、str[k] = str[i]; C、str[i]=str[k] D、;

(11) A、str[i] = ‘\\0’; D、str[i-1] = ‘\\0’; C、str[k] = ‘\\0’; D、;

(12) A、flag = 1; B、flag = 0;

35

C、 ; D、continue;

试题4(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

# include 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、3 B、3#3

C、3#4 D、3#5

(14) 程序运行时,输入9, 输出 (14) 。

A、3 B、3#3 C、3#4 D、3#5

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

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

试题5(每小题3分,共12分)

阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】

# include main( )

{ int i, j, temp;

int a[3][3]= {1,2,3,4,5,6,7,8,9}; 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行 */

36

for(i = 0; i < 3; i++) for(j = 0; j < 3; j++)

printf(“-”, a[i][j]); }

void f(int *x, int *y) { int t;

t = *x; *x = *y; *y = t; }

(17) 程序的输出是 (17) 。

A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9

(18) 将第8行改为“f(&a[i][j], &a[j][i]);”后,程序的输出是 (18) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 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 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9

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

A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9

试题6(每小题3分,共12分)

# include

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++){ if(a[i] > a[x1]) x1 = i;

if(a[i] < a[x2]) x2 = i; }

f2(&a[x1], &a[0]);

for(i = 0; i < 5; i++) printf(“-”, a[i]); printf(“\\n”); f1(a[x2], a[1]);

37

for(i = 0; i < 5; i++) printf(“-”, a[i]); printf(“\\n”); f2(&a[x2], &a[4]);

for(i = 0; i < 5; i++) printf(“-”, a[i]); printf(“\\n”); f1(a[x1], a[3]);

for(i = 0; i < 5; i++) printf(“-”, 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;

}

(21) 程序运行时,第1行输出 (21) 。 A、1 2 3 4 5 B、2 1 3 4 5 C、1 2 3 5 4 D、5 2 3 4 1 (22) 程序运行时,第2行输出 (22) 。 A、2 1 3 4 5 B、5 2 3 4 1 C、2 5 3 4 1 D、1 2 3 4 5 (23) 程序运行时,第3行输出 (23) 。 A、1 2 3 5 4 B、2 5 3 1 4 C、1 2 3 4 5 D、5 2 3 4 1 (24) 程序运行时,第4行输出 (24) 。 A、5 2 3 1 4 B、1 2 3 4 5 C、1 2 3 5 4 D、5 2 3 4 1

试题7 (28分)

从n个不同的元素中,每次取出k个不同的元素,不管其顺序合并成一组,称为组合。 组合种数计算公式如下:

Cn=

kn!(n?k)!k!

(1) 定义函数fact(n)计算n的阶乘n!,函数返回值类型是double。

(2) 定义函数cal(k, n)计算组合种数Cn,函数返回值类型是double,要求调用函数fact(n)

计算n的阶乘。

k 38

(3) 定义函数main(),输入正整数n,输出n的所有组合种数Cnk (1?k?n),要求调用函数

cal(k,n)计算组合数。

计算机等级考试参考答案(二级C)

试题1~6 (每小题3分)

⑴ A ⑵ D ⑶ B ⑷ C ⑸ A ⑹ A ⑺ B ⑻ D ⑼ A ⑽ B ⑾ C ⑿ B ⒀ A ⒁ B ⒂ D ⒃ D ⒄ D ⒅ C ⒆ B ⒇ C (21)D (22)B (23)C (24)B

试题7 (28分)

#include double fact(int n) {

int i;

double p=1; for(i=1;i<=n;i++) p*=i; return p; }

double cal(int k, int n) {

return fact(n)/(fact(n-k)*fact(k)); }

void main() {

int k,n;

printf(\ scanf(\ for(k=1;k<=n;k++)

printf(\}

2007年春浙江省高等学校计算机等级考试试卷(二级C)

说明:⑴ 考生应将所有试题的答案填写在答卷上。其中试题1~试题6,请在答卷上各小题正

确选项的对应位置处填“√”;

⑵ 请将你的准考证号的后五位填写在答卷右下角的指定位置内; ⑶ 考试时间为90分钟;

39

试题1(每小题3分,共12分)

阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序说明】

输入一个正整数,按照从高位到低位的顺序输出各位数字。 运行示例:

Enter an integer: 1902 The digits are: 1 9 0 2 【程序】

#include void main( ) {

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;

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

40

本文来源:https://www.bwwdw.com/article/smh3.html

Top