全桥整流 发表于 2021-11-30 19:53:18

关于if的疑问

#include <stdio.h>

int x;

int susu()
{
        int t,i;
        t=0;
        for(i =2;i<x-1;i++)
        {
                if(x/i == 0)      //为什么当x为8时无法进入?此时x/i为0,按道理条件成立,应该进入循环才对。
                {
                        t=2;                       
                }       
        }
                if (t!=2)
        {               
                printf("是素数");
        }
                if (t==2)
        {
                printf("不是素数");
        }
}
void main()
{       
        printf("输入一个数");
        scanf("%d",&x);
        susu();
       
}

如代码的注释

村里小黑 发表于 2021-11-30 19:57:40

余用%,/是除法

傻眼貓咪 发表于 2021-11-30 19:57:49

8 除 2 = 4 不是 0

jackz007 发表于 2021-11-30 19:58:13

                if(x/i == 0)      //为什么当x为8时无法进入?此时x/i为0,按道理条件成立,应该进入循环才对。
                if(x % i == 0)      //你的意思应该是取余吧?

傻眼貓咪 发表于 2021-11-30 19:58:58

你的代码应该是要取模 %

if(x%i == 0)

全桥整流 发表于 2021-11-30 20:02:15

又又有大意了

傻眼貓咪 发表于 2021-11-30 20:08:35

#include <stdio.h>

int x;

void isPrime() // 没有返回任何东西就用 void
{
    int res = 0;
    for(size_t i = 2; i < x-1; i++){
      if(!(x%i)){ // 假设 x%i == 0
            res = 1;
            break; // 发现不是素数时,就退出循环,不用继续
      }
    }
    if(res || x < 2) printf("不是素数"); // 当 res = 1 时或者 x < 2时,不是素数
    else printf("是素数"); // 否则是素数
}

int main(){ // main() 主函数必定是 int 最终返回 0
    printf("输入一个数:");
    scanf("%d", &x);
    isPrime(); // 调用函数
    return 0;
}
页: [1]
查看完整版本: 关于if的疑问