第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;
}