文档库

最新最全的文档下载
当前位置:文档库 > 2009年秋C试卷

2009年秋C试卷

C 程序设计试卷第页(共页)

机密★启用前

2009年秋浙江省高等学校计算机等级考试

二级C 程序设计试卷

说明

(1) 本试卷共7页,满分100分;考试时间为90分钟;

(2) 考生应将所有试题的答案填写在答卷上;

(3) 程序阅读与填空全部是选择题,请在答卷上的各小题选项的对应位置上填“√”;

(4) 请将你的准考证号的后五位填写在答卷右下角的指定位置内。

一、 程序阅读与填空

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

【程序说明】

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

s =-+-+?11114710

运行示例:

sum = 0.8361

【程序】

#include

#include

main()

{ int denominator = 1, flag = 1;

double item, sum = 0;

(1)

while( (2) ){

(3)

denominator = denominator + 3;

flag = -flag;

}

printf("sum = (4) \n", sum);

}

【供选择的答案】

(1) A. item = 0; B. item = 0.001

C. ;

D. item = 2;

(2) A. fabs(item) >= 1E-3 B. fabs(item) < 1E-3

C. fabs(item) >= 0.0001

D. fabs(item) < 0.001

(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.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案(每小题3分,共12分)

【程序说明】

输出 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++)

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;

if( (8) ) return 1;

else return 0;

}

【供选择的答案】

(5) A. is(i) == 0 B. is(i) != 0

C. !is(n)

D. is(n)

(6) A. if(n != 1) return 1; B. if(n != 1) return 0;

C. if(n == 1) return 0;

D. if(n == 1) return 1;

(7) A. n % i == 0 B. n % i != 0

C. i % n == 0

D. i % n != 0

C程序设计试卷第页(共页)

(8) A. n == 0 B. sum != n

C. i > n/2

D. sum == n

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

【程序说明】

计算并输出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 < n; i++)

(12)

}

【供选择的答案】

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

C. ;

D. void fun(int fib[], int n);

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

C. 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];

C程序设计试卷第页(共页)

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

【程序】

#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=0*/

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(); /*调用了3次f2()*/

printf("%d\n", f2()); /*调用第4次f2()*/

printf("%d\n", f3(4)); /*调用到n==1后返回,返回值一直不变*/ printf("%d\n", S(3, 2+2)); /*比较大小*/

}

【问题】

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

A. 65

B. 0

C. 75

D. 95

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

A. 10

B. 1

C. 6

D. 2

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

C程序设计试卷第页(共页)

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

A. 3

B. 4

C. 5

D. 1

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

【程序】

程序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; j < i; j++)

flag = a[i][j];

printf("%d\n", flag);

for(j = 2; j > 0; 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');

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

B. 1

C. 8

D. 9

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

C程序设计试卷第页(共页)

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

A. AeE

B. a

C. ae

D. e

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

A. 4Ae2E

B. 42

C. AeE

D. aEe

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

【程序】

#include

#include

main()

{ int i, j;

char str[10], *s[10]={"SQL","hello","bear","zone"};

gets(str);

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

if(strcmp(str, s[i]) > 0) continue;

j = 3;

while(j >= i){

s[j+1] = s[j];

j--;

}

s[i] = str;

break;

}

if(i == 4) s[4] = str;

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

printf("%s ", s[i]);

putchar('\n');

}

【问题】

(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) 。

C程序设计试卷第页(共页)

C 程序设计试卷第页(共页)

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 中的最小值。 #include

void main()

{

int i,a[10],min;

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

scanf("%d",&a[i]);

min=a[0];

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

if(a[i]

printf("100个数中的最小值为%d",min);

}

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

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

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

231111......n s x x x x

=++++ #include

double cal_power(double x,int n)

{int i;

double t=1.0;

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

t=t*x;

return t;

}

void main()

{int i,n;

double x,s=0;

printf("x=");

scanf("%lf",&x);

printf("n=");

scanf("%d",&n);

printf("%lf",cal_power(x,2));

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

s=s+1.0/cal_power(x,i);

printf("%lf",s); }

C程序设计试卷第页(共页)