flag是什么,为什么运行循环语句时结果只有一个,不是循环一次出现一个结果吗
m 圈内达人 2015-11-08 15:25:15
3350 8 0

#include<stdio.h>

#include<math.h>

main()

{

int i,n,flag=0;

printf("请输入一个大于1的整数:");

scanf("%d",&n);

for(i=2;i<=sqrt(n);i++)

{

if(n%i==0)

flag=1;

}

if(flag==0)

printf("%d是质数\n",n);

else

printf("%d不是质数\n",n);

}


问题来自: 质数

共 8 个回答

    水根 资深达人 3097天前

    flag是一个变量,它是人为定义出来的一个用来实别的一个变量

    水根 资深达人 3097天前

    if(n%i==0)//这个的意思就是来判断它是否能被整除

        flag=1;//这个的意思就是如果能整除的话就返回一个值(这个值可以是任意一个值,只是我们习惯=1)

    质数的含义是除了能被1和自己整数外还有别的数也能整除。flag这个变量只是随便取的一个变量,因为我们只用这个变量来判断,而不是一定要输出它的值。

    水根 资深达人 3097天前

    flag首先定义一个值为零,当它的值不变的时候结果就输出“是质数”。

    如果flag的值为非零的话,那就输出“不是质数”。

    它的循环为:

    for(i=2;i<=sqrt(n);i++)//它的意思就是用来进行循环的就是从2一直到根号n.

       if(n%i==0)//它的意思就是判断这里是否有能被除尽的存在。

          flag=1;//这个的意思就是如果有的话就返回一个非零的值(这里习惯了给一个1)

    它的逻辑就是这样的。

    最后两句话:

    if(flag==0)

    printf("%d是质数\n",n);//flag的值不变(初始值为0)就证明没有能被除尽的存在。

    else

    printf("%d不是质数\n",n);//flag的值变了(因为有返回值,所以非零),就证明有能被除尽的存在。


    嘿嘿大人 一代宗师 3097天前

    flag就是为后面if的条件做准备的,flag的值在for循环(红色部分就是佛如循环的循环体)里面进行改变:

    for(i=2;i<=sqrt(n);i++)

    {

    if(n%i==0)

    flag=1;

    }

    flag的初始值是0,如果n能被整除就将flag赋值为1,只要有一次赋值flag为1,就说明了n并不是一个质数,,如果n没有满足n%i==0,就不能为flag赋值为1,所以直到循环结束flag值都没有变化,都是0,所以当flag为零时就代表n是一个质数;

    循环体只有红色部分,所以执行完循环体flag要么是0要么是1,没有其他情况的;不要把后面的printf语句也当做循环体了

    m 圈内达人 3090天前

    回复 水根:明白了,谢谢

    m 圈内达人 3090天前

    回复 嘿嘿大人:明白了,谢谢

    嘿嘿大人 一代宗师 3090天前

    回复 m:不用谢,加油吧,嘿嘿

    水根 资深达人 3090天前

    不用客气

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题