请问一下各位大佬,为什么不管输入任何值最终都只会执行else凡的结果
#include<stdio.h>int fun(int *b);
void main()
{
int a,*p1=&a;
printf("请输入一个数:");
scanf("%d",&a);
fun(p1);
if(fun(p1)==1)
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
}
int fun(int *b)
{
int i,n=0;
for(i=2;i<*b;i++)
{
if(*b%i==0);
break;
if(i>=*b)
n=1;
}
return n;
} for(i=2;i<*b;i++)
{
if(*b%i==0)////////////////;
break;
if(i>=*b)
n=1;
} #include<stdio.h>
int fun(int *b);
void main()
{
int a,*p1=&a;
printf("请输入一个数:");
scanf("%d",&a);
fun(p1);
if(fun(p1)==1)
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
}
int fun(int *b)
{
int i,n=0;
for(i=2;i<*b;i++)
{
if(*b%i==0); // 这里问什么要有个 ; ?
break;
if(i>=*b) // for 循环里的循环条件是 i < *b,所以在循环里 i 怎么会大于等于 *b 呢
n=1;
}
return n;
} isdkz 发表于 2022-4-6 18:46
#include
int fun(int *b);
void main()
你好,谢谢您的回答。第一个if是当*b被for循环任何一个数整除时,就说明不是素数,因为素数是除了1和它本身,没有另外的数
第二个问题您的说的很对,不应该把它放在for循环里
我的想法是想用return 的返回值在主调函数里面使用if判断 本帖最后由 isdkz 于 2022-4-6 19:12 编辑
ljm002 发表于 2022-4-6 19:09
你好,谢谢您的回答。第一个if是当*b被for循环任何一个数整除时,就说明不是素数,因为素数是除了1和它本 ...
第一个我不是指的 if,而是 if 后面有分号就是 if 语句已经结束了,跟后面的 break 就扯不上关系了,
也就是无论如何,你的 break 都会在第一次循环执行。 jhq999 发表于 2022-4-6 18:08
你好,我觉得下面的朋友第二点说的很对,i的条件在第二个if里有矛盾,但也谢谢你的回答 isdkz 发表于 2022-4-6 19:11
第一个我不是指的 if,而是 if 后面有分号就是 if 语句已经结束了,跟后面的 break 就扯不上关系了,
...
太感谢你了,我看了一下午都没发现多打了一个分号,是我眼神不好
页:
[1]