浙江计算机 B二级,[转载]浙江省计算机二级考试

浙江省计算机二级考试

C程序设计上机(大部分)模拟题及答案

(一)

修改和填充题

1. 在考生目录下,有Modify.c程序,该程序中””的下一行中

有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:输入m、n(要求输入数均大于0),输出它们的最小公倍数

#include

void main()

{ int m,n,k;

while(scanf("%d%d",&m,&n),m<0&&n<0); // m<0|| n<0

for(k=m;k%n!=0;)

k=k+m%n; //

k=k+m

printf("%dn",k);

}

2. 在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:输入m、n(要求输入数均大于0),输出它们的最大公约数。

#include

void main()

{ int m,n,k;

while(scanf("%d%d",&m,&n),

_______1______

); // m<0||

n<0

for( ____2____; n%k!=0||m%k!=0;

k--); // k=m

printf("%dn",k);

}

3. 在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要

填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x

当x=1.7时的值。

#include

float f(float, float *, int);

void main( )

{ float b[5]={1.1,2.2,3.3,4.4,5.5};

printf("%fn",f

(1.7,b,5)); // 答案:81.930756

}

float

f(1

) //float f( float x , float a[ ], int

n)

{ float

y=a[0],t=1; int i;

for(i=1;i

2

; // return

y

}

4. 在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要

填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f, 求a数组中最大值与b数组中最小值之差。

#include

float f(float *x, int n, int flag)

{ float y; int i;

1//

y=x[0] ;

for(i=1;iflag*y) y=x[i];

return y;

}

void main()

{ float

a[6]={3,5,9,4,2.5,1}, b[5]={3,-2,6,9,1};

printf("%.2fn",f(a,6,1)2

);

// printf("%.2fn",f(a,6,1)- f(b,5,-1)); // 答案:11

}

5. 在考生目录下,有Modify.c程序,该程序中””的下一行中有错误,

请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

程序功能:分别统计字符串中所有英文字母中的各元音字母的个数。

#include

#include

void main()

{  char a[80];

int n[5]={0},i;

gets(a);

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

switch(toupper(a[i])

{ // switch(tolower(a[i]))

case

'a' : n[0]++;break;

case

'e' : n[1]++;break;

case

'i' : n[2]++;break;

case

'o' : n[3]++;break;

case

'U' :

n[4]++; // case 'u' : n[4]++;

}

for(i=0;i<5;i++) printf("%dn",n[i]);

}

6. 在考生目录下,有Modify.c程序,该程序中””的下一行中有错误,

请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

程序功能:输入n(0

1

222

33333

4444444

#include

void

main()

{

int

i,j,n;

scanf("%d",

n); // scanf("%d",&n);

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

{

for(j=1;j<=n+1-i;j++) putchar(' ');

for(j=1;j<=2*i-1;j++)

putchar((char)(i+48));

putchar(n); // putchar(‘n’);

}

}

7. 在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f, 将字符串中的所有字符逆序存放,然后输出。例如,

输入字符串为“123456”,则程序的输出结果为“654321”。

#include

#include

void main()

{ char s[60],

*f(char *);

gets(s);

printf("%sn",f(s));

}

1

f(char

*x) // char *

{ char t; int

i,n;

2

// n=strlen(x);

for(i=0;i

return

x;

}

8. 在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f,求二维数组a中所有元素之和。

#include

float f( 1

) // float **x, int m, int

n

{ float y=0 ;

int i,j;

for(i=0;i

for(j=0;j

return y;

}

void main( )

{ float

a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3];

int

i;

for(i=0;i<3;i++) b[i]=

2

;

// &a[i][0]

或a[0]

printf(“%.2fn”,f(b,3,4)); // 答案:78.00

}

9.

在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:输入一个字符串,输出其中所出现过的大写英文字母。如运行时输入

字符串”FONTNAME and FILENAME”,应输出 ”FONTAMEIL”.

#include

void main( )

{ char x[80],y[26]; int i,j,ny=0;

gets(x);

for(i=0;x[i]!=’ ’;i++)

if(x[i]>=’A’&&x[i]<=’Z’)

{

for(j=0;j

if(y[i]==x[j]) break; //  y[j]==x[i]

if(j==ny) {

y[ny]=x[i] ;ny++;}

}

for(i=0;i<26;i++) // i

printf(“%c”,y[i]);

printf(“n”);

}

10.

在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)

该程序功能:输入一个整数后,输出该数的位数。若输入3214,则输出4,输入

-23156,则输出5。

#include

void main( )

{ int

n,k=0;

scanf(“%d”,&n);

while(1 )

{ // n%10

k++;

2 ; // n=n/10;

}

printf(“%dn”,k);

}

11.

在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)

该程序功能:运行时输出下列结果。

abcdefg

abcde

abc

a

#include

void main( )

{ int

i,j; char k;

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

{

for(j=1;j

1

; // k=’a’;

for(j=9-2*i;j>0;j--) {

k=(char)k++;

printf(“%c”,2

); // k-1

}

putchar(‘n’);

}

}

12. 在考生目录下,有Modify.c程序,该程序中””的下一行中有错误,

请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能: 运行时若输入a,n分别为3,6,则输出下列表达式的值。

3+33+333+3333+33333+333333

#include

void main( )

{ int

i,a,n,t=0;

s=0; // int s=0;

scanf(“%d%d”,&a,&n);

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

t=t*10+i; // t=t*10+1;

s=s+t;

}

s=s*a;

printf(“%dn”,s);

}

13. 在考生目录下,有Modify.c程序,该程序中””的下一行中有错误,

请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能: 运行时输入n,输出n各位数字之和。(如n=1308, 则输出12,

n=-3204, 则输出9).

#include

#include

void main( )

{ int n,s=0;

scanf(“%d”,&n);

n=fabs(n);

while( n>1)

{ // n 或 n>=1

s=s+n%10;

n=n%10; // n=n/10;

}

printf(“%d”,s);

}

14. 在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)

该程序功能:

输入n 和平面上n个点的坐标,计算各点间距离的总和。

#include

#include

#define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2))

1

// #include 或

#include

void main( )

{ float

*x,*y,s=0; int i,j,n;

scanf(“%d”,&n);

x=(float *)malloc(sizeof(float)*n*2);

y=x+2

; // n

for(i=0;i

x+i,y+i);

for(i=0;i

for(j=i+1;j

s+=f(x[i],y[i],x[j],y[j]);

printf(“%.2fn”, s);

}

15.

在考生目录下,有Modify.c程序,该程序中”___N_____”是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)

该程序功能:函数f将一个整数首尾倒置,程序输出结果应为"54321 -76543"。

#include

#include

int f(int n)

{ int m,y=0; m=fabs(n);

while(m!=0)

{

y=y*10+m%10;

1

;// m=m/10;

}

if(n>=0) return y;

else 2

; // return ( -y);

}

void main()

{ printf("%dt",f(12345)); printf("%dn",f(-34567));}

16. 在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充部

分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f用以求一元二次方程 x*x+5*x-2=0 的实根。

#include

#include

int f(float a,float b,float c,float *x1,float *x2)

{ if(b*b-4*a*c<0) 1

; // return

1;

*x1=(-b+sqrt(b*b-4*a*c))/2/a;

*x2=(-b-sqrt(b*b-4*a*c))/2/a;

return 0;

}

void main()

{ float

u1,u2; float a=1,b=5,c=-2;

if(2

)

printf("实数范围内无解n"); // f(a,b,c,&u1,&u2)

else

printf("%.2f %.2fn",u1,u2);

} //

答案:0.37 -5.37

17. 在考生目录下,有Modify.c程序,该程序中""的下一行中有错误, 请

改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的

绝对值小于eps为止。

# include

#include

void main( )

{ float x,eps,s=1,t=1,i=1;

scanf("%f%f",&x,&eps);

do{

t

= -t * x /

++i;

// t = -t * x/ i++;

s += t;

}while( fabs(t ) >=

eps)// 少 ;

printf("%fn",s);

}

18. 在考生目录下,有Modify2.c程序,该程序中"____ N ____"是根据程序功能需要填充

部 分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:函数f将数组循环左移k个元素,输出结果为:4 5 6 7 1 2 3

#include

void

f(int *a,int n,int k)

{ int i,j,t;

for(i=0;i

{ 1

; // t=a[0];

for(2

)

// j=1;j

a[j-1]=a[j];

a[n-1]=t;

}

}

void main()

{ int i,x[7]={1,2,3,4,5,6,7};

f( x , 7 , 3);

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

printf("%5d",x[i]);

printf("n");

}

19. 在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:调用函数f,从字符串中删除所有的数字字符。

#include

#include

#include

void f(char *s)

{ int i=0;

while(s[i]!=' ')

if(isdigit(s[i]))

1

(s+i,s+i+1); // strcpy

else 2

; // i++;

}

void

main()

{ char str[80];

gets(str);

f(str);

puts(str);

}

20. 程序修改题:在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功

能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果

自负)。

该程序功能:输出6~1000之间的完数(1个数的因子和等于其自身的数:6=1+2+3、

28=1+2+4+7+14,则6、28都是完数)。

#include

void main()

{ int i,j,s;

for(i=6;i<=1000;i++) {

1

; // s=0;

for(j=1;2

;j++) if(i%j==0)

s+=j; // j

if(s==i)

printf("%dn",s); //

答案:6 28 496

}

}

*********以下题目是2003年秋考新增加的程序修改题!***********

21.

程序修改题:在考生目录下,有Modify.c程序,该程序中""的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、

7、11)。

#include

void main( )

{ int n,i;

scanf("%d",&n);

i=1; // i=2;

while(n>1)

if(n%i==0)

{  printf("%dt",i); n/=i; }

else

n--; // i++;

}

22.

程序修改题:在考生目录下,有Modify.c程序,该程序中“”的下一行中有错误,请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。

该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。

#include

#include

#include

void main()

{ int n,i;

char

str; // *str

scanf("%dn",&n); str=(char*)malloc(n); gets(str);

for(i=1;i

if(str[i]>='a'&&

str[i]<='z')

str[i]=(char)(str[i]-32); //这里(char)多余的,出题有误

puts(str);

}

23.在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:输入整数n(n>0)求m,使得2的m次方小于或等于n、2的m+1次方大于或等于n。

#include

void

main() // i 改为m考生较为好理解!出题的毛病

{ int

i=0,t=1,n;

while( _____ 1

________); // scanf(“%d”,&n), n<=0

while(!(t<=n&&t*2>=n)){

_____ 2

_____ // t=t*2;

i++;

}

printf("%dn",i);

}

24.在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。

#include

#include

#define  f(x)

x*x-5*x+sin(x)

void

main() // i

改为 x 考生较为好理解!出题的毛病

{ int i; float max;

_____

1

_____ // max=f(1);

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

___________

2___________ //

if(f(i)>max) max=f(i);

printf("%fn",max); // 答案:49.455978

}

25. 在考生目录下,有Modify.c程序,该程序中"____ N ____"是根据程序功能需要填充

部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:函数f去除数组中的负数,输出结果为:1 3 4 6

#include

void f(int *a,int

*m) //

题中说法有误:“函数f去除数组中的负数”,应改为:

// “函数 f 能去掉了数组中的负数”。

{ int i,j;

for(i=0;i

if(a[i]<0) {

for(j=i--;j

_____1_____; // *m=*m-1;

}

}

void main()

{ int

i,n=7,x[7]={1,-2,3,4,-5,6,-7};

_______2_______; // f(x,&n);

for(i=0;i

printf("n");

}

26. 程序修改题:在考生目录下,有Modify.c程序,该程序中""的下一行中

有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

该程序功能:运行时输入10个数,然后分别输出其中的最大值、最小值。

#include

void main()

{ float x,max,min;

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

{ // for(int i=1; i<=10; i++)

这种写法C++允许,C不允许

scanf("%f",&x);

if(i =1) {

max=x;min=x;} // i==1

if(x>max) max=x;

if(x

}

printf("%f,%fn",max,min);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值