2008--2010浙江省二级C语言考试真题 - - 史杨杨

更新时间:2023-10-11 12:57:01 阅读量: 综合文库 文档下载

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

2008年春浙江省高校

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

试题1(每小题3分,共12分) 【程序说明】

输入一个整数n(n>=2),输入菲波那契序列的前n项,每行输出6个数,菲波那序列: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(\scanf(\x1=x2=1;

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

printf(\ count++;

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

(4) ; }

}

【供选择的答案】 (1)A、count=2 C、count=1 (2) A、x=x1-x2

B、count=0 D、count=-1 B、x=x1+x2 D、x=2 B、count%6!=0 D、count/6!=0 B、x2=x1 D、x2=x

答案:A 答案:B 答案:C 答案:D

C、x=x1 (3) A、count/6==0 C、count%6==0 (4) A、x=x1+x2 C、x=x2

试题2(每小题3分,共12分) 【程序说明】

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

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(\ scanf(\ for(i=m;i<=n;i++)

if( (8) ){ sum+=i; count++; }

printf(\}

【供选择的答案】 (5)A、1 B、m C、m==1 (6) A、m C、0 (7) A、m C、0

D、0 B、1

答案:D

答案:C 答案:B 答案:A

D、n B、1 D、i==n

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

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

【程序说明】

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

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

{int col,row,i,j;

int a[2][3];

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

scanf(\ (9) ); (10) ; for(i=0;i<2;i++) for(j=0;j<3;j++)

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

}

printf(\ for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(\ (12) }

【供选择的答案】 (9)A、&a[i][j] C、a[i][j] (10) A、row=col=2; C、a[row][col]=0; (11) A、row=j;col=i; C、row=i;col=j; (12) A、printf(“\\n”)};

B、&a[j][i]

D、a[j][i] 答案:A B、row=col=0;

D、a[row][col]=-1; 答案:B B、a[row][col]=a[i][j];

D、a[row][col]=a[j][i]; 答案:C B、}printf(“\\n”);

答案:D

C、; D、printf(“\\n”);} 试题4(每小题3分,共12分)

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

{int op1,op2,res; char opertor;

scanf (\ opertor=getchar(); while(opertor!='=') {

scanf (\ switch(opertor) {

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;

opertor=getchar(); }

printf(\

}

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

A、6 B、2

C、0 A、16

D、4 B、15

答案:D

(14)、程序运行时,输入15+2/3=,输出 (14) 。 C、6 D、5 答案:D (15)、程序运行时,输入1+2*10-10/2=,输出 (15) 。

A、10

C、15

B、16 D、25

答案:A

4、程序运行时,输入1+3*5/2-7=,输出 (16) 。

A、3 B、1 C、-2 D、-3 答案:A

试题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(\

}

(17)、程序运行时,输入10#,输出 (17) 。 A、16 B、10

C、12 D、1 答案:A (18)、程序运行时,输入1a0#,输出 (18) 。

A、264 B、10

C、1 D、12 答案:C (19)、第16行改为“;”后,程序运行时,输入A*0#,输出 (19) 。

A、0 B、120 C、10 D、12 答案:B

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

A、10 C、276

B、12 D、1

答案:B

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

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

main()

{ char *s[2]={\while(*s[1]!='\\0')

{printf(\s[1]++; }

}

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

A、**** B、*** C、** D、* 答案:D (22)、程序运行时,第2行输出 (19) 。

A、****

C、**

B、*** D、*

答案:C

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

A、**** B、*** C、** D、* 答案:B (24)、程序运行时,第4行输出 (19) 。 A、**** B、*** C、** 试题7(28分)

D、*

答案:A

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

2、定义函数cal(m,n)计算累加和:s=m+(m+1)+(m+2) ??+n,函数的返回值类型是double。 3、定义函数main(),输入整数n,计算并输出下列算式的值。该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算累加和;每一项的分母是阶乘,要求调用函数fact(n)计算n!。y=1+(1+2)/2!+(1+2+3)/3!+??+(1+2+3+??n)/n! #include

double fact(int n)//第一题 {int i;

double t=1;

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

t*=i;

return t; }

double cal(int m,int n) //第二题 {double s=0; int i;

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

main()//第三题 {int n,i;

double s=0;

printf(\请输入一个正整数:\ while(scanf(\ for(i=1;i<=n;i++) s+=cal(1,i)/fact(i); printf(\}

2008年秋浙江省高等学校

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

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

【程序说明】

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

while( (1) ) {

if(mark>=90)

a++;

(2) p++; (3) f++;

(4)

}

printf(\}

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

C、mark<=0

B、mark>0

D、mark<0 答案:A B、if(mark>=60)

D、if(mark<90)答案:A B、else

D、else if(mark<=60)答案:B或填else if(mark>=0) B、scanf(\D、mark=getchar();

答案:B

(2)A、else if(mark>=60)

C、else (mark>=60) (3)A、else (mark<60)

C、else if(mark>0) (4)A、scanf(\

C、; 试题2(第小题3分,共12分)

【程序说明】

求1~999之间所有满足各位数字的立方之和等于它本身的数。例如153的秋位数字的立方和是1+5+3=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(j==sum)printf(\ \

3

3

3

} }

【供选择的答案】 (5)A、sum=0;

C、sum=j;

(6)A、x=1;

C、;

B、sum=1; D、;

答案:A 答案:B 答案:C 答案:D

B、x=j; D、x=sum;

(7)A、digit=x/10;

C、digit=x; B、digit=x; D、;

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

}

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

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

main()

{ int i,a[10];

printf(\for(i=0;i<10;i++) scanf(\ (12) ; printf(\for(i=0;i<10;i++) printf(\

printf(\}

【供选择的答案】

(9)A、void swap(int *x,int *y) C、void swap(int *x,int *y); (10)A、int &a,int n

C、int *a,iny n

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

C、swap(index,k) (12)A、sort(a) C、sort(a[],10)

for(i=k+1;ia[index])index=i; (11)

B、;

D、void swap(int *x, *y); B、int *a,int *n D、int a,int *n

答案:C 答案:C

B、swap(a[index],a[k])

D、swap(&a[index],&a[k]) 答案:D B、sort{a[10]} D、sort(a,10)

答案:D

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

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

程序1

#include main()

{ int j,k,s1,s2; s1=s2=0; for(j=0;j<=5;j++){ s1++; for(k=1;k<=j;k++) s2++; }

printf(\}

程序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(\}

程序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(\}

程序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(\}

(13)程序1运行时。输出 (13) 。答案:D

A、0 C、5

15 5

B、5 D、5

0 15

(14)程序2运行时。输出 (14) 。答案:C A、0 15 B、5 0

C、5

A、0

5

D、5 B、5

15 0

(15)程序3运行时。输出 (15) 。答案:B

15

C、5 5 D、5 15

(16)程序4运行时。输出 (16) 。答案:A

A、0 C、5

15 5

B、5 D、5

0 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(\}

程序2

#include main()

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

if(m%i==0){y=0;break;} printf(\}

程序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(\}

程序4

#include main()

{ int i,m=15,y=-1; for(i=2;i<=m/2;i++) if(m%i==0){break;y=0;}

printf(\

}

(17)程序1运行时。输出 (17) 。答案:A

A、1 C、15

B、0 D、-1

(18)程序1运行时。输出 (18) 。答案:B A、1 B、0 C、15 D、-1

(19)程序1运行时。输出 (19) 。答案:B A、1 B、0 C、15 D、-1

(20)程序1运行时。输出 (20) 。答案:D

A、1 B、0 C、15 D、-1 试题6(第小题3分,共12分)

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

main() { int k;

char ch,a[10],*s[10]={\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(\

}

(22)程序运行时,输入5678,输出 (22) 。答案:D

A、two three C、one four three

B、two

D、four three two one

(23)程序运行时,输入8561#,输出 (23) 。答案:C A、two three B、two

C、one four three D、four three two one

(24)程序运行时,输入7902#,输出 (24) 。答案:B

A、two three B、two C、one four three D、four three two one

(25)程序运行时,输入7633#,输出 (25) 。答案:B A、two three B、two C、one four three 试题7(28分)

D、four three two one

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

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

s?1?11!?12!?14!??

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

s?1?11!?12!?14!??

参考程序: #include #include (1)double fact(int n) {int i;

double t=1;

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

return t; }

(2)double cal(double e) {

double sum=0,t=1; int i=1;

while(1/t>=e) { t=fact(i);

sum=sum+1.0/t; i++; }

return sum; }

(3)main() {int n,i;

while(scanf(\

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

{printf(\ 1+1/2!+1/3!+……=%f\\n\ }

}

2009年春浙江省高等学校

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

说明:(1) 请将所有试题的答案填写在答卷上。其中试题一到试题六请在答卷上各小题正确

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

(2) 请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在

答卷右下角的指定位置内; (3) 考试时间为90分钟。

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

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

输入1个正整数n,计算下列算式的前n项之和。 S=1-1/3+1/5-1/7+? 运行示例: 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

C、i>n

B、i

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;

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)++; 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? (11) A、ch !=?\\0?

D、 *s !=?\\n? 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;

}

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”);

}

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

D、6 D、5

D、6 D、6

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

B、2

C、1 3 5

试题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”); 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) 。

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,输出

A、1: 5

B、6: 1

D、2: 4

C、2: 3

(23) 。

(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!+……

计算机等级考试参考答案(二级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) {

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(\}

2009年秋浙江省高等学校

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

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

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

Top