一道C语言的改错题

改错题:下列给定程序中,函数fun的功能是:判断m是否为素数,若是返回1,否则返回0。主函数的功能是:按每行5个输出1-100之间的全部素数。请改正程序中的4个错误,使它... 改错题:下列给定程序中,函数fun的功能是:判断m是否为素数,若是返回1,否则返回0。主函数的功能是:按每行5个输出1-100之间的全部素数。请改正程序中的4个错误,使它能得出正确的结果。
main()
{
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");
}
}
/**********FOUND**********/
void fun( int n)
{
int i,k=1;
if(m<=1) k=0;
/**********FOUND**********/
for(i=1;i<m;i++)
/**********FOUND**********/
if(m%i=0) k=0;
/**********FOUND**********/
return m;
}
展开
 我来答
wanglongzhen
2006-11-15 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:182万
展开全部
main() //没有头文件 #include "stdio.h"
{
int m,k=0; /*在这里要给出函数fun()的声明,否则编译器汇报错。int fun(int n)*/
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");
}
}
/**********FOUND**********/
void fun( int n)
{
int i,k=1;
if(m<=1) k=0; /*m是在main()函数中定义的,这里要用传递来的形参,把m换成年*/
/**********FOUND**********/
for(i=1;i<m;i++)
/**********FOUND**********/
if(m%i=0) k=0; //改成m%i==0/*把i设置成从2开始,否则除非你是神仙,不然打死我都不相信会有结果。*/
/**********FOUND**********/
return m; //返回值应该是K,k是用来判断是不是素数的标记。
}

最后问一下 ,,你是不是抄错了, 这么多错误
77866649
2006-11-15
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
自己看吧
main()
{
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");

}
getch();
}
/**********FOUND**********/
/*方法有返回不能用void*/
int fun( int n)
{
int i,k=1;
if(n<=1) k=0;
/**********FOUND**********/
for(i=2;i<n;i++)
/**********FOUND**********/
if(n%i==0) k=0;
/**********FOUND**********/
return k;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
音乐之魂马
2020-06-15 · TA获得超过3694个赞
知道大有可为答主
回答量:3086
采纳率:25%
帮助的人:263万
展开全部
先回答字符串大于80报错原因
因main函数str大小80也说输入字符串大于80overflow了造成str并'\0'结尾导致substr函数
for(i=0;i<len
&&
s[star+i]!='\0';
i++)循环能正常结尾导致程序运行时出错
第二正确做法应该要sstr[i]=‘\0'因返回sstrvc6即使没有句也会正确执行我刚才都试过了
第三sstr申明静态了避免局部变量生存周期造成乱码错误
局部变量函数调用时创建函数返回之前被释放了所导致乱码而静态变量生存周期应该整程序函数返回也被立即释放
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虢良旷一璇
2019-06-27 · TA获得超过3842个赞
知道大有可为答主
回答量:3130
采纳率:33%
帮助的人:457万
展开全部
一种比较简单的"笨"方法:
(另外,你的程序有一些小错误,已在注释中给出)
/*已经在TC2.0上编译调试*/
#include<stdio.h>
main()
{
int
apple=0,pear=0,banana=0,orange=0,lemon=0,i;
float
n,percentagea,percentagep,percentageb,percentageo,percentagel;
char
c;
scanf("%f",&n);
for(i=0;i=<n;i++)/*把i<n改为i<=n,否则你的统计数据有误*/
{
c=getchar();/*多加一个getchar()来接受回车符,这就是方法*/
printf("the
rank
of
apple
is:%c\n",c=getchar());if(c=='A')
apple++;
c=getchar();
printf("the
rank
of
pear
is:%c\n",c=getchar());if(c=='A')
pear++;
c=getchar();
printf("the
rank
of
banana
is:%c\n",c=getchar());if(c=='A')
banana++;
c=getchar();
printf("the
rank
of
orange
is:%c\n",c=getchar());if(c=='A')
orange++;
c=getchar();
printf("the
rank
of
lemon
is:%c\n",c=getchar());if(c=='A')
lemon++;}
percentagea=apple/n;
percentagep=pear/n;
percentageb=banana/n;
percentageo=orange/n;
percentagel=lemon/n;
printf("the
proportion
of
A
apple
%f%\n",100*percentagea);
printf("the
proportion
of
A
pear
%f%\n",100*percentagep);/*这里原来写成percentageb了*/
printf("the
proportion
of
A
banana
%f%\n",100*percentageb);
printf("the
proportion
of
A
orange
%f%\n",100*percentageo);
printf("the
proportion
of
A
lemon
%f%\n",100*percentagel);
getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c607e7b8580
2019-02-25 · TA获得超过3695个赞
知道大有可为答主
回答量:3098
采纳率:28%
帮助的人:224万
展开全部
自己看吧
main()
{
int
m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");
}
getch();
}
/**********FOUND**********/
/*方法有返回不能用void*/
int
fun(
int
n)
{
int
i,k=1;
if(n<=1)
k=0;
/**********FOUND**********/
for(i=2;i<n;i++)
/**********FOUND**********/
if(n%i==0)
k=0;
/**********FOUND**********/
return
k;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式