欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語言判斷是否素數(shù)程序代碼

 更新時間:2013年11月26日 12:05:25   作者:  
這篇文章主要介紹了c語言判斷是否素數(shù)的方法和問題,大家參考使用吧

復(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("請輸入一個大于1的自然數(shù):\n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素數(shù)\n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素數(shù)\n",x);
    printf("是否繼續(xù)(y/n):\n");
    scanf("%c", &ch);
    }while ('y'== ch || 'Y' == ch);
    return 0;
}

但是,運行的時候,出現(xiàn)了一個問題.

本來寫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("請輸入一個大于1的自然數(shù):\n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素數(shù)\n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素數(shù)\n",x);
    printf("是否繼續(xù)(y/n):\n");
    scanf(" %c", &ch);//在這里加一個空格
    }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("請輸入一個大于1的自然數(shù):\n");
    scanf("%d", &x);
    if (isPrimeNum(x) == false)
        printf("%d不是素數(shù)\n",x);
    else if (isPrimeNum(x) == true)
        printf("%d是素數(shù)\n",x);
    printf("是否繼續(xù)(y/n):\n");
    scanf("\n%c", &ch);//在這里加一個換行符 '\n'
    }while ('y'==ch || 'Y' == ch);
    return 0;
}

也沒問題.

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

因此,看第一個代碼:

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

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

相關(guān)文章

  • vscode刷acm、leetcode的題目

    vscode刷acm、leetcode的題目

    vscode是一款越來越受碼農(nóng)們喜愛的軟件,大多數(shù)人學(xué)習(xí)編程繞不開的一部分就是算法,很多人都喜歡刷LeetCode的題目,本文就來介紹一下
    2021-06-06
  • C++浮點型的存儲方式詳解

    C++浮點型的存儲方式詳解

    本篇文章是對C/C++浮點數(shù)在內(nèi)存中的存儲方式進行了詳細的分析介紹,需要的朋友參考下,希望能夠給你帶來幫助
    2021-09-09
  • C語言解字符串逆序和單向鏈表逆序問題的代碼示例

    C語言解字符串逆序和單向鏈表逆序問題的代碼示例

    這篇文章主要介紹了C語言解字符串逆序和單向鏈表逆序問題的代碼示例,求逆序也是考研和面試中的基礎(chǔ)算法題類型,需要的朋友可以參考下
    2016-06-06
  • c++ STL set_difference set_intersection set_union 操作

    c++ STL set_difference set_intersection set_union 操作

    這篇文章主要介紹了c++ STL set_difference set_intersection set_union 操作,需要的朋友可以參考下
    2017-03-03
  • C++無痛實現(xiàn)日期類的示例代碼

    C++無痛實現(xiàn)日期類的示例代碼

    凡是要寫類必須要提到六大默認成員(六位大爺):構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、賦值重載函數(shù)、取地址重載函數(shù)(包括const對象和普通對象);那么這次的日期類又需要伺候哪幾位大爺呢?本文就來詳細說說
    2022-10-10
  • C語言實現(xiàn)圖書管理系統(tǒng)(文件數(shù)據(jù)庫)

    C語言實現(xiàn)圖書管理系統(tǒng)(文件數(shù)據(jù)庫)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 在C語言中調(diào)用C++做的動態(tài)鏈接庫

    在C語言中調(diào)用C++做的動態(tài)鏈接庫

    如果你有一個c++做的動態(tài)鏈接庫.so文件,而你只有一些相關(guān)類的聲明,那么你如何用c調(diào)用呢,別著急,本文通過一個小小的例子,讓你能夠很爽的搞定.
    2016-05-05
  • 關(guān)于C++中0是十進制還是八進制的問題

    關(guān)于C++中0是十進制還是八進制的問題

    本篇文章中,小編將為大家介紹關(guān)于C++中0是十進制還是八進制的問題,有需要的朋友可以參考一下
    2013-04-04
  • C語言之陷阱與缺陷詳解

    C語言之陷阱與缺陷詳解

    本片文章是對C++中陷阱與缺陷進行了詳細的分析介紹,小編覺得本片文章講解的非常詳細,需要的朋友參考下,希望能夠給你帶來幫助
    2021-09-09
  • 使用C語言訪問51單片機中存儲器的核心代碼

    使用C語言訪問51單片機中存儲器的核心代碼

    這篇文章主要介紹了使用C語言訪問51單片機中存儲器的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01

最新評論