在本教程中,您將學(xué)習(xí)使用函數(shù)來解決同一問題的不同方法。
下面的這4個(gè)程序檢查用戶輸入的整數(shù)是否是質(zhì)數(shù)。
下面所有這些程序的輸出是相同的,并且在每個(gè)示例中我們都創(chuàng)建了一個(gè)用戶定義的函數(shù)。但是,我們?cè)诿總€(gè)示例中采用的方法都是不同的。
#include <stdio.h>
void checkPrimeNumber();
int main()
{
checkPrimeNumber(); //沒有傳遞參數(shù)
return 0;
}
//返回類型為void,表示不返回任何值
void checkPrimeNumber()
{
int n, i, flag = 0;
printf("輸入一個(gè)正整數(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 是個(gè)質(zhì)數(shù)。", n);
}checkPrimeNumber()函數(shù)接收用戶的輸入,檢查它是否是質(zhì)數(shù),并將其顯示在屏幕上。
main()函數(shù)內(nèi)部checkPrimeNumber();的括號(hào)中的空括號(hào)表示沒有參數(shù)傳遞給函數(shù)。
函數(shù)的返回類型為void。因此,該函數(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("輸入一個(gè)正整數(shù): ");
scanf("%d",&n);
return n;
}n = getInteger();語句中的空括號(hào)表示沒有參數(shù)傳遞給該函數(shù)。并且,將從函數(shù)返回的值分配給n。
在此,getInteger()函數(shù)從用戶處獲取輸入并返回。main()函數(shù)內(nèi)部包含用于檢查數(shù)字是否為質(zhì)數(shù)的代碼。
#include <stdio.h>
void checkPrimeAndDisplay(int n);
int main()
{
int n;
printf("輸入一個(gè)正整數(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 是個(gè)質(zhì)數(shù)。", n);
}用戶輸入的整數(shù)值將傳遞給checkPrimeAndDisplay()函數(shù)。
在此,checkPrimeAndDisplay()函數(shù)檢查傳遞的參數(shù)是否為質(zhì)數(shù),并顯示適當(dāng)?shù)南ⅰ?/p>
#include <stdio.h>
int checkPrimeNumber(int n);
int main()
{
int n, flag;
printf("輸入一個(gè)正整數(shù): ");
scanf("%d",&n);
//n傳遞給checkPrimeNumber()函數(shù)
//返回的值分配給flag變量
flag = checkPrimeNumber(n);
if (flag == 1)
printf("%d 不是質(zhì)數(shù)。", n);
else
printf("%d 是個(gè)質(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ù)會(huì)打印一條適當(dāng)?shù)南ⅰ?/p>
好吧,這取決于您要解決的問題。在這種情況下,傳遞參數(shù)并從函數(shù)返回值更好(示例4)。
函數(shù)應(yīng)執(zhí)行特定任務(wù)。checkPrimeNumber()函數(shù)不接受用戶輸入,也不顯示適當(dāng)?shù)南?。它僅檢查數(shù)字是否為質(zhì)數(shù)。