C語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)第五版課后答案(第三章習(xí)題答案)
1、假如我國(guó)國(guó)民生產(chǎn)總值的年增長(zhǎng)率為7%, 計(jì)算10年后我國(guó)國(guó)民生產(chǎn)總值與現(xiàn)在相比增長(zhǎng)多少百分比。計(jì)算公式為 p = ( 1 + r ) n p = (1+r)^n p=(1+r)n ,其中r為年增長(zhǎng)率,n為年數(shù),p為與現(xiàn)在相比的倍數(shù)。
題目解析:
此題的關(guān)鍵主要是利用數(shù)學(xué)庫(kù)math中pow函數(shù)進(jìn)行計(jì)算,若不熟悉可以查閱幫助文檔,查看pow函數(shù)的用法。 代碼示例:
#include<stdio.h> #include <math.h> int main() { float p, r, n; r = 0.07; n = 10; p = pow(1 + r, n); printf("p=%f\n", p); return 0; }
運(yùn)行結(jié)果:
2、存款利息的計(jì)算。有1000元,想存5年,可按以下5種辦法存:
(1)一次存5年期
(2)先存2年期,到期后將本息再存3年期
(3)先存3年期,到期后將本息再存2年期
(4)存1年期,到期后將本息再存1年期,連續(xù)存5次
(5)存活期存款,活期利息每一季度結(jié)算一次
2017年銀行存款利息如下:
1年期定期存款利息為1.5%;
2年期定期存款利息為2.1%;
3年期定期存款利息為2.75%;
5年期定期存款利息為3%;
活期存款利息為0.35%(活期存款每一-季度結(jié)算一-次利息)
如果r為年利率,n為存款年數(shù),則計(jì)算本息的公式如下:
1年期本息和: P= 1000* (1+r);
n年期本息和: P= 1000* (1+n* r);
存n次1年期的本息和: P = 1000 ∗ ( 1 + r ) n P=1000* (1+r)^n P=1000∗(1+r)n;
活期存款本息和: P= 1000 *(1+ r 4 \frac{r}{4} 4r) 4 n ^{4n} 4n;
說(shuō)明: 1000*(1+ r 4 \frac{r}{4} 4r)是一個(gè)季度的本息和。
題目解析:
理解題意很關(guān)鍵,其次就是利用數(shù)學(xué)庫(kù)math中pow函數(shù)進(jìn)行冪次方計(jì)算
代碼示例:
#include<stdio.h> #include <math.h> int main() { float r5, r3, r2, r1, r0, p, p1, p2, p3, p4, p5; p = 1000; r5 = 0.0585; r3 = 0.054; r2 = 0.0468; r1 = 0.0414; r0 = 0.0072; p1 = p*((1 + r5) * 5); // 一次存5年期 p2 = p*(1 + 2 * r2)*(1 + 3 * r3); // 先存2年期,到期后將本息再存3年期 p3 = p*(1 + 3 * r3)*(1 + 2 * r2); // 先存3年期,到期后將本息再存2年期 p4 = p*pow(1 + r1, 5); // 存1年期,到期后將本息存再存1年期,連續(xù)存5次 p5 = p*pow(1 + r0 / 4, 4 * 5); // 存活期存款。活期利息每一季度結(jié)算一次 printf("p1=%f\n", p1); // 輸出按第1方案得到的本息和 printf("p2=%f\n", p2); // 輸出按第2方案得到的本息和 printf("p3=%f\n", p3); // 輸出按第3方案得到的本息和 printf("p4=%f\n", p4); // 輸出按第4方案得到的本息和 printf("p5=%f\n", p5); // 輸出按第5方案得到的本息和 return 0; }
運(yùn)行結(jié)果:
3、購(gòu)房從銀行貸了一筆款d,準(zhǔn)備每月還款額為p,月利率為r,計(jì)算多少月能還清。設(shè)d為300 000元,p為6000元,r為1%。對(duì)求得的月份取小數(shù)點(diǎn)后一位,對(duì)第2位按四舍五人處理。
提示:計(jì)算還清月數(shù)m的公式如下:
可以將公式改寫(xiě)為:
C的庫(kù)函數(shù)中有求對(duì)數(shù)的函數(shù)log10,是求以10為底的對(duì)數(shù),log( p )表示log p。
題目解析:
該題的關(guān)鍵主要是利用數(shù)學(xué)函數(shù)庫(kù)中的log函數(shù)進(jìn)行求解,然后月份要求按照小數(shù)點(diǎn)后一位進(jìn)行四舍五入進(jìn)行處理,只需要在輸出時(shí)進(jìn)行格式控制即可。
代碼示例:
#include<stdio.h> #include <math.h> int main() { float d = 300000, p = 6000, r = 0.01, m; m = log10(p / (p - d*r)) / log10(1 + r); printf("m = %3.1f\n", m); return 0; }
運(yùn)行結(jié)果:
4、分析下面的程序:
#include<stdio.h> int main() { char c1, c2; c1 = 97; c2 = 98; printf("c1=%c, c2=%c\n", c1, c2); printf("c1=%d, c2=%d\n", c1, c2); return 0; }
(1)運(yùn)行時(shí)會(huì)輸出什么信息?為什么?
答:會(huì)輸出 :
c1=97, c2=98
- 因?yàn)榈谝恍惺蛔址问捷敵?,所以?huì)吧97和98當(dāng)作相依字符的ascii值,輸出的時(shí)候按照字符顯示,
- 第二行由于是以整形輸出,所以輸出對(duì)應(yīng)整數(shù)值
(2)如果將程序第4,5行改為
- c1 = 197;
- c2 = 198;
運(yùn)行時(shí)會(huì)輸出什么信息?為什么?
答: 會(huì)輸出:
因?yàn)閏1和c2為char類型,其保存的數(shù)據(jù)范圍為-128~127,當(dāng)c1=197,c2=198時(shí),已經(jīng)超出了char類型所能夠保存的數(shù)據(jù)范圍,此時(shí)會(huì)進(jìn)行相應(yīng)的轉(zhuǎn)換為c1=-59,c2=-58,只是第一行以字符輸出時(shí),c1=-59,c2=-58為不可顯示字符,所以輸出了?,而第二行以整數(shù)輸出時(shí)就進(jìn)行了相應(yīng)的整數(shù)顯示。
(3)如果將程序第3行改為
int c1, c2;
運(yùn)行時(shí)會(huì)輸出什么信息?為什么?
答: 會(huì)輸出
因?yàn)閏1和c2為int時(shí),第二行以整形輸出自然能夠保存的下,但第一行以字符輸出時(shí),雖然數(shù)據(jù)int能夠儲(chǔ)存,但是在輸出時(shí)需要準(zhǔn)換為字符,轉(zhuǎn)換后數(shù)據(jù)就超出了范圍,此時(shí)c1=-59,c2=-58,兩者都為不可顯示字符,所以就顯示了?。
5、用下面的scanf 函數(shù)輸人數(shù)據(jù),使a=3,b=7,x=8.5,y=71. 82,cl=‘A',c2=‘a(chǎn)'。在鍵盤上應(yīng)如何輸入?
#include<stdio.h> int main() { int a, b; float x, y; char c1, c2; scanf("a=%db=%d", &a, &b); scanf("%f%e",&x, &y); scanf("%c%c",&c1, &c2); return 0; }
題目解析: 此題主要考察格式化輸入,整形輸入a和b時(shí),必須按照a=3b=7的格式輸入,浮點(diǎn)數(shù)輸入時(shí),%e代表科學(xué)記數(shù)法輸入,字符輸入c1和c2時(shí),中間不能有任何空格 運(yùn)行結(jié)果:
6、請(qǐng)編程序?qū)ⅰ癈hina"譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4個(gè)字母代替原來(lái)的字母。例如,字母“A”后面第4個(gè)字母是“E”,用“E”代替“A”。因此,“China"應(yīng)譯為“Glmre”。請(qǐng)編一程序,用賦初值的方法使cl,c2,c3,c4,c5這5個(gè)變量的值分別為'C',‘h',‘i',‘n',‘a(chǎn)' ,經(jīng)過(guò)運(yùn)算,使c1,c2,c3,c4,c5 分別變?yōu)?G',‘l',‘m',‘r',‘e'。分別用putchar函數(shù)和printf函數(shù)輸出這5個(gè)字符。
題目解析: 密碼轉(zhuǎn)換的關(guān)鍵在于相應(yīng)字符的ascii加4進(jìn)行賦值修改原來(lái)的字符即可,修改完成后即為相應(yīng)的密碼,在使用putchar和printf進(jìn)行相應(yīng)輸出即可。
代碼示例:
#include<stdio.h> int main() { char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a'; c1 = c1 + 4; c2 = c2 + 4; c3 = c3 + 4; c4 = c4 + 4; c5 = c5 + 4; //使用putchar輸出 printf("使用putchar輸出: "); putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar(c5); printf("\n"); //使用printf輸出 printf("使用putchar輸出: %c%c%c%c%c\n", c1, c2, c3, c4, c5); return 0; }
運(yùn)行結(jié)果:
7、設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸人數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。請(qǐng)編程序。 題目解析:
此題主要理解圓柱的各種求法,其次要求取小數(shù)點(diǎn)后兩位,只需在打印時(shí)進(jìn)行格式控制即可。
代碼示例:
#include<stdio.h> int main() { float h, r, l, s, sq, vq, vz; float pi = 3.141526; printf("請(qǐng)輸入圓半徑r,圓柱高h(yuǎn)∶"); scanf("%f %f", &r, &h); //要求輸入圓半徑r和圓柱高h(yuǎn) l = 2 * pi*r; //計(jì)算圓周長(zhǎng)l s = r*r*pi; //計(jì)算圓面積s sq = 4 * pi*r*r; //計(jì)算圓球表面積sq vq = 3.0 / 4.0*pi*r*r*r; //計(jì)算圓球體積vq vz = pi*r*r*h; //計(jì)算圓柱體積vz printf("圓周長(zhǎng)為: l=%6.2f\n", l); printf("圓面積為: s=%6.2f\n", s); printf("圓球表面積為: sq=%6.2f\n", sq); printf("圓球體積為: v=%6.2f\n", vq); printf("圓柱體積為: vz=%6.2f\n", vz); return 0; }
運(yùn)行結(jié)果:
8.編程序,用getchar函數(shù)讀人兩個(gè)字符給c1和c2,然后分別用putchar函數(shù)和printf函數(shù)輸出這兩個(gè)字符。思考以下問(wèn)題:
(1) 變量cl和c2應(yīng)定義為字符型、整型還是二者皆可?
(2) 要求輸出cl和c2值的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?
(3) 整型變量與字符變量是否在任何情況下都可以互相代替?如:
char c1,c2;
與
int cl,c2;
是否無(wú)條件地等價(jià)?
題目解析:
(1) 變量cl和c2應(yīng)定義為字符型、整型還是二者皆可?
答:c1和c2 應(yīng)定義為整形,因?yàn)槎x為字符有可能返回的整數(shù)會(huì)超出字符的存儲(chǔ)范圍
(2) 要求輸出cl和c2值的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?
答:需要使用printf函數(shù),打印是以整形形式打印
(3) 整型變量與字符變量是否在任何情況下都可以互相代替
答:不是,因?yàn)閮烧叩拇鎯?chǔ)范圍不同,如果整數(shù)超出了字符的存儲(chǔ)范圍,則不能相互替換 代碼示例:
int main() { int c1, c2; printf("請(qǐng)輸入兩個(gè)字符c1,c2:"); c1 = getchar(); c2 = getchar(); printf("用putchar語(yǔ)句輸出結(jié)果為:"); putchar(c1); putchar(c2); printf("\n"); printf("用printf語(yǔ)句輸出結(jié)果為:"); printf("%c %c\n", c1, c2); return 0; }
運(yùn)行結(jié)果:
到此這篇關(guān)于C語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)第五版課后答案(第三章習(xí)題答案)的文章就介紹到這了,更多相關(guān)C語(yǔ)言程序設(shè)計(jì)第五版課后答案內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Qt信號(hào)槽與事件循環(huán)的關(guān)系
本文主要介紹了Qt信號(hào)槽與事件循環(huán)的關(guān)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08C語(yǔ)言中的數(shù)據(jù)整除判斷問(wèn)題
這篇文章主要介紹了C語(yǔ)言中的數(shù)據(jù)整除判斷問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11C++11 中的std::function和std::bind詳解
這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-10-10C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序
這篇文章主要介紹了C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09C++詳細(xì)講解圖論的基礎(chǔ)與圖的儲(chǔ)存
圖論〔Graph?Theory〕是數(shù)學(xué)的一個(gè)分支。它以圖為研究對(duì)象。圖論中的圖是由若干給定的點(diǎn)及連接兩點(diǎn)的線所構(gòu)成的圖形,這種圖形通常用來(lái)描述某些事物之間的某種特定關(guān)系,用點(diǎn)代表事物,用連接兩點(diǎn)的線表示相應(yīng)兩個(gè)事物間具有這種關(guān)系2022-05-05