Cprimerplus(第五版)課后編程練習答案解析_第1頁
Cprimerplus(第五版)課后編程練習答案解析_第2頁
免費預覽已結束,剩余46頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 概覽編程練習1您剛剛被 MacroMuscle 有限公司( Software for Hard Bodies )聘用。該公司要進入歐洲市場,需 要一個將英寸轉換為厘米 (1 英寸=2.54 cm) 的程序。他們希望建立的該程序可提示用戶輸入英寸值。您的 工作是定義程序目標并設計該程序(編程過程的第 1 步和第 2 步)。1. 將英寸值轉化為厘米值2. 顯示“輸入英寸值” -得到該值 - 轉換為厘米值 -存儲- 告知用戶已結束第二章C語言概述編程練習1 編寫一個程序,調用 printf() 函數在一行上輸出您的名和姓,再調用一次 printf() 函數在兩個 單獨的行上輸出您的名和姓,然

2、后調用一對 printf() 函數在一行上輸出您的名和姓。輸出應如下所示(當 然里面要換成您的姓名) :Anton BrucknerAntonBrucknerAnton Bruckner第一個輸出語句 第二個輸出語句 仍然是第二個輸出語句 第三個和第四個輸出語句#includeint main(void)printf(He Jinn);printf(Hen);printf(Jinn); printf(He Jinn);return(0);2編寫一個程序輸出您的姓名及地址#includeint main(void)printf(Name:He Jinn);printf(Address:CAUCn

3、);return(0);3 編寫一個程序, 把您的年齡轉換成天數并顯示二者的值。 不用考慮平年 ( fractional year) 和閏年 (leapyear)的問題。#includeint main(void)int age=22; printf(Age:%dn,age);printf(Day:%dn,age*356);return(0);4編寫一個能夠產生下面輸出的程序:For hes a jolly good fellow!For hes a jolly good fellow!For hes a jolly good fellow!Which nobody can deny!程序中除

4、了 main() 函數之外,要使用兩個用戶定義的函數:一個用于把上面的夸獎消息輸出一次: 另一個用于把最后一行輸出一次。#includevoid printf1(void);void printf2(void);int main(void)printf1();printf1();printf1();printf2();return(0);void printf1(void)printf(For hes a jolly good fellow!n);void printf2(void)printf(Which nobody can deny!n);5 編寫一個程序,創(chuàng)建一個名為 toes 的整數

5、變量。讓程序把 toes 設置為 10。再讓程序計算兩個 toes 的和以及 toes 的平方。程序應該輸出所有的 3 個值,并分別標識它們。#includeint main(void)int toes=10;int toes_add;int toes_square;toes_add=toes+toes;toes_square=toes*toes;printf(toes=%dntoes_add=%dntoes_square=%dn,toes,toes_add,toes_square); return(0);6 編寫一個能夠產生下列輸出的程序:Smile ! Smile ! SmileSmile

6、 ! Smile !Smile !在程序中定義一個能顯示字符串 smile 卜一次的函數,并在需要時使用該函數。#includevoid display(void);int main(void)display();display();display();printf(n);display();display(); printf(n);display(); printf(n);return(0);void display(void)printf(Smile!);7編寫一個程序,程序中要調用名為 one_three() 的函數。該函數要在一行中顯示單詞 one ,再調用 two()函數, 然后再在

7、另一行中顯示單詞 three。 函數 two()應該能在一行中顯示單詞two main() 函數應該在調用 one_three()函數之前顯示短語 starting now: ,函數調用之后要顯示 done !o 這樣,最后的輸出結果應如下所示:starting nowonetwothree done !#includevoid one_three(void); void two(void);int main(void)printf(starting now:n); one_three(); printf(done!n); return(0);void one_three(void)print

8、f(Onen);two(); printf(Threen);void two(void)printf(Twon);第三章 數據和C編程練習1通過試驗的方法(即編寫帶有此類問題的程序)觀察系統(tǒng)如何處理整數上溢、浮點數上溢和浮 點數下溢的情況。#includeint main(void)unsigned int a=4294967295;float b=3.4E38;float c=b*10;float d=0.1234E-2; printf(%u+1=%un,a,a+1);printf(%e*10=%en,b,c);printf(%f/10=%fn,d,d/10);return(0);2編寫一個

9、程序,要求輸入一個 ASCII 碼值 ( 如 66) ,然后輸出相應的字符。#includeint main(void)char a;scanf(%d,&a);printf(%cn,a);return(0);3編寫一個程序,發(fā)出警報聲,并打印下列文字:Startled by the sudden sound, Sally shouted, By the Great Pumpkin, what was that!#includeint main(void)printf(aStartled by the sudden sound,Sally shouted,By the Great pum

10、pkin,what was that!n);return(0);4編寫一個程序, 讀入一個浮點數, 并分別以小數形式和指數形式打印。 輸出應如同下面格式 (實 際顯示的指數位數也許因系統(tǒng)而不同) :The input is 21.290000 or 2.129000e+001.#includeint main(void)float a;scanf(%f,&a);printf(The input is %f or %en,a,a); return(0);5一年約有 3.156XI07S。編寫一個程序,要求輸入您的年齡,然后顯示該年齡合多少秒。#includeint main(void)f

11、Ioat a;printf(PIease input your age:);scanf(%f,&a);printf(Your age is %e secondsn,a*3.156E7); return(0);6.1 個水分子的質量約為 3.0X10*23g , I 夸脫水大約有 950g。編寫一個程序,要求輸入水的夸 脫數,然后顯示這么多水中包含多少個水分子。#incIudeint main(void)fIoat a;printf(PIease input how much quarts the water is:); scanf(%f,&a);printf(%f quarts

12、 water has %e moIecuIes.n,a,a*950/3E-23);return(0);7. 1 英寸等于 2.54cm 。編寫一個程序,要求輸入您的身高(以英寸為單位) ,然后顯示該身高值等 于多少厘米。如果您愿意,也可以要求以厘米為單位輸入身高,然后以英寸為單位進行顯示。#includeint main(void)float a;printf(Please input your height by inches:);scanf(%f,&a);printf(Your height is %fcm.n,a*2.54);return(0);第4章 字符串和格式化輸入/輸出編

13、程練習1 編寫一個程序,要求輸入名字和姓氏,然后以“名字,姓氏”的格式打印。#includeint main(void)char surname20,firstname20;printf(Please input your firstname and surname:);scanf(%s,firstname);scanf(%s,surname);printf(You are %s,%s.n,firstname,surname);return(0);2 編寫一個程序,要求輸入名字,并執(zhí)行以下操作:a 把名字引在雙引號中打印出來。b 在寬度為 20 個字符的字段內打印名字,并且整個字段引在引號內。

14、c. 在寬度為 20 個字符的字段的左端打印名字,并且整個字段引在引號內。d 在比名字寬 3 個字符的字段內打印它。#include#includeint main(void)char name20;int width;printf(Please input your name:); scanf(%s,name);printf(A:%sn,name); printf(B:%20sn,name);printf(C:%-20sn,name); width=strlen(name)+3;printf(D:%*sn,width,name);/* 對應 widthreturn(0);3 編寫一個程序,讀

15、取一個浮點數,并且首先以小數點記數法,然后以指數記數法打印之。輸出使 用下列形式(在指數位置顯示的數字的位數可能會隨系統(tǒng)而不同) :a. The input is 21.3 or 2.1e+001.b. The input is +21.290 or 2.129E+001.#includeint main(void)float a; printf(Please input a float:);scanf(%f,&a);printf(a.The input is %.1f or %.1en,a,a);printf(b.The input is %+.3f or %.3En,a,a);re

16、turn(0);4 編寫個程序,要求輸入身高(以英寸為單位)和名字,然后以如下形式顯示: Dabney, you are 6.208 feettall使用 float 類型,使用 / 作為除號。如果您愿意,可以要求以厘米為單位輸入身高,并以米為單位進 行顯示。#includeint main(void)float height;char name20;printf(Please input your height by inches:);scanf(%f,&height);printf(Please input your name:);scanf(%s,name);printf(%s,

17、you are %f feet talln,name,height/12);return(0);5. 編寫一個程序,首先要求用戶輸入名字,然后要求用戶輸入姓氏。在一行打印輸入的姓名,在下 行打印每個名字中字母的個數。把字母個數與相應名字的結尾對齊,如下所示:Melissa Honeybee7 8然后打印相同的信息,但是字母個數與相應單詞的開始對齊。#include#includeint main(void)char surname20,firstname20;printf(Please input your firstname and surname:);scanf(%s,firstname)

18、;scanf(%s,surname);printf(%s %s.n,firstname,surname);printf(%*d %*dn,strlen(firstname),strlen(firstname),strlen(surname),strlen(surname);/* 對應寬度變量printf(%s %s.n,firstname,surname);printf(%-*d %-*dn,strlen(firstname),strlen(firstname),strlen(surname),strlen(surname);/ *對應寬度變量return(0);6 編寫一個程序, 設置一個值

19、為 1.0/3.0 的 double 類型變量和一個值為 1.0/3.0 的 float 量。每個變量的值顯示三次:一次在小數點右側顯示 4 個數字,一次在小數點右側顯示 12 個數字, 在小數點右側顯示 16 個數字。同時要讓程序包括 float.h 文件,并顯示 FLT DIG 和 DBL_DIG 的值。 的顯示值與這些值一致嗎?類型變另一次1.0/3.0#include#includeint main(void)double a=1.0/3.0;float b=1.0/3.0;printf(double a=1.0/3.0:n);printf(%.4en,a);printf(%.12en

20、,a);printf(%.16enn,a);printf(float b=1.0/3.0:n);printf(%.4fn,b);printf(%.12fn,b);printf(%.16fnn,b);printf(FLT_DIG:%dn,FLT_DIG);printf(DBL_DIG:%dn,DBL_DIG);return(0);7 編寫一個程序, 要求用戶輸入行駛的英里數和消耗汽油的加侖數。接著應該計算和顯示消耗每加 侖汽油行駛的英里數,顯示方式是在小數點右側顯示一個數字。然后,根據 l 加侖約等于 3.785 升, l 英 里約等于 1.609 公里的規(guī)則,它應該把每加侖英里數轉換成每 10

21、0 公里的升數(歐洲通用的燃料消耗表示 法),并顯示結果,顯示方式是在小數點右側顯示一個數字(請注意,美國方案測量每單位距離消耗的燃料 數,而歐洲方案測量每單位燃料的行駛距離)。用符號常量表示兩個轉換系數(使用 const 或#define )。#include#define GALLON 3.785 /1 gallon = 2.785 litre#define MILE 1.609 /1 mile = 1.609 kilometerint main(void)float mile,gallon; printf(Please input miles and gallons:); scanf(%

22、f %f,&mile,&gallon);printf(Miles per gallon:%.1fn,mile/gallon);printf(Litres per 100 kilometre:%.1fn,gallon*GALLON/(100*mile*MILE); return(0);第5章 運算符、表達式和語句編程練習1編寫一個程序。 將用分鐘表示的時間轉換成以小時和分鐘表示的時間。 使用 #define 或者 const 來創(chuàng)建一個代表 60 的符號常量。 使用 while 循環(huán)來允許用戶重復鍵入值, 并且當鍵入一個小于等于 0 的時 間時終止循環(huán)。#include#defi

23、ne HOUR 60int main(void)int minutes;printf(Please input the minutes:);scanf(%d,&minutes);while(minutes0)printf(%d hours and %d minutesn,minutes/HOUR,minutes%HOUR);printf(Please input the minutes:); scanf(%d,&minutes);return(0);2編寫一個程序,此程序要求輸入一整數,然后打印出從(包括)輸入的值到(包括)比輸入的 值大 10 的所有整數值(也就是說,如果輸入

24、為 5,那么輸出就從 5 到 15)。要求在各個輸出值之間用空格、 制表符或換行符分開。#includeint main(void)int num,i=0;printf(Please input the number:);scanf(%d,&num);while(i+11)printf(%d ,num+);return(0);3 編寫一個程序,該程序要求用戶輸入天數,然后將該值轉換為周數和天數。例如,此程序將把18 天轉換成 2 周 4 天。用下面的格式顯示結果:使用一個 while 循環(huán)讓用戶重復輸入天數;當用戶輸入一個非正數(如0 或 -20 )時,程序將終止循環(huán)。#include

25、#define WEEK 7int main(void)int days;printf(Please input the days:);scanf(%d,&days);while(days0)printf(%d days are %d weeks,%d days.n,days,days/WEEK,days%WEEK);printf(Please input the days:);scanf(%d,&days);return(0);4編寫一個程序讓用戶按厘米輸入一個高度值, 然后,程序按照厘米和英尺英寸顯示這個高度值。 允許厘米和英寸的值出現小數部分。程序允許用戶繼續(xù)輸入,直到用

26、戶輸入一個非正的數值。程序運行的 示例如下面所示:Enter a height in centimeters: 182182.0 cm = 5 feet, 11.7 inchesEnter a height in centimeters(=O to quit): 168168.0 cm = 5 feet, 6.1 inchesEnter a height in centimeters(=O to quit): 0bye#include#define INCH 2.54 / 1 inch = 2.54cmint main(void)float cm;printf(Enter a height i

27、n centimeters:); scanf(%f,&cm);while(cm0)printf(%.1fcm = %d feet, %.1f inchesn,cm,int(cm/INCH/12),cm/INCH-int(cm/INCH/12)*12);printf(Enter a height in centimeters(=0 to quit):);scanf(%f,&cm);printf(byen);return(0);5. 改寫用來找到前 20 個整數之和的程序addemup.c (程序清單 5.13 )(如果您愿意,可以把addemup.c 程序看成是一個計算如果您第一

28、天得到 $l ,第二天得到 $2,第三天得到 $3 ,以此類推,您在 天里會掙多少錢的程序) 。修改該程序,目的是您能交 q 地告訴程序計算將進行到哪里。也就是說,用一個 讀入的變量來代替 20。#includeint main(void)int count,sum,max;count=0; sum=0;printf(Please input the max:);scanf(%d,&max); while(count+ max) sum = sum + count;printf(sum = %dn,sum);return(0);6. 現在修改編程練習 5 中的程序,使它能夠計算整數平方

29、的和(如果您喜歡,可以這樣認為:如 果您第一天得到 $l ,第二天得到 $4,第三天得到 $9,以此類推您將得到多少錢。這看起來像一個很好的買 賣)。C 沒有平方函數,但是您可以利用n 的平方是 n*n 的事實。#includeint main(void)int count,sum,max;count=0; sum=0;printf(Please input the max:);scanf(%d,&max); while(count+max)sum = sum + count * count; printf(sum = %dn,sum); return(0);7 編寫一個程序, 該程序

30、要求輸入一個 float 型數并打印該數的立方值。 使用您自己設計的函數 來計算該20值的立方并且將它的立方打印出來。 main() 程序把輸入的值傳遞給該函數。#includefloat cube(float);int main(void)float number;printf(Please input the number:);scanf(%f,&number);printf(The cube of %f is %fn,number,cube(number);return(0);float cube(float num)return(num * num * num);8編寫一個程序

31、,該程序要求用戶輸入一個華氏溫度。程序以 double 類型讀入溫度值,并將它 作為一個參數傳遞給用戶提供的函數 Temperatures() 。該函數將計算相應的攝氏溫度和絕對溫度,并以小 數點右邊有兩位數字的精度顯示這三種溫度。它應該用每個值所代表的溫度刻度來標識這 3 個值。下面是 將華氏溫度轉換成攝氏溫度的方程:通常用在科學上的絕對溫度的刻度是 0 代表絕對零,是可能溫度的下界。下面是將攝氏溫度轉換 為絕對溫度的方程:Kelvin=Celsius+273.16Temperatures() 函數使用 const 來創(chuàng)建代表該轉換里的 3 個常量的符號。 main() 函數將使用一個 循環(huán)

32、來允許用戶重復地輸入溫度,當用戶輸入q 或其他非數字值時,循環(huán)結束。#includevoid Temperatures(double);int main(void)double Fahrenheit;printf(Please input the Fahrenheit:);while(scanf(%lf,&Fahrenheit) = 1) /scanf的返回值代表成功輸入的變量的數目,非數字不會被成功輸入Temperatures(Fahrenheit);printf(Please input the Fahrenheit:);printf(endn);return(0);void Te

33、mperatures(double Fahrenheit)const double a=1.8,b=32.0,c=273.16; printf(Fahrenheit = %lft,Fahrenheit); printf(Celsius = %lft,a *Fahrenheit + b); printf(Kelvin = %lfn,a * Fahrenheit + b + c);第6章C控制語句:循環(huán)編程練習1編寫一個程序,創(chuàng)建一個具有 26 個元素的數組,并在其中存儲 26 個小寫字母。并讓該程序顯 示該數組的內容。#includeint main(void)char ABC26;int i;

34、for(i=0;i26;i+)ABCi = a + i; for(i=0;i26;i+) printf(%c,ABCi); printf(n);return(0);2 使用嵌套循環(huán)產生下列圖案:S$#includeint main(void)int i,j; for(i=0;i5;i+) for(j=0;j=i;j+) printf($); printf(n); return(0);3 使用嵌套循環(huán)產生下列圖案:FFEFEDFEDCFEDCBFEDCBA請注意:如果您的系統(tǒng)不使用ASCII 或其他以數字順序編碼的碼,您可以把一個字符數組初始化為字母表中的字母:char lets26=ABCDE

35、FGHIJKLMNOPQRSTUVWXYZ;然后就可以使用數組索引來選用單個的字母,例如letsO是A,等等。#includeint main(void)int i,j;for(i=O;i6;i+)for(j=O;j=i;j+) printf(%c,F-j); printf(n);return(O);4讓程序要求用戶輸入一個大寫字母,使用嵌套循環(huán)產生像下面這樣的金字塔圖案:AABAABCBAABCDCDAABCDEDCBA 這種圖案要擴展到用戶輸入的字符。例如,前面的圖案是在輸入E 時需要產生的。提示:使用一個外部循環(huán)來處理行,在每一行中使用三個內部循環(huán),一個處理空格,一個以升序打印字母,一個

36、以降序 打印字母。如果您的系統(tǒng)不使用 ASCII 或類似的以嚴格數字順序表示字母的編碼,請參見在編程練習 3 中 給出的建議。#includeint main(void)int i,j,k;char letter;printf(Please input a capital:);scanf(%c,&letter);k=letter-A+1;for(i=0;ik;i+)for(j=0;jk-i;j+) printf( );for(j=0;j=0;j-) printf(%c,A+j);printf(n);return(0);5編寫一個程序打印一個表,表的每一行都給出一個整數、它的平方以及它的

37、立方。要求用戶輸 入表的上限與下限。使用一個 for 循環(huán)。#includeint main(void)int i,min,max;printf(Please input the min and max:);scanf(%d %d,&min,&max); printf(%10s%10s%10sn,num,square,cube);for(i=min;i=max;i+) printf(%10d%10d%10dn,i,i*i,i*i*i);return(0);6編寫一個程序把一個單詞讀入一個字符數組,然后反向打印出這個詞。提示:使用 第 4 章)計算數組中最后一個字符的索引。#in

38、clude#includeint main(void)char word20;int i;printf(Please input a word:);scanf(%s,&word);for(i=strlen(word)-1;i=0;i-)printf(%c,wordi);strlen()printf(n); return(0);7編寫一個程序,要求輸入兩個浮點數,然后打印出用二者的差值除以二者的乘積所得的結果。 在用戶鍵入非數字的輸入之前程序循環(huán)處理每對輸入值。#includeint main(void)float a,b; printf(Please input two floats:

39、); while(scanf(%f%f,&a,&b) =2 )printf(%.2f-%.2f) / (%.2f*%.2f) = %.2fn,a,b,a,b,(a-b) / (a*b); printf(Please input two floats:);printf(endn); return(0);8對練習 7 進行修改,讓它使用一個函數來返回計算值。#includefloat calculate(float,float);int main(void)float a,b;printf(Please input two floats:);while(scanf(%f%f,&am

40、p;a,&b) =2 )printf( (%.2f-%.2f) / (%.2f*%.2f) = %.2fn,a,b,a,b,calculate(a,b) ); printf(Please input two floats:);printf(endn);return(0);float calculate(float x,float y)return( (x-y) / (x*y) );9編寫一個程序,要求用戶輸入下限整數和一個上限整數,然后,依次計算從下限到上限的每一個整數的平方的加和,最后顯示結果。程序將不斷提示用戶輸入下限整數和上限整數并顯示出答案,直到 用戶輸入的上限整數等于或小于下

41、限整數為止。程序運行的結果示例應該如下所示:Enter lower and upper integer limits: 5 9The sums of the squares from 25 t0 81 is 255Enter next set of limits:3 25The sums of the squares from 9 t0 625 iS 5520Enter next set of limits:5 5Done#includeint main(void)int lower,upper,sum,i;printf(Enter lower and upper integer limits

42、:); scanf(%d%d,&lower,&upper);while(lowerupper ) for(i=lower,sum=0;i=upper;i+) sum+=i*i;printf(The sums of the squates from %d to %d is %dn,lower*lower,upper*upper,sum); printf(Enter next set oflimits:);scanf(%d%d,&lower,&upper);printf(Donen); return(0);10. 編寫一個程序把 8 個整數讀入一個數組中,然后以相反

43、的順序打印它們#includeint main(void)int num8,i;printf(Enter 8 numbers:);for(i=0;i=0;i-) printf(%dt,numi); printf(n);return(0);11. 考慮這兩個無限序列:1.0 +1.0/2.0+1.0/3.0+1.0/4.0+1.0 - 1.0/2.0+1.0/3.0 -1.0/4.0+ 編寫一個程序來計算這兩個序列不斷變化的總和,直到達到某個次數。讓用戶交互地輸入這個次數??纯丛?20 次、100 次和 500 次之后的總和。是否每個序列都看上去要收斂于某個值?提示:奇數個 -1 相乘的值為 -

44、1 ,而偶數個 -1 相乘的值為 1 。#includeint main(void)double i,sum1,sum2;int sign,count; printf(Enter the count:);scanf(%d,&count);for(i=1.0,sign=1,sum1=0,sum2=0;i=count;i+,sign -= sign)sum1 += 1.0 / i;sum2 += sign * 1.0 / i;printf(1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 .(%d terms) = %lfn,count,sum1);printf(1.0

45、- 1.0/2.0 + 1.0/3.0 - 1.0/4.0 .(%d terms) = %lfn,count,sum2); return(0);12.編寫一個程序, 創(chuàng)建一個 8 個元素的 int 數組,并且把元素分別設置為 2 的前 8 次冪, 然后打 印出它們的值。使用 for 循環(huán)來設置值;為了變化,使用 do while 循環(huán)來顯示這些值。#include#includeint main(void)int num8,i;for(i=0;i8;i+)numi = pow(2,i); /pow 乘冪函數 用到 math 頭文件 i = 0;doprintf(%dt,numi);while(

46、+i8);printf(n);return(0);13.編寫一個程序,創(chuàng)建兩個 8 元素的 double 數組,使用一個循環(huán)來讓用戶鍵入第一個數組的 8 個元素的值。程序把第二個數組的元素設置為第一個數組元素的累積和。例如,第二個數組的第 4 個元素 應該等于第一個數組的前 4 個元素的和,第二個數組的第 5 個元素應該等于第一個數組的前 5 個元素的和 (使用嵌套循環(huán)可以做到這一點。不過利用第二個數組的第5 個元素等于第二個數組的第 4 個元素加上第一個數組的第 5 個元素這一事實, 可以避免嵌套而只使用單個循環(huán)來完成這個任務) 。最后, 使用一個循環(huán) 來顯示兩個數組中的內容,第一個數組在一

47、行中顯示,而第二個數組中的每個元素在第一個數組的對應元 素之下進行顯示。#includeint main(void)double num8,sum8;int i,j;printf(Enter 8 numbers:);for(i=0;i8;i+)scanf(%lf,&numi); for(j=0,sumi=0;j=i;j+) sumi += numj;for(i=0;i8;i+) printf(%8.3lf,numi); printf(n);for(i=0;i8;i+) printf(%8.3lf,sumi); printf(n);return(0);14.編寫一個程序讀入一行輸入,然后

48、反向打印該行。您可以把輸入存儲在一個 char 數組中;假 定該行不超過 255 個字符?;貞浺幌拢梢允褂镁哂?%c 說明符的 scanf() 從輸入中一次讀入一個字符, 而且當您按下回車鍵時會產生換行字符 (n) 。#include#define LENGTH 20int main(void)char a255;int i;for(i=0;i=0;i-) printf(%c,ai); printf(n);return(0);15.Daphne 以 10%的單利息投資了 100 美元(也就是說, 每年投資贏得的利息等于原始投資的 10%)。 Deirdre則以每年 5%勺復合利息投資了 1

49、0O 美元(也就是說,利息是當前結余的 5%其中包括以前的利息)。編寫一個程序,計算需要多少年 Deirdre 的投資額才會超過 Daphne,并且顯示出到那時兩個人的投資額。#includeint main(void)double Daphne=100,Deirdre=100;int i=0; while(Daphne=Deirdre)Daphne += 100 * 0.1;Deirdre += Deirdre * 0.05;i+;printf(After %d years,Deirdres investment is %lf,Daphnes investment is %lfn,i,Dei

50、rdre,Daphne);return(0);16. Chuckie Lucky贏了 100 萬美元,他把它存入一個每年贏得 8%的帳戶。在每年的最后一天,Chuckie 取出 10 萬美元。編寫一個程序,計算需要多少年 Chuckie 就會清空他的帳戶。#includeint main(void)double investment = 100;int i=0;while(investment 0)investment += investment * 0.08;investment -= 10;i+;printf(After %d years,Chuckie Luckys investment

51、 is outn,i,investment); return(0);第七章 C 控制語句:分支和跳轉 編程練習1編寫一個程序。該程序讀取輸入直到遇到#字符,然后報告讀取的空格數目、讀取的換行符數目以及讀取的所有其他字符數目。#includeint main(void)int space=0,newline=0,others=0;char a;printf(Please input a string end by #:); while(a=getchar() != #) if(a = ) space+;else if (a = n) newline+;else others+;printf(sp

52、ace: %d,newline: %d,others: %dn,space,newline,others); return(0);2編寫一個程序,該程序讀取輸入直到遇到#字符。使程序打印每個輸入的字符以及它的十進制ASCII 碼。每行打印 8 個字符,編碼對。建議:利用字符計數和模運算符(%)在每 8 個循環(huán)周期時打印一個換行符。#includeint main(void)char a;int i;printf(Please input a string end by #:); for(i = 1; (a = getchar() != #; i+)printf(%c-%dt,a,a);if(i

53、%8 = 0) printf(n);printf(n);return(0);3 編寫一個程序。該程序讀取整數,直到輸入0。輸入終止后,程序應該報告輸入的偶數(不包括0)總個數、偶數的平均值,輸入的奇數總個數以及奇數的平均值。#includeint main(void)int i_even = 0, sum_even = 0, i_odd = 0, sum_odd = 0, num; printf(Please input numbers (0 to quit):);while(1) scanf(%d,&num);if (num = 0) break;if (num % 2 = 0) i

54、_even+; sum_even += num;else i_odd+; sum_odd += num;printf(even numbers count: %dn,i_even); printf(even numbers sum : %dn,sum_even);printf(odd numbers count: %dn,i_odd); printf(odd numbers sum : %dn,sum_odd);return(0);4 利用 if else 語句編寫程序讀取輸入,直到 #。用一個感嘆號代替每個句號,將原有的每個感嘆 號用兩個感嘆號代替,最后報告進行了多少次替代。#include

55、int main(void)int a=0,b=0;char ch;printf(Please input a string end by #:); while(ch = getchar() != #)if(ch = .) putchar(!); a+;else if(ch = !) putchar(!);putchar(!); b+; else putchar(ch);printf(nthe times of . replaced by !: %dn,a); printf(the times of ! replaced by !: %dn,b); return(0);5用 switch 重做

56、練習 3 。#includeint main(void)int i_even = 0, sum_even = 0, i_odd = 0, sum_odd = 0, num; printf(Please input numbers (0 to quit):);while(1)scanf(%d,&num);if (num = 0) break;switch(num % 2)case 0: i_even+;sum_even += num;break;case 1: i_odd+;sum_odd += num;printf(even numbers count: %dn,i_even); pr

57、intf(even numbers sum : %dn,sum_even); printf(odd numberscount: %dn,i_odd); printf(odd numbers sum : %dn,sum_odd); return(0);6編寫一個程序讀取輸入,直到 # ,并報告序列 ei 出現的次數。 此程序必須要記住前一個字符和當前的字符。用諸如“ Receive your eieio award. ”的輸入測試 它。#includeint main(void)char former=0,present;int count=0;while(present=getchar() !

58、= #)if(former = e) & (present = i) count+;former = present;printf(ei has appeared %d timesn,count); return(0);7 編寫程序,要求輸入一周中的工作小時數,然后打印工資總額、稅金以及凈工資。作如下假設: a 基本工資等級 =10.00 美元 /J, 時b 加班(超過 40 小時) =1.5 倍的時間c 稅率 前 300 美元為 15%下一個 150 美元為 20% 余下的為 25%用 #define 定義常量,不必關心本例是否符合當前的稅法。#include/a. 基本工資#def

59、ine BASIC 10.00 /基本工資等級=BASIC 美元/小時/b. 加班#define TIME 40 / 加班(超過 TIME 小時) =#define ADD 1.5 /ADD倍的時間/c. 稅率#define LIMIT1 300 /前 LIMIT1 美元為 RATE1#define RATE1 0.15#define LIMIT2 150 /下一個 LIMIT2 美元為 RATE2#define RATE2 0.20#define RATE3 0.25 /余下的位 RATE3int main(void)double hours,gross,tax;printf(input t

60、he work hours of a week:);scanf(%lf,&hours);if (hours 40) hours = 40 + (hours - 40) * 1.5;gross = hours * BASIC;printf(gross income:tt%lfn,gross);if (gross = LIMIT1) tax = gross * RATE1;else if (gross = LIMIT2) tax = LIMIT1 * RATE1 + (gross - LIMIT1) * RATE2;else tax = LIMIT1 * RATE1 + LIMIT2 * RATE2 + (gross - LIMIT1 - LIMIT2) * RATE3; printf(tax:ttt%lfn,tax);printf(net income:tt%lfn,gross - tax);return(0);8 .修改練習 7 中的假設 a,使程序提供一個選擇工資等級的菜

溫馨提示

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

評論

0/150

提交評論