当前位置:C++技术网 > 资讯 > 题目是,判别素数。但是我对代码中的flag起什么作用,完全不懂,请讲解一下

题目是,判别素数。但是我对代码中的flag起什么作用,完全不懂,请讲解一下

更新时间:2016-08-09 11:31:29浏览次数:1+次

但是我对代码中flag起什么作用,完全不懂。请能讲解一下。谢谢

#include <iostream>
using namespace std;
int main()
{   int prime(int);
    int n;
    cout<<"inter n :";
    cin>>n;
    if(prime(n))
    cout<<n<<"is a prime."<<endl;
    else
    cout<<n<<"is not a prime."<<endl;
    return 0;
}
    int prime(int n)
    {
        int flag=1,i;
        for(i=2;i<n/2&&flag==1;i++)
        if(n%i==0)
         flag=0;
         return(flag);
        
         }
           


C++技术网解答:

    C语言中flag的用法,C语言中是没有flag这种关键字的,它只是一个变量,我们可以把它当做一种标志,或者一种状态,在某种特定条件下改变它的值,我们根据flag的值,我们就可以判断很多事情,比如下面这段判断素数的代码。
int prime(int n)
{
    /*我们用flag的值来判断一个数是不是素数
    我们设定 1的时候表示n是素数,0的时候表示不是
    先假设这个数是素数 */
    
    int flag=1,i;
    for(i=2;i<n/2&&flag==1;i++)
        if(n%i==0)
            flag=0; /*能被除尽,说明不是素数,我们把标识设为0 */
        
    return(flag);/* 返回flag,函数外根据flag的值就可判断是不是素数 */
}

    编程风格直接关系到代码质量,一段好的代码,别人读起来容易明白,自已以后维护起来也方便写代码时时刻记得一句话:你的代码是让别人看的!或许能督促你写出好的代码。比如下面这段代码是不是更容易理解一些?(推荐 林锐 高质量C/C++编程,讲的是编程规范化的东西,或许对我们的代码规范很有帮助)。
int prime(int n)
{
    int flag = 1; /*1表示素数,0表示合数*/
    int i;
    for(i=2; i<n/2; i++)
    {
        if(n%i==0)
        {
            flag = 0;
            break;
        }
    }
    return(flag);
}