我是菜鸟帮帮我
怎么这个程序有问题,哪里有问题呢?
#include <stdio.h>
int zhishu(int n)
{
int i;
for (i=2;i<n;i++)
if(n%i==0)
break;
return i>=n;
}
void main ()
{
int f;
f= zhishu(88);
if(f=1)printf("质数");
else
printf("不是质数");
}
[解决办法]
for (i=2;i<n;i++)
i是永远不会大于n的
[解决办法]
i=n
[解决办法]
if(f==1) printf("质数");
掉了=
[解决办法]
#include <stdio.h>int zhishu(int n){ int i;for (i=2;i<n;i++){if(n%i==0)break;}return i==n;}void main (){int f;f= zhishu(88);if(f==1) printf("质数");else printf("不是质数");}
[解决办法]
for (i=2;i<n;i++)
这是死循环,n要有确切的值
[解决办法]
主函数的判定语句中 if(f=1)...永远是真值,因为给f赋值都会成功。f=1在执行完成后回返回一个布尔类型的值,如果执行成功返回TURE,如果执行错误就返回FALSE。一般来说,f=1这个语句肯定会被成功执行。所以在你的程序中,永远不会执行else之后的那个语句。也就是说,程序判断的任何数都是质数。应该将f=1改为f==1,为了在编译期间能够发现此类错误,建议你将此表达式写成1==f,这样的话,如果你不小心少写了一个等号,在编译时期就会被发现。因为常量是不允许被修改的,就是说1不能被赋予f值。
[解决办法]
请教:如果i<n return的是什么