《C語言程序設計》課后習題答案第四版譚浩強.docx
《《C語言程序設計》課后習題答案第四版譚浩強.docx》由會員分享,可在線閱讀,更多相關《《C語言程序設計》課后習題答案第四版譚浩強.docx(112頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第1章程序設計和C語言1
1.1什么是計算機程序1
1.2什么是計算機語言1
1.3C語言的發(fā)展及其特點3
1.4最簡單的C語言程序5
1.4.1最簡單的C語言程序舉例6
1.4.2C語言程序的結(jié)構(gòu)10
1.5運行C程序的步驟與方法12
1.6程序設計的任務14
1-5 #include
2、***\n");
return 0;
}
1-6#include 3、算法舉例17
2.3算法的特性21
2.4怎樣表示一個算法22
2.4.1用自然語言表示算法22
2.4.2用流程圖表示算法22
2.4.3三種基本結(jié)構(gòu)和改進的流程圖26
2.4.4用NS流程圖表示算法28
2.4.5用偽代碼表示算法31
2.4.6用計算機語言表示算法32
2.5結(jié)構(gòu)化程序設計方法34
習題36
第章最簡單的C程序設計——順序程序設計37
3.1順序程序設計舉例37
3.2數(shù)據(jù)的表現(xiàn)形式及其運算39
3.2.1常量和變量39
3.2.2數(shù)據(jù)類型42
3.2.3整型數(shù)據(jù)44
3.2.4字符型數(shù)據(jù)47
3.2.5浮點型數(shù)據(jù)49
3.2. 4、6怎樣確定常量的類型51
3.2.7運算符和表達式52
3.3C語句57
3.3.1C語句的作用和分類57
3.3.2最基本的語句——賦值語句59
3.4數(shù)據(jù)的輸入輸出65
3.4.1輸入輸出舉例65
3.4.2有關數(shù)據(jù)輸入輸出的概念67
3.4.3用printf函數(shù)輸出數(shù)據(jù)68
3.4.4用scanf函數(shù)輸入數(shù)據(jù)75
3.4.5字符數(shù)據(jù)的輸入輸出78
習題82
3-1 #include 5、;
printf("p=%f\n",p);
return 0;
}
3-2-1
#include 6、 // 先存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); // 存活期存款?;钇诶⒚恳患径冉Y(jié)算一次
printf("p1=%f\n",p1); // 輸出按第1方案得到的本息和
printf("p2=%f\n",p2); // 輸出按第2方案得到的本息和
printf( 7、"p3=%f\n",p3); // 輸出按第3方案得到的本息和
printf("p4=%f\n",p4); // 輸出按第4方案得到的本息和
printf("p5=%f\n",p5); // 輸出按第5方案得到的本息和
return 0;
}
3-2-2
#include 8、8;
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 9、("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;
}
3-2-3
#include 10、nt 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); 11、 // 存1年期,到期后將本息存再存1年期,連續(xù)存5次
p5=p*pow(1+r0/4,4*5); // 存活期存款?;钇诶⒚恳患径冉Y(jié)算一次
printf("p1=%10.2f\n",p1); // 輸出按第1方案得到的本息和
printf("p2=%10.2f\n",p2); // 輸出按第2方案得到的本息和
printf("p3=%10.2f\n",p3); // 輸出按第3方案得到的本息和
printf("p4=%10.2f\n",p4); // 輸出按第4方案得到的本息和
12、
printf("p5=%10.2f\n",p5); // 輸出按第5方案得到的本息和
return 0;
}
3-3.
#include 13、 c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
3-5
#include 14、n",a,b,x,y,c1,c2);
return 0;
}
3-6
#include 15、oat pi=3.141526;
printf("請輸入圓半徑r,圓柱高h∶");
scanf("%f,%f",&r,&h); //要求輸入圓半徑r和圓柱高h
l=2*pi*r; //計算圓周長l
s=r*r*pi; //計算圓面積s
sq=4*pi*r*r; //計算圓球表面積sq
vq=3.0/4.0*pi*r*r*r; //計算圓球體積vq
vz=pi*r*r* 16、h; //計算圓柱體積vz
printf("圓周長為: 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;
}
3-8-1
#include 17、 //整型定義
printf("請輸入兩個整數(shù)c1,c2:");
scanf("%d,%d",&c1,&c2);
printf("按字符輸出結(jié)果:\n");
printf("%c,%c\n",c1,c2);
printf("按ASCII碼輸出結(jié)果為:\n");
printf("%d,%d\n",c1,c2);
return 0;
}
3-8-2
#include 18、義字符型變量
int i1,i2; //定義整型變量
printf("請輸入兩個字符c1,c2:");
scanf("%c,%c",&c1,&c2);
i1=c1; //賦值給整型變量
i2=c2;
printf("按字符輸出結(jié)果:\n");
printf("%c,%c\n",i1,i2);
printf("按整數(shù)輸出結(jié)果:\n");
printf("%d,%d\n",c1,c2);
return 0;
}
3- 19、8-3
#include 20、按字符輸出結(jié)果:\n");
printf("%c,%c\n",c1,c2);
printf("按整數(shù)輸出結(jié)果:\n");
printf("%d,%d\n",c1,c2);
return 0;
}
3-8
#include 21、ntf("用printf語句輸出結(jié)果為:");
printf("%c %c\n",c1,c2);
return 0;
}
第4章選擇結(jié)構(gòu)程序設計85
4.1選擇結(jié)構(gòu)和條件判斷85
4.2用if語句實現(xiàn)選擇結(jié)構(gòu)87
4.2.1用if語句處理選擇結(jié)構(gòu)舉例87
4.2.2if語句的一般形式 89
4.3關系運算符和關系表達式91
4.3.1關系運算符及其優(yōu)先次序91
4.3.2關系表達式92
4.4邏輯運算符和邏輯表達式92
4.4.1邏輯運算符及其優(yōu)先次序93
4.4.2邏輯表達式94
4.4.3邏輯型變量96
4.5條件運算符和條件表達式97
4.6選擇結(jié)構(gòu) 22、的嵌套99
4.7用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)102
4.8選擇結(jié)構(gòu)程序綜合舉例105
習題111
4-4-1
#include 23、n",c);
else
printf("max=%d\n",a);
return 0;
}
4-4-2
#include 24、
printf("三個整數(shù)的最大數(shù)是%d\n",max);
return 0;
}
4-5-2
#include 25、%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整數(shù)部分是:%d\n",i,k);
return 0;
}
4-5
#include 26、個小于%d的整數(shù)i:",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整數(shù)部分是:%d\n",i,k);
return 0;
}
4-6.
#include 27、f(x<10) /* 1= 28、if(x!=0)
if(x>0)
y=1;
else
y=0;
printf("x=%d,y=%d\n",x,y);
return 0;
}
4-7-2
#include 29、
}
4-8
#include 30、e=B;break;
case 7: grade=C;break;
case 6: grade=D;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade=E;
}
printf("成績是 %5.1f,相應的等級是%c\n ",score,grade);
return 0;
}
4-9
#include 31、ten_thousand,place; //分別代表個位,十位,百位,千位,萬位和位數(shù)
printf("請輸入一個整數(shù)(0-99999):");
scanf("%d",&num);
if (num>9999)
place=5;
else if (num>999)
place=4;
else if (num>99)
place=3;
else if (num>9)
place=2;
else place=1;
printf("位數(shù):%d\n",place);
p 32、rintf("每位數(shù)字為:");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switc 33、h(place)
{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序數(shù)字為:");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序數(shù)字為:");
printf(" 34、%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序數(shù)字為:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2:printf("%d,%d",ten,indiv);
printf("\n反序數(shù)字為:");
printf("%d%d\n",indiv,ten);
break; 35、
case 1:printf("%d",indiv);
printf("\n反序數(shù)字為:");
printf("%d\n",indiv);
break;
}
return 0;
}
4-10-1
#include 36、
bon6=bon4+100000*0.03;
bon10=bon6+400000*0.015;
printf("請輸入利潤i:");
scanf("%d",&i);
if (i<=100000)
bonus=i*0.1;
else if (i<=200000)
bonus=bon1+(i-100000)*0.075;
else if (i<=400000)
bonus=bon2+(i-200000)*0.05;
else if (i<=600000)
bonus=bon4+(i-400000)*0. 37、03;
else if (i<=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-1000000)*0.01;
printf("獎金是: %10.2f\n",bonus);
return 0;
}
4-10-2
#include 38、n2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("請輸入利潤i:");
scanf("%d",&i);
branch=i/100000;
if (branch>10) branch=10;
switch(branch)
{ case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
cas 39、e 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("獎金是 %10.2f\n",bonus);
return 40、 0;
}
4-11
#include 41、t;}
if (b>d)
{ t=b;b=d;d=t;}
if (c>d)
{ t=c;c=d;d=t;}
printf("排序結(jié)果如下: \n");
printf("%d %d %d %d \n" ,a,b,c,d);
return 0;
}
4-12
#include 42、一個點(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); /*求該點到各中心點距離*/
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判斷該點是否在塔外*/
printf("該點高度為 %d\n",h);
return 0 43、;
}
第5章循環(huán)結(jié)構(gòu)程序設計114
5.1為什么需要循環(huán)控制114
5.2用while語句實現(xiàn)循環(huán)115
5.3用do…while語句實現(xiàn)循環(huán)117
5.4用for 語句實現(xiàn)循環(huán)120
5.5循環(huán)的嵌套124
5.6幾種循環(huán)的比較125
5.7改變循環(huán)執(zhí)行的狀態(tài)125
5.7.1用break語句提前終止循環(huán)126
5.7.2用continue語句提前結(jié)束本次循環(huán)127
5.7.3break語句和continue語句的區(qū)別128
5.8循環(huán)程序舉例131
習題140
5-2
#include 44、 // 程序中用到數(shù)學函數(shù)fabs,應包含頭文件math.n
int main()
{
int sign=1,count=0; // sign用來表示數(shù)值的符號,count用來統(tǒng)計循環(huán)次數(shù)
double pi=0.0,n=1.0,term=1.0; // pi開始代表多項式的值,最后代表π的值, n代表分母,term代表當前項的值
while(fabs(term)>=1e-8) // 檢查當前項term的絕對值是否大于或等于10的(-6)次方
{
pi=pi+term; 45、 // 把當前項term累加到pi中
n=n+2; // n+2是下一項的分母
sign=-sign; // sign代表符號,下一項的符號與上一項符號相反
term=sign/n; // 求出下一項的值term
count++; // count累加1
}
pi=pi*4; // 多項式的和pi乘以4, 46、才是π的近似值
printf("pi=%10.8f\n",pi); // 輸出π的近似值
printf("count=%d\n",count); // 輸出循環(huán)次數(shù)
return 0;
}
5-3
#include 47、p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("它們的最大公約數(shù)為:%d\n",n);
printf("它們的最小公約數(shù)為:%d\n",p/n);
return 0;
}
5-4
#include 48、
if (c>=a && c<=z || c>=A && c<=Z)
letters++;
else if (c== )
space++;
else if (c>=0 && c<=9)
digit++;
else
other++;
}
printf("字母數(shù):%d\n空格數(shù):%d\n數(shù)字數(shù):%d\n其它字符數(shù):%d\n",letters,space,digit,other);
return 0;
}
5-5
#include 49、ain()
{
int a,n,i=1,sn=0,tn=0;
printf("a,n=:");
scanf("%d,%d",&a,&n);
while (i<=n)
{
tn=tn+a; /*賦值后的tn為i個 a組成數(shù)的值*/
sn=sn+tn; /*賦值后的sn為多項式前i項之和*/
a=a*10;
++i;
}
printf("a+aa+aaa+...=%d\n",sn);
return 0;
}
5-6
#include 50、s=0,t=1;
int n;
for (n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!+2!+...+20!=%22.15e\n",s);
return 0;
}
5-7
#include 51、k++) /*計算1到50各數(shù)的平方和*/
{s2=s2+k*k;}
for (k=1;k<=n3;k++) /*計算1到10的各倒數(shù)和*/
{s3=s3+1/k;}
printf("sum=%15.6f\n",s1+s2+s3);
return 0;
}
5-8
#include 52、 j=n/10-i*10;
k=n%10;
if (n==i*i*i + j*j*j + k*k*k)
printf("%d ",n);
}
printf("\n");
return 0;
}
5-9-1
#define M 1000 /*定義尋找范圍*/
#include
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案