a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

c語言判斷是否素?cái)?shù)程序代碼

2020-01-26 15:40:56
字體:
供稿:網(wǎng)友

復(fù)制代碼 代碼如下:

#include <stdio.h>

bool isPrimeNum(int x)
{
    if (x == 1)
        return false;
    else if (x <= 0)
        return false;
    else if (x == 2)
        return true;
    else
    {
        for (int i = 2; i < x; i++)
        {
            if (x%i == 0)
                return false;
        }
        return true;

    }
}

int main(void)
{
    int x;
    char ch;
    do{
    printf("請輸入一個(gè)大于1的自然數(shù):/n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素?cái)?shù)/n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素?cái)?shù)/n",x);
    printf("是否繼續(xù)(y/n):/n");
    scanf("%c", &ch);
    }while ('y'== ch || 'Y' == ch);
    return 0;
}

但是,運(yùn)行的時(shí)候,出現(xiàn)了一個(gè)問題.

本來寫do...while是為了省事,重復(fù)判斷.但是,卻愣是不起效果.

后來,修改了一下:

復(fù)制代碼 代碼如下:

#include <stdio.h>

bool isPrimeNum(int x)
{
    if (x == 1)
        return false;
    else if (x <= 0)
        return false;
    else if (x == 2)
        return true;
    else
    {
        for (int i = 2; i < x; i++)
        {
            if (x%i == 0)
                return false;
        }
        return true;

    }
}

int main(void)
{
    int x;
    char ch;
    do{
    printf("請輸入一個(gè)大于1的自然數(shù):/n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素?cái)?shù)/n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素?cái)?shù)/n",x);
    printf("是否繼續(xù)(y/n):/n");
    scanf(" %c", &ch);//在這里加一個(gè)空格
    }while ('y'==ch || 'Y' == ch);
    return 0;
}

這樣,問題就神奇地解決了.

再后來,再這么改:

復(fù)制代碼 代碼如下:

#include <stdio.h>

bool isPrimeNum(int x)
{
    if (x == 1)
        return false;
    else if (x <= 0)
        return false;
    else if (x == 2)
        return true;
    else
    {
        for (int i = 2; i < x; i++)
        {
            if (x%i == 0)
                return false;
        }
        return true;

    }
}

int main(void)
{
    int x;
    char ch;
    do{
    printf("請輸入一個(gè)大于1的自然數(shù):/n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素?cái)?shù)/n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素?cái)?shù)/n",x);
    printf("是否繼續(xù)(y/n):/n");
    scanf("/n%c", &ch);//在這里加一個(gè)換行符 '/n'
    }while ('y'==ch || 'Y' == ch);
    return 0;
}

也沒問題.

所以,總結(jié)一下,問題出現(xiàn)在我們在輸入數(shù)字按下回車的似乎,'/n'還保存在輸入流中

因此,看第一個(gè)代碼:

復(fù)制代碼 代碼如下:

int main(void)
{
    int x;
    char ch;
    do{
    printf("請輸入一個(gè)大于1的自然數(shù):/n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素?cái)?shù)/n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素?cái)?shù)/n",x);
    printf("是否繼續(xù)(y/n):/n");
    scanf("%c", &ch);  //因?yàn)?'/n'還在輸入流中  所以 就變成了  ch = '/n';
    }while ('y'==ch || 'Y' == ch);  // 'y' != '/n'  && 'Y' != '/n';
    return 0;   //因此程序就return了
}


另外,也是可以使用fflush(stdin)清空輸入緩存區(qū).

復(fù)制代碼 代碼如下:

#include <stdio.h>

bool isPrimeNum(int x)
{
    if (x == 1)
        return false;
    else if (x <= 0)
        return false;
    else if (x == 2)
        return true;
    else
    {
        for (int i = 2; i < x; i++)
        {
            if (x%i == 0)
                return false;
        }
        return true;

    }
}

int main(void)
{
    int x;
    char ch;
    do{
    printf("請輸入一個(gè)大于1的自然數(shù):/n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素?cái)?shù)/n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素?cái)?shù)/n",x);
    printf("是否繼續(xù)(y/n):/n");
    fflush(stdin);  //清空輸入緩存區(qū)
    scanf("%c", &ch);
    }while ('y'==ch || 'Y' == ch);
    return 0;
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 久久久网| 亚洲高清视频网站 | 欧美在线一区二区三区 | 国产成人61精品免费看片 | 亚洲国产精品一区二区三区 | 99视频精品 | 日本在线播放 | 精品久久网站 | 中文字幕亚洲一区二区va在线 | 精品无码久久久久国产 | 亚洲黄色在线观看 | 999在线观看精品免费不卡网站 | 久久精品色视频 | 日韩精品视频在线观看网站 | 成人久久18免费观看 | 色五月情| www.中文字幕| www.操.com| 久视频免费 | 欧美日韩综合一区 | 能在线观看的黄色网址 | av观看在线 | 成人午夜在线视频 | 国产精品久久久久久一区二区三区 | 久久精品视频网 | 日韩成人不卡 | 日本精品视频在线观看 | 国产精品久久久久久吹潮 | 色综合久久久久 | 亚洲黄色毛片 | 国产精品99久久久久久www | 欧美日韩精品区 | 毛片网站在线 | 国产成人在线一区二区 | 日韩国产在线 | 夜夜春精品视频高清69式 | 午夜免费片 | 国产精品高潮呻吟av久久4虎 | 91av国产在线视频 | 久久tv在线观看 | 亚洲一区二区高清视频 |