改 错 题.docx
《改 错 题.docx》由会员分享,可在线阅读,更多相关《改 错 题.docx(77页珍藏版)》请在冰豆网上搜索。
![改 错 题.docx](https://file1.bdocx.com/fileroot1/2023-1/25/c134dbf8-129e-46b0-9ced-841051736d5d/c134dbf8-129e-46b0-9ced-841051736d5d1.gif)
改错题
改错题
1、给定程序中fun函数的功能是:
根据整型形参m的值,计算如下公式的值:
例如,若m中的值为5,则应输出0.536389。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
doublefun(intm)
{doubley=1.0;
inti;
/**************found**************/
for(i=2;ifor(i=2;i<=m;i++)
/**************found**************/
y-=1/(i*i);改为:
y-=1.0/(i*i);
return(y);
}
main()
{intn=5;
printf("\nTheresultis%lf\n",fun(n));
}
2、给定程序中fun函数的功能是:
将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为“ABCD”时,则t所指字符串的内容应为“ABCDDCBA”
#include
#include
/************found************/
voidfun(chars,chart)改为:
voidfun(char*s,char*t)
{inti,d;
d=strlen(s);
for(i=0;ifor(i=0;i/************found************/
t[2*d-1]='\0';改为:
t[2*d]='\0';
}
main()
{chars[100],t[100];
printf("\nPleaseenterstringS:
");scanf("%s",s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);}
3、给定程序中fun函数的功能是:
将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
例如:
字符串中的数据为:
AABBCCDDEEFF,则应输出ABBCDDEFF。
#include
#include
#defineN80
voidfun(char*s,chart[])
{inti,j=0;
for(i=0;i/***********found**********/
if(i%2&&s[i]%2==0)改为:
if(i%2==0||s[i]%2==0)
t[j++]=s[i];
/***********found**********/
t[i]='\0';改为:
t[j]='\0';
}
main()
{chars[N],t[N];
printf("\nPleaseenterstrings:
");gets(s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);
}
4、给定程序中fun函数的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
#include
doublefun(intn)
{doubleresult=1.0;
/************found************/
ifn==0改为:
if(n==0)
return1.0;
while(n>1&&n<170)
/************found************/
result*=n--改为:
result*=n--;
returnresult;
}
main()
{intn;
printf("InputN:
");
scanf("%d",&n);
printf("\n\n%d!
=%lf\n\n",n,fun(n));
}
5、给定程序中fun函数的功能是:
先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。
#include
intfun()
{inta[3][3],sum;
inti,j;
/*********found**********/
______;改为:
sum=0
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
/*********found**********/
scanf("%d",a[i][j]);改为:
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
}
main()
{fun();}
6、给定程序中fun函数的功能是:
求
,(此处aa…aa表示n个a,a和n的值在1至9之间)。
例如,a=3,n=6,则以上表达式为:
s=333333-33333-3333-333-33-3,其值是:
296298。
a和n是fun函数的形参。
#include
longfun(inta,intn)
{intj;
/**************found**************/
longs=0,t=1;改为:
longs=0,t=0;
/**************found**************/
for(j=0;j<=n;j++)改为:
for(j=0;jt=t*10+a;
s=t;
for(j=1;j/**************found**************/
t=t%10;改为:
t=t/10;
s=s-t;}
return(s);
}
main()
{inta,n;
printf("\nPleaseenteraandn:
");
scanf("%d%d",&a,&n);
printf("Thevalueoffunctionis:
%ld\n",fun(a,n));
}
7、给定程序中fun函数的功能是:
求k!
(k<13),所求阶乘的值作为函数值返回。
例如:
若k=10,则应输出3628800。
#include
longfun(intk)
{
/************found************/
ifk>0改为:
if(k>0)
return(k*fun(k-1));
/************found************/
elseif(k=0)改为:
elseif(k==0)
return1L;
}
main()
{intk=10;
printf("%d!
=%ld\n",k,fun(k));}
8、给定程序中fun函数的功能是:
由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。
例如,n=8时,输入:
193.99,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为:
195.838745,在平均值以上的实数个数应为:
5。
#include
intfun(floatx[],intn)
{
/************found************/
intj,c=0,floatxa=0.0;改为:
intj,c=0;floatxa=0.0;
for(j=0;jxa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=0;j/************found************/
if(x[j]=>xa)改为:
if(x[j]>=xa)
c++;
returnc;
}
main()
{floatx[100]={193.199,195.673,195.757,196.051,
196.092,196.596,196.579,196.763};
printf("%d\n",fun(x,8));}
9、给定程序中fun函数的功能是:
将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。
例如:
若输入“Ab,cD”,则输出“AB,CD”
#include
#include
char*fun(chartt[])
{inti;
for(i=0;tt[i];i++)
/**********found***********/
if(('a'<=tt[i])||(tt[i]<='z'))改为:
if((tt[i]>='a')&&(tt[i]<='z'))
/**********found***********/
tt[i]+=32;改为:
tt[i]-=32;
return(tt);
}
main()
{chartt[81];
printf("\nPleaseenterastring:
");
gets(tt);
printf("\nTheresultstringis:
\n%s",fun(tt));}
10、给定程序中fun函数的功能是:
在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。
例如,调用fun函数这前给字符串输入:
ABCDeFGH,调用后字符串中的内容为:
eABCDFGH。
#include
/**********found**********/
fun(char*p)改为:
voidfun(char*p)
{charmax,*q;inti=0;
max=p[i];
while(p[i]!
=0)
{if(max
{max=p[i];
/**********found**********/
q=p+I改为:
q=p+i;
}
i++;}
/**********found**********/
wihle(q>p)改为:
while(q>p)
{*q=*(q-1);
q--;}
p[0]=max;
}
main()
{charstr[80];
printf("Enterastring:
");gets(str);
printf("\nTheoriginalstring:
");puts(str);
fun(str);
printf("\nThestringaftermoving:
");puts(str);printf("\n\n");}
11、给定程序MODI1.CJ是建立一个带头结点的单向链表,并用随机函数为各结点赋值。
给定程序中fun函数的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。
#include
#include
typedefstructaa
{intdata;structaa*next;}NODE;
intfun(NODE*h)
{intsum=0;
NODE*p;
/***********found**********/
p=h;改为:
p=h->next;
/***********found**********/
while(p->next)改为:
while(p)
{if(p->data%2==0)sum+=p->data;
/***********found**********/
p=h->next;改为:
p=p->next;
}
returnsum;
}
NODE*creatlink(intn)
{NODE*h,*p,*s,*q;
inti,x;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%16;s->next=p->next;
p->next=s;p=p->next;}
p->next=NULL;
returnh;
}
outlink(NODE*h,FILE*pf)
{NODE*p;
p=h->next;
fprintf(pf,"\n\nTHELIST:
\n\nHEAD");
while(p)
{fprintf(pf,"->%d",p->data);p=p->next;}
fprintf(pf,"\n");
}
outresult(ints,FILE*pf)
{fprintf(pf,"\nThesumofevennumbers:
%d\n",s);}
main()
{NODE*head;inteven;
head=creatlink(12);
head->data=9000;
outlink(head,stdout);
even=fun(head);
printf("\nTheresult:
\n");outresult(even,stdout);
}
12、给定程序中fun函数的功能是:
求三个数的最小公倍数。
例如,给主函数中的变量x1,x2,x3分别输入15112,则输出结果应当是:
330。
#include
/************found************/
fun(intx,y,z)改为:
fun(intx,inty,intz)
{intj,t,n,m;
/************found************/
j=1;改为:
j=x;
t=j%x;m=j%y;n=j%z;
/************found************/
while(t!
=0&&m!
=0&&n!
=0)改为:
while(t!
=0||m!
=0||n!
=0)
{j=j+1;t=j%x;m=j%y;n=j%z;}
/************found************/
returni;改为:
returnj;
}
main()
{intx1,x2,x3,j;
printf("Inputx1x2x3:
");scanf("%d%d%d",&x1,&x2,&x3);
printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);
j=fun(x1,x2,x3);
printf("Theminimalcommonmultipleis:
%d\n",j);}
13、给定程序中fun函数的功能是:
先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
例如:
当s听字符串为“ABCDE”时,则t中的字符串应为“ABCDEEDCBA”。
#include
#include
voidfun(char*s,char*t)
{inti,sl;
sl=strlen(s);
/************found************/
for(i=0;i<=s1;i++)改为:
for(i=0;it[i]=s[i];
for(i=0;it[sl+i]=s[sl-i-1];
/************found************/
t[sl]='\0';改为:
t[2*sl]='\0';
}
main()
{chars[100],t[100];
printf("\nPleaseenterstrings:
");scanf("%s",s);
fun(s,t);
printf("Theresultis:
%s\n",t);
}
14、给定程序中fun函数的功能是:
从s所指字符串中删除所有小写字母c。
#include
voidfun(char*s)
{inti,j;
for(i=j=0;s[i]!
='\0';i++)
if(s[i]!
='c')
/************found************/
s[j]=s[i];改为:
s[j++]=s[i];
/************found************/
s[i]='\0';改为:
s[j]='\0';
}
main()
{chars[80];
printf("Enterastring:
");gets(s);
printf("Theoriginalstring:
");puts(s);
fun(s);
printf("Thestringafterdeleted:
");puts(s);printf("\n\n");
}
15、给定程序中fun函数的功能是:
从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。
规定,函数中a1放个位数,a2放十位数。
#include
/************found************/
fun(int*b)改为:
intfun(int*b)
{intk,a1,a2,i=0;
/************found************/
for(k=10;k<=55;k++){改为:
for(k=10;k<55;k++){
/************found************/
a2=k/1O;改为:
a2=k/10;
a1=k-a2*10;
if((k%3==0&&a2==5)||(k%3==0&&a1==5))
{b[i]=k;i++;}
}
/************found************/
returnk;改为:
returni;
}
main()
{inta[100],k,m;
m=fun(a);
printf("Theresultis:
\n");
for(k=0;k}
16、给定程序中fun函数的功能是:
求S的值。
例如,当k为10时,函数值应为:
1.533852。
#include
#include
/************found************/
voidfun(intk)改为:
floatfun(intk)
{intn;floats,w,p,q;
n=1;
s=1.0;
while(n<=k)
{w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/************found************/
returns改为:
returns;
}
main()
{printf("%f\n",fun(10));}
17、给定程序中fun函数的功能是:
将十进制正整数m转换成k(2<=k<=9)进制数,并按高位到低位顺序输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
#include
#include
/**********found**********/
fun(intm,intk)改为:
voidfun(intm,intk)
{intaa[20],i;
for(i=0;m;i++)
{
/**********found**********/
aa[i]=m/k;改为:
aa[i]=m%k;
m/=k;
}
for(;i;i--)
/**********found**********/
printf("%d",aa[i]);改为:
printf("%d",aa[i-1]);
}
main()
{intb,n;
printf("\nPleaseenteranumberandabase:
\n");scanf("%d%d",&n,&b);
fun(n,b);printf("\n");}
18、给定程序中fun函数的功能是:
根据整型形参n,计算如下公式的值。
例如:
若n=10,则应输出0.617977.
#include
/************found**********