譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))_第1頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))_第2頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))_第3頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))_第4頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案(整本書(shū))編制僅供參考審核批準(zhǔn)生效日期地址:電話(huà):傳真:郵編:C程序設(shè)計(jì)(第三版)課后習(xí)題參考解答寫(xiě)一個(gè)程序,輸入a,b,c三個(gè)值,輸出其中最大者。解:main(){inta,b,c,max;printf(“請(qǐng)輸入三個(gè)數(shù)a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大數(shù)為:%d”,max);}第2章程序的靈魂——算法什么叫結(jié)構(gòu)化的算法為什么要提倡結(jié)構(gòu)化的算法解:由一些基本結(jié)構(gòu)順序組成的算法稱(chēng)為結(jié)構(gòu)化的算法。由于在基本結(jié)構(gòu)之間不存在非順序的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個(gè)基本結(jié)構(gòu)范圍之內(nèi),因而提高了算法的質(zhì)量。什么叫結(jié)構(gòu)化程序設(shè)計(jì)它的主要內(nèi)容是什么解:結(jié)構(gòu)化程序就是用高級(jí)語(yǔ)言表示的結(jié)構(gòu)化算法。它的主要內(nèi)容包括“自頂向下,逐步細(xì)化”的分析方法和“模塊化設(shè)計(jì)”的解決方法,以及“結(jié)構(gòu)化編碼”的實(shí)現(xiàn)方法。第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.3請(qǐng)將下面各數(shù)用八進(jìn)制和十六進(jìn)制數(shù)表示:(1)10(2)32(3)75(4)-617(5)-111(6)2483(7)-28654(8)21003解:(1)(10)10=(12)8=(A)16(2)(32)10=(40)8=(20)16(75)10=(113)8=(4B)16(-617)10=(176627)8=(FD97)16此題可以這樣考慮:帶符號(hào)數(shù)在計(jì)算機(jī)中采用補(bǔ)碼表示,正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼=模+真值。若使用16位存儲(chǔ),模為216=65536。-617的補(bǔ)碼為65536+(-167)=64919=(176627)8=(FD97)16(-111)10=(177621)8=(FF91)16(2483)10=(4663)8=(9B3)16(-28654)10=(110022)8=(9012)16(21003)10=(51013)8=(520B)163.4將以下三各整數(shù)分別賦給不同類(lèi)型的變量,請(qǐng)畫(huà)出賦值后數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式。變量的類(lèi)型25-232769int型long型sort型signedchar(8位)unsignedint型unsignedlong型unsignedshort型unsignedchar型注:如果沒(méi)有學(xué)過(guò)二進(jìn)制和補(bǔ)碼,此題可以不做。解:各數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式如下表所示:變量的類(lèi)型25-232769int型00…08位11015100…001(溢出)14long型00…02411…11103100…0100…0011614short型00…0811015100…001(溢出)14signedchar(8位)00000001(溢出)unsignedint型00…0811…11015100…00114unsignedlong型00…02411…1103100…0100…0011614unsignedshort型00…0811…11015100…0018unsignedchar型其中int和short類(lèi)型,其取值范圍是-32768~32767。32769在這兩種類(lèi)型中實(shí)際表示負(fù)數(shù),它是一個(gè)負(fù)數(shù)的補(bǔ)碼,對(duì)其再求一次補(bǔ)碼可得其真值,即-(65536-32769)=-32767。char和unsignedchar為8位,若將int或long類(lèi)型數(shù)據(jù)賦給這種類(lèi)型,則截取數(shù)據(jù)低8位。同理,若將long賦給int,則截取低16位。3.5字符常量和字符串常量有什么區(qū)別解:字符常量是一個(gè)字符,用單引號(hào)括起來(lái)。字符串常量是由0個(gè)或若干個(gè)字符組合而成,用雙引號(hào)括起來(lái),存儲(chǔ)時(shí)自動(dòng)在字符串最后加一個(gè)結(jié)束符號(hào)’\0’。3.6寫(xiě)出以下程序運(yùn)行的結(jié)果:#include<>voidmain(){charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c%c”,c4,c5);}解:程序運(yùn)行的結(jié)果為:aabbccabcAN3.7要將“China”譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4個(gè)字母代替原來(lái)的字母。例如,字母“A”后面第4個(gè)字母是“E”,用“E”代替“A”。因此,“China”應(yīng)譯為“Glmre”。請(qǐng)編一程序,用賦初值的方法使c1,c2,c3,c4,c5這5個(gè)變量的值分別為’C’,’h’,’i’,’n’,’a’,經(jīng)過(guò)運(yùn)算,使c1,c2,c3,c4,c5的值分別變?yōu)椤疓’,’l’,’m’,’r’,’e’,并輸出。解:main(){charcl=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密碼是%c%c%c%c%c\n,c1,c2,c3,c4,c5);}運(yùn)行結(jié)果:密碼是Glmre3.8例能否改成如下:main(){intc1,c2;(原為charc1,c2)c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}解:可以。因?yàn)樵诳奢敵龅淖址秶鷥?nèi),用整型和用字符型作用相同。3.9求下面算術(shù)表達(dá)式的值。x+a%3*(int)(x+y)%2/4設(shè)x=,a=7,y=4..7(float)(a+b)/2+(int)x%(int)y設(shè)a=2,b=3,x=,y=解:(1)(2)3.10寫(xiě)出程序運(yùn)行的結(jié)果。main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}解:運(yùn)行結(jié)果為:9,11,9,103.11寫(xiě)出下面賦值的結(jié)果。格中寫(xiě)了數(shù)值的是要將它賦給其他類(lèi)型的變量,將所有空格填上賦值后的數(shù)值。int9942char‘d’ⅹunsignedint7665535floatlongint68解:int9910076536842-1char‘c’‘d’‘L’‘5’‘D’‘*’ⅹunsignedint9915535float42..000000longint9915535出下面表達(dá)式運(yùn)算后a的值,設(shè)原來(lái)a=12。設(shè)a和n都已定義為整型變量。(1)a+=a(2)a-=2(3)a*=2+3 (4)a/=a+a(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a解:(1)24(2)10(3)60(4)0(5)0(6)0第4章最簡(jiǎn)單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)若a=3,b=4,c=5,x=,y=,z=,u=51247,n=128765,c1=’a’,c2=’b’,想得到以下的輸出格式和結(jié)果,請(qǐng)寫(xiě)出程序(包括定義變量類(lèi)型和設(shè)計(jì)輸出)。要求輸出的結(jié)果如下:a=□3□□b=□4□□c=□5x=,y=,z=x+y=□□□y+z=□□z+x=u=□51247□□n=□□□128765c1=’a’□or□97(ASCII)c2=’b’□or□98(ASCII)解:main(){inta,b,c;longintu,n;floatx,y,z;charc1,c2;a=3;b=4;c=5;x=;y=;z=;u=51247;n=128765;c1=’a’;c2=’b’;printf(“\n”);printf(“a=%2d□□b=%2d□□c=%2d\n”,a,b,c);printf(“x=%.6f,y=%.6f,z=%.6f\n”,x,y,z);printf(“x+y=□%.2f□□y+z=%.2f□□z+x=%.2f\n”,x+y,y+z,z+x);printf(“u=%6ld□□n=%9ld\n”,u,n);printf(“c1=’%c’or%d(ASCII)\n”,c1,c1);printf(“c2=’%c’or%d(ASCII)\n”,c2,c2);}4.5請(qǐng)寫(xiě)出下面程序的輸出結(jié)果:main(){inta=5,b=7;floatx=,y=;charc=’A’;longn=1234567;unsignedu=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f,%-10f\n”,x,y);printf(“%,%,%4f,%4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%\n”,”COMPUTER”,”COMPUTER”);}運(yùn)行結(jié)果:5□7□□5□□7,□,□□□,□□,,,,+01,□□+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER,□□COM可以發(fā)現(xiàn),輸出數(shù)據(jù)中若有負(fù)號(hào)、e和小數(shù)點(diǎn),這些字符也占位。用下面的scanf函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=,y=,c1=’A’,c2=’a’。問(wèn)在鍵盤(pán)上如何輸入#include<>voidmain(){ inta,b; floatx,y; charc1,c2; scanf(“a=%db=%d”,&a,&b); scanf(“%f%e”,&x,&y); scanf(“%c%c”,&c1,&c2);}解:a=3□b=7□□□A□a下面的scanf函數(shù)輸入數(shù)據(jù),使a=10,b=20,c1=’A’,c2=’a’,x=,y=,z=,請(qǐng)問(wèn)在鍵盤(pán)上如何輸入數(shù)據(jù)scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);解:main(){inta,b;floatx,y,z;charc1,c2;scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);printf(“a=%d,b=%d,c1=%c,c2=%c,x=%,y=,z=\n”),a,b,c1,c2,x,y,z);}運(yùn)行情況如下:□□□10□□□–□,(此行為輸入的數(shù)據(jù),其中□為空格)a=10,b=20,c1=A,c2=a,x=,y=,z=(此行為輸出)說(shuō)明:按%5d格式的要求輸入a和b時(shí),要先鍵入三個(gè)空格,然后再鍵入10與20。%*f是用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng)于%*f的地方,隨意打入了一個(gè)數(shù),該值不會(huì)賦給任何變量。圓半徑r=,圓柱高h(yuǎn)=3,求圓周長(zhǎng),圓面積,圓球表面積,圓球體積,圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。請(qǐng)編程序。解:main(){floatpi,h,r,l,s,sq,vq,vz;pi=;printf(“請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):\n”);scanf(“%f,%f”,&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=*pi*r*r*r;vz=pi*r*r*h;printf(“圓周長(zhǎng)為:l=%\n”,l);printf(“圓面積為:s=%\n”,s);printf(“圓球表面積為:sq=%\n”,sq);printf(“圓球體積為:sv=%\n”,vq);printf(“圓柱體積為:sz=%\n”,vz);}運(yùn)行結(jié)果:請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):,3↙圓周長(zhǎng)為:l=圓面積為:s=圓球表面積為:sq=圓球體積為:sv=圓柱體積為:sz=輸入一個(gè)華氏溫度,要求輸出攝氏溫度,公式為C=(5/9)(F-32)輸出要有文字說(shuō)明,取2位小數(shù)。解:main(){floatc,f;printf(“請(qǐng)輸入一個(gè)華氏溫度:\n”);scanf(“%f”,&f);c=*(f-32);/*注意5和9要用實(shí)型表示,否則5/9的值為0*/printf(“攝氏溫度為:%\n”,c);};運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)華氏溫度:78↙攝氏溫度為:第5章選擇結(jié)構(gòu)程序設(shè)計(jì)語(yǔ)言中如何表示“真”和“假”系統(tǒng)如何判斷一個(gè)量的“真”和“假”解:設(shè)有一個(gè)邏輯表達(dá)式,若其結(jié)果為“真”,則以1表示;若其結(jié)果為“假”,則以0表示。但是判斷一個(gè)邏輯量的值時(shí),以0代表“真”,以非0代表“假”。例如3&&5的值為“真”,系統(tǒng)會(huì)給出3&&5的值為1。寫(xiě)出下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5。(1)a+b>c&&b==c(2)a||b+c&&b-c(3)!(a>b)&&!c||1(4)!(x=a)&&(y=b)&&0(5)!(a+b)+c-1&&b+c/2解:(1)0(2)1(3)1(4)0(5)1有3個(gè)整數(shù)a,b,c,由鍵盤(pán)輸入,輸出其中最大的數(shù)。解:方法一:程序如下:main(){inta,b,c;printf(“請(qǐng)輸入3個(gè)整數(shù):”);scanf(“%d,%d,%d”,&a,&b,&c);if(a<b)if(b<c)printf(“max=%d\n”,c);elseprintf(“max=%d\n”,b);elseif(a<c)printf(“max=%d\n”,c);elseprintf(“max=%d\n”,a);}運(yùn)行結(jié)果:請(qǐng)輸入3個(gè)整數(shù):12,34,9↙max=34方法二:使用條件表達(dá)式,可以使程序更簡(jiǎn)明,清晰。main(){inta,b,c,temp,max;printf(“請(qǐng)輸入3個(gè)整數(shù):”);scanf(“%d,%d,%d”,&a,&b,&c);temp=(a>b)a:b;/*將a和b中的大者存入temp中*/max=(temp>c)temp:c;/*將a和b中的大者與c比較,取最大者*/printf(“3個(gè)整數(shù)中最大數(shù)是%d\n”,max);}方法三:a>b(a>ca:c):(b>cb:c)運(yùn)行結(jié)果:請(qǐng)輸入3個(gè)整數(shù):12,34,9↙3個(gè)整數(shù)的最大數(shù)是34。有一函數(shù):寫(xiě)一程序,輸入x值,輸出y值。解:程序如下main(){intx,y;printf(“輸入x:”);scanf(“%d”,&x);if(x<1)/*x<1*/{y=x;printf(“x=%d3d,y=x=%d\n”,x,y);}elseif(x<10)/*1≤x<10*/{y=2*x-1;printf(“x=%3d,y=2*x-1=%d\n”,x,y);}else/*x≥10*/{y=3*x-11;printf(“x=%3d,y=3*x-11=%d\n”,x,y);}}運(yùn)行結(jié)果:輸入x:4↙x=4,y=2*x-1=7輸入x:-1↙x=-1,y=x=-1輸入x:20↙x=20,y=3*x-11=49給出一百分制成績(jī),要求輸出成績(jī)等級(jí)’A’、’B’、’C’、’D’、’E’。90分以上為’A’,80~89分為’B’,70~79分為’C’,60~69分為’D’,60分以下為’E’。解:程序如下#include""voidmain(){floatscore;chargrade;printf("請(qǐng)輸入學(xué)生成績(jī):");scanf("%f",&score);while(score>100||score<0){printf("\n輸入有誤,請(qǐng)重輸");scanf("%f",&score);}switch((int)(score/10)){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;case5:case4:case3:case2:case1:case0:grade='E';}printf("\n成績(jī)是%,相應(yīng)的等級(jí)是%c。\n",score,grade);}給定一個(gè)不多于5位的正整數(shù),要求:①求它是幾位數(shù);②分別打印出每一位數(shù)字;③按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。解:main(){longintnum;intindiv,ten,hundred,thousand,ten_thousand,place;/*分別代表個(gè)位,十位,百位,千位,萬(wàn)位和位數(shù)*/printf(“請(qǐng)輸入一個(gè)整數(shù)(0~99999):”);scanf(“%ld”,&num);if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=1;printf(“place=%d\n”,place);printf(“每位數(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);switch(place){case5: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;case4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);printf(“\n反序數(shù)字為:”);printf(“%d%d%d%d\n”,indiv,ten,hundred,thousand);break;case3:printf(“%d,%d,%d”,hundred,ten,indiv);printf(“\n反序數(shù)字為:”);printf(“%d%d%d\n”,indiv,ten,hundred);break;case2:printf(“%d,%d”,ten,indiv);printf(“\n反序數(shù)字為:”);printf(“%d%d\n”,indiv,ten);break;case1:printf(“%d”,indiv);printf(“\n反序數(shù)字為:”);printf(“%d\n”,indiv);break;}}運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)整數(shù)(0~99999):98765↙位數(shù)=5每位數(shù)字為:9,8,7,6,5反序數(shù)字為:56789企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)I低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元(100000<I≤200000)時(shí),其中10萬(wàn)元按10%提成,高于10萬(wàn)元的部分,可提成%;200000

<I≤400000時(shí),其中20萬(wàn)元仍按上述辦法提成(下同),高于20萬(wàn)元的部分按5%提成;400000<I≤600000時(shí),高于40萬(wàn)元的部分按3%提成;600000<I≤1000000時(shí),高于60萬(wàn)的部分按%提成;I>1000000時(shí),超過(guò)100萬(wàn)的部分按1%提成。從鍵盤(pán)輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)。要求:(1)用if語(yǔ)句編程序;(2)用switch語(yǔ)句編程序。解:計(jì)算利潤(rùn)時(shí),要特別注意不同利潤(rùn)的不同提成比例。例如,利潤(rùn)為15萬(wàn)元,其中由10萬(wàn)元按10%的比例提成,另外5萬(wàn)元?jiǎng)t按%提成。用if語(yǔ)句編程序,main(){longi;floatbonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*;/*利潤(rùn)為10萬(wàn)元時(shí)的獎(jiǎng)金*/bon2=bon1+100000*/*利潤(rùn)為20萬(wàn)元時(shí)的獎(jiǎng)金*/bon4=bon2+100000*/*利潤(rùn)為40萬(wàn)元時(shí)的獎(jiǎng)金*/bon6=bon4+100000*/*利潤(rùn)為60萬(wàn)元時(shí)的獎(jiǎng)金*/bon10=bon6+400000*;/*利潤(rùn)為100萬(wàn)元時(shí)的獎(jiǎng)金*/printf(“請(qǐng)輸入利潤(rùn)i:”);scanf(“%ld”,&i);if(i<=100000)bonus=i*;/*利潤(rùn)在10萬(wàn)元以?xún)?nèi)按提成獎(jiǎng)金*/elseif(i<=200000)bonus=bon1+(i-100000)*/*利潤(rùn)在10萬(wàn)至20萬(wàn)元時(shí)的獎(jiǎng)金*/elseif(i<=400000)bonus=bon2+(i-200000)*/*利潤(rùn)在20萬(wàn)至40萬(wàn)元

溫馨提示

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

評(píng)論

0/150

提交評(píng)論