在本教程中,您將學習使用函數(shù)來解決同一問題的不同方法。
下面的這4個程序檢查用戶輸入的整數(shù)是否是質(zhì)數(shù)。
下面所有這些程序的輸出是相同的,并且在每個示例中我們都創(chuàng)建了一個用戶定義的函數(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ù)不返回任何值。
#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ù)的代碼。
#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>
#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ù)。