鱼C论坛

 找回密码
 立即注册
查看: 1322|回复: 6

[已解决]请问一下各位大佬,为什么不管输入任何值最终都只会执行else凡的结果

[复制链接]
发表于 2022-4-6 17:56:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}
最佳答案
2022-4-6 18:46:17
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-6 18:08:14 | 显示全部楼层
  for(i=2;i<*b;i++)
        {
                if(*b%i==0)////////////////;
                break;
        if(i>=*b)
                n=1;
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-6 18:46:17 | 显示全部楼层    本楼为最佳答案   
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-4-6 19:09:48 | 显示全部楼层
isdkz 发表于 2022-4-6 18:46
#include
int fun(int *b);
void main()

你好,谢谢您的回答。第一个if是当*b被for循环任何一个数整除时,就说明不是素数,因为素数是除了1和它本身,没有另外的数
第二个问题您的说的很对,不应该把它放在for循环里
我的想法是想用return 的返回值在主调函数里面使用if判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-6 19:11:40 | 显示全部楼层
本帖最后由 isdkz 于 2022-4-6 19:12 编辑
ljm002 发表于 2022-4-6 19:09
你好,谢谢您的回答。第一个if是当*b被for循环任何一个数整除时,就说明不是素数,因为素数是除了1和它本 ...


第一个我不是指的 if,而是 if 后面有分号就是 if 语句已经结束了,跟后面的 break 就扯不上关系了,

也就是无论如何,你的 break 都会在第一次循环执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-6 19:16:20 | 显示全部楼层

你好,我觉得下面的朋友第二点说的很对,i的条件在第二个if里有矛盾,但也谢谢你的回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-6 19:19:13 | 显示全部楼层
isdkz 发表于 2022-4-6 19:11
第一个我不是指的 if,而是 if 后面有分号就是 if 语句已经结束了,跟后面的 break 就扯不上关系了,
...

太感谢你了,我看了一下午都没发现多打了一个分号,是我眼神不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 16:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表