1. 程式人生 > >輸出4個整數,找出其中最大的數。用函數嵌套調用來處理

輸出4個整數,找出其中最大的數。用函數嵌套調用來處理

函數返回值 integer return 另一個 pos 結果 圖片 個數 數值

/* p183 例7.5 輸出4個整數,找出其中最大的數。用函數嵌套調用來處理

解題思路:這個問題並不復雜,完全可以只用一個主函數就可以得到結果。在main函數中調用max4函數,
max4函數的作用是找出4個數中的最大者。在max4函數中再調用另一個函數max2。max2函數用來找出兩個
數中的大者。在max4中通過多次調用max2函數,可以找出4個數中的大者,然後把它作為函數值返回main
函數,在main函數中輸出結果。

*/

#include<stdio.h>
int main()
{
int max4(int a, int b, int c, int d); //對max4的函數聲明
int a,b,c,d,max;
printf("please enter 4 integer numbers:");//提示輸入四個數
scanf("%d %d %d %d",&a,&b,&c,&d); //輸入四個數
max = max4(a, b, c, d); //調用max4函數,得到4個數中的最大者
printf("max = %d\n",max); //輸出4個數中的最大者
return 0;
}
int max4(int a,int b,int c,int d) //定義max4函數
{
int max2(int a, int b); //對max2的函數聲明
int m;
m = max2(a, b); //調用max2函數,得到a和b兩個數中的大者,放在m中
m = max2(m, c); //調用max2函數,得到a,b,c 三個數中的大者,放在m中
m = max2(m, d); //調用max2函數,得到a,b,c,d四個數中的大者,放在m中
return (m); //把m作為函數值帶回main函數

}

int max2(int a, int b) //定義max2函數
{
if(a >= b)
{
return a; //若a>=b,將a作為函數返回值
}
else
return b; //若a<b,將b作為函數返回值

}

運行結果:

技術分享圖片

程序改進:

(1)可以將max2函數的函數體改為只用一個return語句,返回一個條件表達式的值:

int max2(int a, int b) //定義max2函數
{
return(a >= b ? a:b); //返回條件表達式的值,即a和b中的大者

}

(2) 在max4函數中,3個調用max2的語句(如m=max2(a,b);)可以用以下一行代替:

m=max2(max2(max2(a,b),c),d); //把函數調用作為函數參數

甚至可以取消變量m,max4可寫成

int max4(int a,int b,int c,int d) //定義max4函數
{
int max2(int a, int b); //對max2的函數聲明
return max2(max2(max2(a,b),c),d); //把函數調用作為函數參數
}

輸出4個整數,找出其中最大的數。用函數嵌套調用來處理