C++问题,高手帮帮忙吧~

来源:百度知道 编辑:UC知道 时间:2024/05/07 02:20:36
为什么在main函数里,引用identify后,judge的值都是0?

//设计一个函数,用来判断一个整数是否为素数
#include <stdio.h>

int judge;
int identify(int n)
{
int i;
for(i=2;i<n;i++)
{
if (n%i==0)
{ judge==1;}
else
{ judge==0;}

}
}
main()
{
int n;
printf("please enter a number: \n");
scanf("%d",&n);
if (n>1)
{identify(n);
if(judge==1)
{
printf("是素数");
}
else if (judge==0)
{
printf("不是素数");
}
}
else if (n<=1)
{
printf("wrong number");
}
}

改好了

#include <stdio.h>

int judge;

void identify(int n) // 因为上面的judge 是全局变量,所以不用返回,用void
{
int i;
for(i=2;i<n;i++)
{
if (n%i==0)
{
judge=0;// 这里不能用== ,而且要赋值0
break; // 一但存在n%i==0 ,就return;不然结果会出错
}
else
{ judge=1;}

}
}

int main() // main() 返回类型为int
{
int n;
printf("please enter a number: \n");
scanf("%d",&n);
if (n>1)
{identify(n);
if(judge==1)
{
printf("是素数");
}
else if (judge==0)
{
printf("不是素数");
}
}
else if (n<=1)
{
printf("wrong number");
}
}

int identify(int n)
{
int i;
for(i=2;i<n;i++)
{
if (n%i==0)
{
judge=0;//不是judge == 1;,你中间还是==
break;//加个break;
}
else
{ ju