C程序设计谭浩强第五版课后答案 第三章习题答案
C語言程序設(shè)計(jì)譚浩強(qiáng)第五版課后答案第三章
1、假如我國(guó)國(guó)民生產(chǎn)總值的年增長(zhǎng)率為7%, 計(jì)算10年后我國(guó)國(guó)民生產(chǎn)總值與現(xiàn)在相比增長(zhǎng)多少百分比。計(jì)算公式為p=(1+r)np = (1+r)^np=(1+r)n ,其中r為年增長(zhǎng)率,n為年數(shù),p為與現(xiàn)在相比的倍數(shù)。
題目解析:
- 此題的關(guān)鍵主要是利用數(shù)學(xué)庫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)nP=1000* (1+r)^nP=1000?(1+r)n;
-
活期存款本息和: P= 1000 *(1+r4\frac{r}{4}4r?)4n^{4n}4n;
說明: 1000*(1+r4\frac{r}{4}4r?)是一個(gè)季度的本息和。
題目解析:
理解題意很關(guān)鍵,其次就是利用數(shù)學(xué)庫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、購房從銀行貸了一筆款d,準(zhǔn)備每月還款額為p,月利率為r,計(jì)算多少月能還清。設(shè)d為300 000元,p為6000元,r為1%。對(duì)求得的月份取小數(shù)點(diǎn)后一位,對(duì)第2位按四舍五人處理。
提示:計(jì)算還清月數(shù)m的公式如下:
可以將公式改寫為:
C的庫函數(shù)中有求對(duì)數(shù)的函數(shù)log10,是求以10為底的對(duì)數(shù),log( p )表示log p。
題目解析:
該題的關(guān)鍵主要是利用數(shù)學(xué)函數(shù)庫中的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)榈谝恍惺蛔址问捷敵?#xff0c;所以會(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ī)律是:用原來的字母后面第4個(gè)字母代替原來的字母。例如,字母“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)過運(yùn)算,使c1,c2,c3,c4,c5 分別變?yōu)椤疓’,‘l’,‘m’,‘r’,‘e’。分別用putchar函數(shù)和printf函數(shù)輸出這5個(gè)字符。
題目解析:
- 密碼轉(zhuǎn)換的關(guān)鍵在于相應(yīng)字符的ascii加4進(jìn)行賦值修改原來的字符即可,修改完成后即為相應(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í)要求有文字說明,取小數(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)ls = r*r*pi; //計(jì)算圓面積ssq = 4 * pi*r*r; //計(jì)算圓球表面積sqvq = 3.0 / 4.0*pi*r*r*r; //計(jì)算圓球體積vqvz = pi*r*r*h; //計(jì)算圓柱體積vzprintf("圓周長(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è)字符。思考以下問題:
(1) 變量cl和c2應(yīng)定義為字符型、整型還是二者皆可?
(2) 要求輸出cl和c2值的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?
(3) 整型變量與字符變量是否在任何情況下都可以互相代替?如:
char c1,c2;
與
int cl,c2;
是否無條件地等價(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語句輸出結(jié)果為:");putchar(c1);putchar(c2);printf("\n");printf("用printf語句輸出結(jié)果為:");printf("%c %c\n", c1, c2);return 0; }運(yùn)行結(jié)果:
更多
C語言程序設(shè)計(jì)譚浩強(qiáng)第五版課后答案 第二章習(xí)題答案
C語言程序設(shè)計(jì)譚浩強(qiáng)第五版課后答案 第四章習(xí)題答案
總結(jié)
以上是生活随笔為你收集整理的C程序设计谭浩强第五版课后答案 第三章习题答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HPLC工作原理及仪器组成
- 下一篇: Mob分享的填坑