这个程序有两个问题:
第一、这里用到了函数调用,在不同的函数中可以用采用相同的变量名,但是代表的是不同的变量,如果你要从主函数中获取,就要进行相应的值传递,被调用的函数也应该有个返回值,而不是空返回;
修改:主函数中int sushu();改为 int sushu(a);
调用函数的函数首部void sushu()改成int sushu(int a),并把后面的定义中的a去掉;
第二、sushu函数中的i会一直增加到i=a/2;
假如a=9,当i=3时,我们就可以判断出a不是素数,此时应该停止循环,否则 程序会再往下循环;i=4,此时得到的b=1,又把之前得到的结论“不是素数”改成“是素数”,所以在这里面有问题;
修改方法有两种,第一种:在if语句中添加break语句;
if(a/i==0)
{
b=0;
break;
}
第二:给b赋上初值1,在判断中,去掉else语句;
int sushu(int a)
{
int b=1,i;
for(i=2;i {
if(a/i==0)
{
b=0;
}
}
}
#include
int main() //这里改为int
{
int a,b;
scanf("%d",&a);
int sushu();
if(b=0);//这里缺少一个分号
{
printf("%d不是素数\n",a);
}
if(b=1)
{
printf("%d是素数\n",a);
}
}
void sushu()
{
int a,b,i;
for(i=2;i {
if(a/i==0)
{
b=0;
}
else
{
b=1;
}
}
}
#include
int main() //这里改为int
这个int也可以不要,就直接main()也可以运行的
int sushu()?
void sushu()?
哥哥你这样是错误的!好好看看书吧!
函数声明和函数调用要一致,你一个int一个void 明显不一致。。void不用返回值,int 则要返回一个值,你看着办吧。
=.=
囧...
不知怎么讲了