c语言程序填空打印出1 1000,[转载]计算机C语言二级上级考试套题(四)

第13套

1.程序填空题:

请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。

例如,输入12,45,43,最大值为45。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

void main()

{

int a, b, c,max;

system("CLS");

printf("nInput three numbers:n");

scanf("%d,%d,%d",&a,&b,&c);

printf("The three numbers

are:%d,%d,%dn",a,b,c);

if(a>b)

【1】;

else

【2】;

if(max

【3】;

printf("max=%dn",max);

}

2.程序改错题:下列给定程序中,函数fun的功能是:将十进制正整数m转换成

进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。

请改正函数fun中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

void fun(int m,int k);

{ int aa[20], i;

for(i=0;m;i++)

{

aa[i]=m/k;

m/=k;

}

for(;i;i--)

printf("%d",aa[i]);

}

main()

{

int b,n;

printf("nPlease enter a number and a

base:n");

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

fun(n,b);

printf("n ");

}

3.程序设计题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

void fun (char *a)

{

}

void main()

{

FILE *wf;

char s[81],t[81]="****A*BC*DEF*G*******";

printf("Enter a string :n");

gets(s);

fun(s);

printf("The string after

deleted:n");puts(s);

wf=fopen("out.dat","w");

fun(t);

fprintf(wf,"%s",t);

fclose(wf);

}

【参考答案】:1.程序填空题:(1)

max=a (2) max=b (3) max=c

2.程序改错题:(1)错误:void fun(int m, int k);

正确:void fun(int m, int k)

(2) 错误:aa[i]=m/k ;

正确:aa[i]=m%k;

(3) 错误:printf("%d", aa[i]) ;

正确:printf("%d", aa[i-1]);

3.程序设计题:void fun (char *a)

{

char

*p=a;

while(*p=='*')

p++;

for(;*p!=' ';p++,a++)

*a=*p;

*a=' ';

}

第14套

1.程序填空题:

函数fun的功能是:从三个形参a、b、c中找出中间的数,作为函数值返回。

例如,当a=3,b=5,c=4时,中间的数为4。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include 

int fun(int a,int b,int c)

{ int t;

t=(a>b)?(b>c?b:(a>c?c:【1】))

:((a>c)?【2】

:((b>c)?c:【3】));

return t;

}

main()

{

int a1=3,a2=5,a3=4,r;

r=fun(a1,a2,a3);

printf("nThe middle number

is: %dn ",r);

}

2.程序改错题:

下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include 

#include 

#include 

#define FU(m,n) (m/n)

float fun(float a,float b,float c)

{ float value;

value=FU(a+b,a-b)+FU(c+b,c-b);

return(Value);

}

void main()

{ float x,y,z,sum;

printf("Input x y z:: ");

scanf("%f%f%f",&x,&y,&z);

printf("x=%f,y=%f,z=%fn ",x,y,z);

if(x==y||y==z)

{ printf("Data error! n ");

exit(0);}

sum=fun(x,y,z);

printf("The result is:%5.2fn ",sum);

}

3.程序设计题:

请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#define N 80

int fun(char *str)

{

}

main()

{

char s[N];

FILE *out;

char *test[]={"1234321","123421","123321","abcdCBA"};

int i;

printf("Enter a string : ");

gets(s);

printf("nn");

puts(s);

if(fun(s))

printf("YESn");

else

printf("NOn");

out=fopen("out.dat","w");

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

if(fun(test[i]))

fprintf(out,"YESn");

else

fprintf(out,"NOn");

fclose(out);

}

【参考答案】:1、程序填空题:(1)

a (2)

a (3) b

2.程序改错题:(1)错误:#define FU(m,n) (m/n)

正确:#define FU(m,n) (m)/(n)

(2) 错误:return(Value);

正确:return (value);

3. 程序设计题:int fun(char *str)

{

int

i,n=0,fg=1;

char

*p=str;

while

(*p)

{

n++;

p++;

}

for(i=0;i

if(str[i]==str[n-1-i]);

else

{

fg=0;

break;

}

return

fg;

}

第15套

程序填空题

函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并用外部(全局)变量c1、c2、c3返回主函数。

例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

int c1,c2,c3;

void fun(long n)

{

c1=c2=c3=0;

while(n)

{

switch(【1】)

{

case 1:

c1++;【2】;

case 2:

c2++;【3】;

case 3:

c3++;

}

n/=10;

}

}

main()

{

long n=123114350L;

fun(n);

printf("nThe result: n");

printf("n=%ld c1=%d c2=%d

c3=%dn",n,c1,c2,c3);

}

程序改错题

下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include 

#include 

#include 

#include 

void fun (char *s, char *t )

{

int I,s1;

s1=strlen(s);

for (I=0;I

t[I]=s[s1-1];

for (I=0;I

t[s1+I]=s[I];

t[2*s1]=' ';

}

void main()

{char s[100], t[100];

system("CLS");

printf("nPlease enter string s: ");

scanf("%s",s);

fun(s,t);

printf ("The result is: %sn",t);

}

3.程序设计题

请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#define N 81

void fun(char*s)

{

}

main()

{

char a[N];

FILE *out;

printf("Enter a string:");

gets(a);

printf("The original string

is:");

puts(a);

fun(a);

printf("n");

printf("The string after modified:");

puts(a);

strcpy(a,"Hello World!");

fun(a);

out=fopen("out.dat","w");

fprintf(out,"%s",a);

fclose(out);

}

【参考答案】:1. (1)

n%10 (2)

break (3) break

2.

(1)错误:t[i]=s[s1-1]; 正确:t[i]=s[s1-1-i];

3. void fun(char *s)

{

char

ch;

int

i,m,n;

i=0;

m=n=strlen(s)-1;

while(i

{

ch=s[i];

s[i]=s[m];

s[m]=ch;

i++;

m--;

}

}

第16套

程序填空题:

请补充main函数,该函数的功能是:打印出1 1000中满足个位数字的立方等于其本身所有数。

本题的结果为:1 64 125 216 729

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

void main()

{

int I,g;

system("CLS");

for(I=1;I<1000;I++)

{

g=【1】;

if(【2】)

printf("%4d",I);

}

}

程序改错题:

下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量x1、x2、x3分别输入15、11、2,则输出结果应当是330。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

int fun(int x,int y,int z)

{ int j,t,n,m;

j=1;

t=m=n=1;

while (t!=0

&& m!=0

&& n!=0)

{

j=j+1;

t=j%x;

m=j%y;

n=j%z;

}

return j;

}

void main()

{

int x1,x2,x3,j;

printf("Input x1 x2 x3: ");

scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d,x2=%d,x3=%d n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("The minimal common multiple is:

%dn",j);

}

程序设计题:

请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

long fun(char *p)

{

}

void main()

{

FILE *wf;

char s[6];

long n;

printf("Enter a string:n");

gets(s);

n=fun(s);

printf("%ldn",n);

wf=fopen("out.dat","w");

fprintf (wf,"%ld",fun("-1234"));

fclose(wf);

}

【参考答案】:1. (1)

i%10 (2) g*g*g==i

2.

(1)错误:j=1; 正确:j=0;

(2)错误:while (t!=0 && m!=0

&& n!=0)

正确:while (t!=0 || m!=0 || n!=0)

3. long fun(char *p)

{

long

n=0;

int

flag=1;

if(*p=='-')

{p++;flag= -1;}

else

if(*p=='+')

p++;

while(*p!=' '

{ n=n*10+*p-'0';

p++;

}

return

n*flag;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值