C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)

上傳人:ning****hua 文檔編號:136931626 上傳時間:2022-08-17 格式:DOC 頁數(shù):10 大?。?5KB
收藏 版權(quán)申訴 舉報 下載
C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)_第1頁
第1頁 / 共10頁
C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)_第2頁
第2頁 / 共10頁
C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)_第3頁
第3頁 / 共10頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設計(第3版)何欽銘 顏 暉 第5章函數(shù)(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第5章 函數(shù) 【練習5-1】使用函數(shù)求1到n之和:輸入一個正整數(shù) n,輸出1~n之和。要求自定義和調(diào)用函數(shù)sum(n)求 1~n 之和。若要計算 m~n(m int sum(int n); int main(void) { int n; int sum; printf("Enter n:") scanf("%d", &n); printf("sum = %d\n", sum(n)); return 0; }

2、int sum(int n) { int result, i; result = 0; for(i = 1; i <= n; i++) result = result + i; return result; } 若要計算 m~n(m

3、 result, i; result = 0; for(i = m; i <= n; i++) result = result + i; return result; } 【練習5-2】使用函數(shù)找最大值: 輸入2個數(shù),輸出其中較大的數(shù)。要求定義和調(diào)用函數(shù) max(a, b)找出并返回 a、b 中較大的數(shù)。試編寫相應程序。 解答: #include double max(double a, double b); int main(void) { int a, b;

4、 printf(“Input a and b:”); scanf("%lf%lf",&a, &b); printf("max= %lf\n", max(a, b)); return 0; } double max(double a, double b) { if(a > b) return a; else return b; } 【練習5-3】數(shù)字金字塔:輸入一個正整數(shù) n,輸出n行數(shù)字金字塔。試編寫相應程序。 解答: #include int main(void) {

5、 int n,i,j; printf(“Enter n:”); scanf("%d", &n); for(i = 1; i <= n; i++){ for(j = 1; j <= n - i; j++) printf(" "); for(j = 1; j <= i; j++) printf("%d ", i); putchar('\n'); } return 0; } 【練習5-4】 思考:若把例 5-9

6、中靜態(tài)變量 f 定義成普通局部變量,還能實現(xiàn)計算 n!嗎?請上機檢驗。若把 f 換成全局變量又會如何? 解答: 若把例 5-9 中靜態(tài)變量 f 定義成普通局部變量,無法實現(xiàn)計算 n!,因為函數(shù)返回后 f 單元被系統(tǒng)回收,不再保存原有數(shù)據(jù)。若把 f 換成全局變量,則能實現(xiàn)計算 n!,因為 f 的作用范圍和生命周期一直存在。 習題5 一、選擇題 1.在 C 語言程序中,若對函數(shù)類型未加顯式說明,則函數(shù)的隱含類型為 D 。 A.void B.double C.char D.int 2.下列程序的輸出結(jié)果是 D

7、 。 fun(int a, int b, int c) { c = a * b; } int main(void) { int c; fun(2, 3, c); printf(”%d\n”, c); return 0; } A.0 B.1 C.6 D.無法確定 3.建立自定義函數(shù)的目的之一是 B(優(yōu)先)、C 。 A.提高程序的執(zhí)行效率 B.提高程序的可讀性 C.減少程序的篇幅 D.減少程序文件所占內(nèi)存

8、 4.以下正確的函數(shù)定義形式是 A 。 A.double fun(int x, int y) B.double fun(int x; int y) C.double fun(int x, int y); D.double fun(int x, y) 5.以下不正確的說法是 C 。 A.實參可以是常量、變量或表達式 C.形參可以是常量、變量或表達式 B.實參可以是任何類型 D.形參應與對應的實參類型一致 6.以下正確的說法是 D 。 A.實參與其對應的形參共同占用一個存儲單元 B.實參與其對應的形參各占用

9、獨立的存儲單元 C.只有當實參與其對應的形參同名時才占用一個共同的存儲單元 D.形參是虛擬的,不占用內(nèi)存單元 二、填空題 1.下列程序的輸出結(jié)果為 2357 。 #include int fun3(int m); int main(void) { int n; for (n = 1; n < 10; n++) if (fun3(n) == 1) printf("%d ", n); return 0; } int fun3(int m) { int i; if (m == 2 ||

10、m == 3) return 1; if (m < 2 | |m % 2 == 0) return 0; for (i = 3; i < m; i = i + 2) if (m % i == 0) return 0; return 1; } 2.輸入若干個正整數(shù),判斷每個數(shù)從高位到低位各位數(shù)字是否按值從小到大排列,請根據(jù)題意,將程序補充完整。 #include int fun1( int m ); int main(void) { int n; scanf("%d", &n);

11、 while (n > 0) { if(fun1(n)) printf("%d 中各位數(shù)字按從小到大排列\(zhòng)n", n); scanf("%d", &n); } } int fun1( int m ) { int k; k = m % 10; while(m) if( m / 10 % 10 > k) return 0; else { m = m/10 ; k = m % 10; } return 1

12、; } 3.下列函數(shù)輸出一行字符:先輸出 kb 個空格,再輸出 n 個指定字符(由實參指定)。請根據(jù)題意,將程序補充完整。 #include void print( int kb, int n, char zf ) { int i; for(i = 1; i <= kb; i++) printf(“ ”); for (i = 1; i <= n; i++ ) printf(“%c”, zf); } 三、程序設計題 1.使用函數(shù)計算分段函數(shù)的值:輸入 x,計算并輸出下列分段函數(shù) f(x) 的值。要求定義和調(diào)用函數(shù) sign(x)

13、實現(xiàn)該分段函數(shù)。試編寫相應程序。 1 x > 0 f(x)= 0 x = 0 -1 x < 0 解答: #include int main(void) { int sign(int x); int x, y; scanf("%d",&x); y = sign(x); printf("sign(%d) = %d\n", x, y); return 0; } int sign(int x) { int y; if(x>0) y

14、=1; else if (x==0) y=0; else y=-1; return y; } 2.使用函數(shù)求奇數(shù)和:輸入一批正整數(shù)(以零或負數(shù)為結(jié)束標志),求其中的奇數(shù)和。要求定義和調(diào)用函數(shù) even(n)判斷數(shù)的奇偶性,當 n 為偶數(shù)時返回 1,否則返回 0。試編寫相應程序。 解答: #include int even(int n); int main(void) { int n, sum; scanf("%d",&n); sum = 0; while(n > 0){ if(even(n) ==

15、 0) sum = sum + n; scanf("%d", &n); } printf("The sum of the odd numbers is %d.\n", sum); return 0; } int even(int n) { int y; if (n % 2 == 0) y = 1; else y = 0; return y; } 3.使用函數(shù)計算兩點間的距離:給定平面任意兩點坐標(x1,y1)和(x2,y2),求這兩點之間的距離(保留2位小數(shù))。要求定義和調(diào)用函數(shù)dist(

16、x1,y1,x2,y2)計算兩點之間的距離。試編寫相應程序。 解答: #include #include double dist(double x1,double y1,double x2,double y2); int main(void) { double x1,y1,x2,y2; printf("Enter x1 and y1:"); scanf("%lf%lf",&x1,&y1); printf("Enter x2 and y2:"); scanf("%lf%lf",&x2,&y2)

17、; printf("Distance=%.2lf",dist(x1,y1,x2,y2)); return 0; } double dist(double x1,double y1,double x2,double y2) { double distance; distance=sqrt(pow(fabs(x2-x1),2)+pow(fabs(y2-y1),2)); return distance; } 4.利用函數(shù)計算素數(shù)個數(shù)并求和:輸入兩個正整數(shù) m 和 n(1<=m, n<=500),統(tǒng)計并輸出 m

18、和 n 之間的素數(shù)的個數(shù)以及這些素數(shù)的和。要求定義并調(diào)用函數(shù) prime(m)判斷 m 是否為素數(shù)。試編寫相應程序。 解答: #include #include int prime(int m); int main(void) { int m,n,sum,count; printf("Input m:"); scanf("%d",&m); printf("Input n:"); scanf("%d",&n); sum=0; count=0; for(

19、;m<=n;m++){ if(prime(m)==1){ sum=sum+m; count++; } } printf("%d和%d之間素數(shù)的個數(shù):%d\n",m,n,count); printf("%d和%d之間素數(shù)的和:%d\n",m,n,sum); return 0; } int prime(int m) { int i; for(i=2;i<=sqrt(m);i++) if(m%i==0)r

20、eturn 0; if(i>h&&m!=1)return 1; } 5.使用函數(shù)統(tǒng)計指定數(shù)字的個數(shù):讀 入 一 個 整 數(shù) , 統(tǒng) 計 并 輸 出 該 數(shù) 中“2” 的 個 數(shù) 。 要 求 定 義 并 調(diào) 用 函 數(shù)countdigit(number,digit),它的功能是統(tǒng)計整數(shù) number 中數(shù)字 digit 的個數(shù)。例如,countdigit(12292,2)的返回值是 3。試編寫相應程序。 解答: #include int countdigit(int number,int digit); int main(void) {

21、 int number,digit; printf("Enter an integer:"); scanf("%d",&number); printf("Number of digit "); scanf("%d",&digit); printf(":%d",countdigit(number,digit)); return 0; } int countdigit(int number,int digit) { int a,count; if(number<0)number=

22、-number; while(number>0){ a=number; if(number%10==digit) count++; number=number/10; } return count; } 6.使用函數(shù)輸出水仙花樹:輸入兩個正整數(shù) m 和 n(1<=m,n<=1000),輸出 m~n 之間所有滿足各位數(shù)字的立方和等于它本身的數(shù)。要求定義并調(diào)用函數(shù) is(number),判斷number的各位數(shù)字之立方和是否等于它本身。試編寫相應程序。 解答: #include

23、 int is(int number); int main(void) { int i, m, n; printf("Input m and n:"); scanf("%d%d", &m, &n); printf("result:\n"); for(i = m; i <= n; i++) if(is(i) != 0) printf("%d\n", i); return 0; } int is(int number) { int digit, s

24、um, temp; temp = number; sum = 0; while(temp != 0){ digit = temp % 10; temp = temp / 10; sum = sum + digit * digit * digit; } return sum == number; } 7. 使用函數(shù)求余弦函數(shù)的近似值:輸入精度e,用下列公式求cos(x)的近似值,精確到最后一項的絕對值小于e。要求定義和調(diào)用函數(shù) funcos(e, x)求余弦函數(shù)的近似值。試編寫相應程序

25、。 cosx=x0/0!-x2/2!+x4/4!-x6/6!+… 解答: #include #include double funcos(double e, double x); int main(void) { double e, sum, x; printf("Input e and x:"); scanf("%lf%lf",&e,&x); sum=funcos(e,x); printf("cos%lf=%lf\n",x,sum); return

26、 0; } double funcos(double e,double x) { int flag, i; double item, sum, tmp, power; flag=1; power=1; tmp=1; i=0; item=1; sum=0; while(fabs(item)>=e){ item=flag*power/tmp; sum=sum+item; power=power*x*x; tmp=tmp*(i+1)*(i+2); flag=-flag; i=i+2; } return sum; }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!