C 語言基礎教程

C 語言流程控制

C 語言函數(shù)

C 語言數(shù)組

C 語言指針

C 語言字符串

C 語言結(jié)構(gòu)體

C 語言文件

C 其他

C 語言參考手冊

C 語言用戶定義函數(shù)的類型

在本教程中,您將學習使用函數(shù)來解決同一問題的不同方法。

下面的這4個程序檢查用戶輸入的整數(shù)是否是質(zhì)數(shù)。

下面所有這些程序的輸出是相同的,并且在每個示例中我們都創(chuàng)建了一個用戶定義的函數(shù)。但是,我們在每個示例中采用的方法都是不同的。

示例1:沒有傳遞參數(shù),也沒有返回值

#include <stdio.h>

void checkPrimeNumber();

int main()
{
    checkPrimeNumber();    //沒有傳遞參數(shù)
    return 0;
}

//返回類型為void,表示不返回任何值
void checkPrimeNumber()
{
    int n, i, flag = 0;

    printf("輸入一個正整數(shù): ");
    scanf("%d",&n);

    for(i=2; i <= n/2; ++i)
    {
        if(n%i == 0)
        {
            flag = 1;
        }
    }
    if (flag == 1)
        printf("%d 不是質(zhì)數(shù)。", n);
    else
        printf("%d 是個質(zhì)數(shù)。", n);
}

checkPrimeNumber()函數(shù)接收用戶的輸入,檢查它是否是質(zhì)數(shù),并將其顯示在屏幕上。

main()函數(shù)內(nèi)部checkPrimeNumber();的括號中的空括號表示沒有參數(shù)傳遞給函數(shù)。

函數(shù)的返回類型為void。因此,該函數(shù)不返回任何值。

示例2:不傳遞任何參數(shù),但返回值

#include <stdio.h>
int getInteger();

int main()
{
    int n, i, flag = 0;

   //沒有傳遞任何參數(shù)
    n = getInteger();    

    for(i=2; i<=n/2; ++i)
    {
        if(n%i==0){
            flag = 1;
            break;
        }
    }

    if (flag == 1)
        printf("%d 不是質(zhì)數(shù)。", n);
    else
        printf("%d 是質(zhì)數(shù)。", n);

    return 0;
}

//返回用戶輸入的整數(shù)
int getInteger()       
{
    int n;

    printf("輸入一個正整數(shù): ");
    scanf("%d",&n);

    return n;
}

n = getInteger();語句中的空括號表示沒有參數(shù)傳遞給該函數(shù)。并且,將從函數(shù)返回的值分配給n。

在此,getInteger()函數(shù)從用戶處獲取輸入并返回。main()函數(shù)內(nèi)部包含用于檢查數(shù)字是否為質(zhì)數(shù)的代碼。

示例3:參數(shù)已傳遞但沒有返回值

#include <stdio.h>
void checkPrimeAndDisplay(int n);

int main()
{
    int n;

    printf("輸入一個正整數(shù): ");
    scanf("%d",&n);

    // n被傳遞給函數(shù)
    checkPrimeAndDisplay(n);

    return 0;
}

//返回類型為void,表示不返回任何值
void checkPrimeAndDisplay(int n) 
{
    int i, flag = 0;

    for(i=2; i <= n/2; ++i)
    {
        if(n%i == 0){
            flag = 1;
            break;
        }
    }
    if (flag == 1)
        printf("%d 不是質(zhì)數(shù)。", n);
    else
        printf("%d 是個質(zhì)數(shù)。", n);
}

用戶輸入的整數(shù)值將傳遞給checkPrimeAndDisplay()函數(shù)。

在此,checkPrimeAndDisplay()函數(shù)檢查傳遞的參數(shù)是否為質(zhì)數(shù),并顯示適當?shù)南ⅰ?/p>

示例4:傳遞參數(shù)和返回值

#include <stdio.h>
int checkPrimeNumber(int n);

int main()
{
    int n, flag;

    printf("輸入一個正整數(shù): ");
    scanf("%d",&n);

    //n傳遞給checkPrimeNumber()函數(shù)
    //返回的值分配給flag變量
    flag = checkPrimeNumber(n);

    if (flag == 1)
        printf("%d 不是質(zhì)數(shù)。", n);
    else
        printf("%d 是個質(zhì)數(shù)。", n);

    return 0;
}

//從函數(shù)返回int
int checkPrimeNumber(int n)
{
    int i;

    for(i=2; i <= n/2; ++i)
    {
        if(n%i == 0)
            return 1;
    }

    return 0;
}

來自用戶的輸入將傳遞給checkPrimeNumber()函數(shù)。

checkPrimeNumber()函數(shù)檢查傳遞的參數(shù)是否為質(zhì)數(shù)。

如果傳遞的參數(shù)是質(zhì)數(shù),則函數(shù)返回0。如果傳遞的參數(shù)是非質(zhì)數(shù),則函數(shù)返回1。將返回值分配給flag變量。

根據(jù)flag是0或1,main()函數(shù)會打印一條適當?shù)南ⅰ?/p>

哪種方法更好?

好吧,這取決于您要解決的問題。在這種情況下,傳遞參數(shù)并從函數(shù)返回值更好(示例4)。

函數(shù)應執(zhí)行特定任務。checkPrimeNumber()函數(shù)不接受用戶輸入,也不顯示適當?shù)南?。它僅檢查數(shù)字是否為質(zhì)數(shù)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清