版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄CPROGRAMMINGLANGUAGE
第
戴
—導(dǎo)者i
第2*
類型、運(yùn)算符與表達(dá)式27
附
3學(xué)
控制施:37
第
4童
函數(shù)與程序結(jié)構(gòu).
第5
章指針與數(shù)蛆61
第6
章結(jié)構(gòu)
第799
章
電8輸入與輸出1H
:
UNK系統(tǒng)接口123
、*?sdwt
導(dǎo)言
2*?*t
練習(xí)1-1(《C程序設(shè)計(jì)語言(第2版?新版)》即教材第3頁)
在你自己的系統(tǒng)中運(yùn)行"hello,world”程序,再有意去掉程序中的部分內(nèi)容,看看
會(huì)得到什么出錯(cuò)信息。
"include<stdio.h>
maxnC>
printf(Mhello,world");
>
上面這個(gè)例子省略了換行符(\n),這將使光標(biāo)停留在輸出信息的末尾。
/include<stdio.h>
main()
(
printf(uhe1io>world'n"】
>
第二個(gè)例子省略了print*)后面的分號(hào)“C程序的語句必須以分號(hào)結(jié)尾(參見教材第5
頁)。因此,對于本例,編譯器將識(shí)別出少了一個(gè)分號(hào)并給出相應(yīng)的出借信息C
/includetdio.h>
mainO
\
M
printfChei1o7wor1d\n*);
)
在第三個(gè)例子里,\n后面的雙引號(hào)”被錯(cuò)寫為單引號(hào),于是,這個(gè)單引號(hào)及其后面的右
括號(hào)和分號(hào)將被看做是整個(gè)輸出字符串的一部分:編譯器將把這種情況視為一個(gè)錯(cuò)誤,會(huì)報(bào)
告說缺失了一個(gè)雙引號(hào);在右花括號(hào)前缺失了一個(gè)右圓括號(hào);字符串過長;字符串中帶有換
行符C
練習(xí)1-2(教材第3頁)
做個(gè)實(shí)驗(yàn),當(dāng)printf函數(shù)的參數(shù)字符串中包含\c(其中c是上面的轉(zhuǎn)義字符序列中未曾
列出的某一個(gè)字符)時(shí),觀察一下會(huì)出現(xiàn)什么情況?
2第
?include<atdio.h>
(noin(>
(,
MM
printf(hel1oTworld\y);
printf(??hello,world\70):
M
printf(hel1otwor;
)
參考手冊(參見教材第169頁)中提到:“如果'后面緊跟的字符不在以上指定的字符中,
則行為是未定義的?!?/p>
上面這段代碼的執(zhí)行結(jié)果與具體的編譯器相關(guān)。一種可能出現(xiàn)的結(jié)果是:
hello,woridyhel1o,world<BELL>hellotworld7
其中,<BELL>是ASCII值等于7的字符所產(chǎn)生的一聲短蜂鳴。在'的后面,可以用最多3個(gè)
八進(jìn)制數(shù)字(參見教材第29頁)來代表一個(gè)字符,而巾在ASCII字符集中代表的是一聲短蜂
鳴。
練習(xí)1-3(教材第8頁)
請修改溫度轉(zhuǎn)換程序,使之能在轉(zhuǎn)換表的頂部打印一個(gè)標(biāo)題。
/include<stdio?h>
/<printFahrenheit*Celsiustable
forfahr,0.20>???,300;floating-pointversion?/
ffiainC)
(
floatfahr,celalua;
intlower,uppertstep;
lower?0;/?lowerlimitoftemperaturetable*/
upper?300;/?upperlimit?/
step-20;八stepsize■/
printf<uFahrCels1uaXn1*);
fabr,lower;
while(fahr<-upper!<
celaiua■45.0/9.0)?(fahr-32-0):
printfCHX3.OfX6,If\nM,fahr,celsms);
fahr,fahr?step;
在循環(huán)語句之前增加的printf「FahrCelsius'n");語句將在溫度轉(zhuǎn)換表的頂部產(chǎn)
生一個(gè)表頭。為了讓輸出內(nèi)容與這個(gè)表頭對齊,我們還在%3.Of和%6.If之間增加了兩個(gè)空
格。上面這個(gè)程序中的其余語句與教材第6頁中給出的代碼完全一致。
練習(xí)1-4(教材第8頁)
編寫一個(gè)程序打印攝氏溫度轉(zhuǎn)換為相應(yīng)華氏溫度的轉(zhuǎn)換表。
^include<9tdio.h>
/?printCelaius-Fehrenheittable
t
forCelsius=0,20,...,300;floating-pointversion</
main()
|
floatfahr>Celsius;
intlower,upper)step;
lower、0;/?iowerlimitoftemperataretab1e?/
upper、300;/*upperlimit?/
stepu20;/*stepsize?/
printf<HCelsiusF己hr\n”);
celsiu5、lower;
whileCce1sius<=upper){
febr*(9.0*celsiu5)/5,0?32.0;
printf(UX3.Of%G.If\n'\celsian>fahr>;
celsius?Celsius+5tep;
>
}
本程序?qū)⑤敵鲆粋€(gè)攝氏溫度(0~300)到華氏溫度的轉(zhuǎn)換表,華氏溫度是用以下語句計(jì)
算得到的:
fdhr?(9r0?ceisius)/5-0?32?0
本題的解題思路與打印華氏溫度到攝氏溫度的對照表程序(見教材第6頁)是相同的,整
型變量lows、upper.step分別對應(yīng)于變量celsius的下限、上限、步長,程序先把變
量ceLsius初始化為它的下限,再在while循環(huán)中把對應(yīng)的華氏溫度計(jì)算出來。然后,程序
打印出這組攝氏溫度和華氏溫度的值,并按步長遞增變量Celsius的值,while循環(huán)將一直
執(zhí)行直到變量Celsius超出其上限為止。
練習(xí)1-5(教材第9頁)
修改溫度轉(zhuǎn)換程序,要求以逆序(即按照從3。0度遞減到。度的順序)打印溫度轉(zhuǎn)換表“
ndude<5tdio.h>
/?printFahrenheit-Cel3iustableinreverseorder?
moin<)
<
intfahr;
for<fahr*300;fahr>?0;fahr"fahr-20)
printfLZ3d%6.if\n"ifahr,<S.0/9,0>?Cfehr-32));
》
惟一的修改之處是:
forCfahr*300;fahr>?0;fahr-fahr-20)
這條for語句的第一部分:
fehr■300
負(fù)責(zé)把華氏溫度變量(fahr)初始化為它的上限;for語句的第二部分(即for循環(huán)的控制
條件):
4第1
fehr?=0
負(fù)責(zé)檢查變量fahr是否大于或等于它的下限——只要這個(gè)檢查的結(jié)果為真,for語句就將繼
續(xù)循環(huán)執(zhí)行;for語句的第三部分(即步長表達(dá)式):
fehr,fahr?20
負(fù)責(zé)對變量fahr按步長進(jìn)行遞減操作。
練習(xí)1-6(教材第11頁)
驗(yàn)證布爾表達(dá)式getchar()!=EOF的取值是0還是1。
■include<gtdio-h>
mein()
kntc;
while(c?getchar(yI-EOF)
HM
printf(Xd\ntc);
printf(MXd-etEOF\nM?c〉i
>
根據(jù)教材第11頁的論述,表達(dá)式
c■getcherC!-EOF
相當(dāng)于
c"(getcher()!"EOF>
本程序從系統(tǒng)的標(biāo)準(zhǔn)輸入讀取字符并使用了上面的表達(dá)式。當(dāng)有字符可讀時(shí),getcharS不
會(huì)返回文件結(jié)束符(即EOF),所以
getchart)!"EOF
的取值為真,變量c將被賦值為1。當(dāng)程序遇到文件結(jié)束符時(shí),表達(dá)式取值為假,此時(shí),變量c
將被賦值為0,程序?qū)⒔Y(jié)束運(yùn)行。
練習(xí)1-7(教材第11頁)
請編寫一個(gè)打印EOF值的程序。
/include<?tdlo*h>
main()
(
prlntf(MEOFisXd'n",EOF);
}
符號(hào)常量EOF是在頭文件vstdio.h>中定義的。在上面這個(gè)程序中,printf()語句中
雙引號(hào)外的EOF將被替換為頭文件vstdio.h>中緊跟在
/defineEOF
之后的文本。在我們的系統(tǒng)中,EOF被定義為-1,但在其他系統(tǒng)中,EOF可能被定義為其他
導(dǎo)t5
的值c這正是使用EOF等標(biāo)準(zhǔn)符號(hào)常量能夠增加程序可移植性的原因所在
練習(xí)1-8(教材第13頁)
編寫一個(gè)統(tǒng)計(jì)空格、制表符和換行符個(gè)數(shù)的程序.
,】nc1ude<stdio.h>
/?countblanks,tabs,andnew]ines./
main<)
《
intc,nb,nt,nl;
nb-0;八numberofblanks?/
nt?0;八numberoftabs?/
nl■0;/*numberof1inea*/
while((c-getcharO)!-EOF){
if<c,??
??nb;
if<c,■'\t')
??nt;
if<c??*\n*)
?*nl;
>
printf(MXdXd%八力”,nb?nt,nl);
)
整型變量nbnt和nl分別用來統(tǒng)計(jì)空格、制表符和換行符的個(gè)數(shù)。這3個(gè)變量的初值都是仇
在while循環(huán)的循環(huán)體內(nèi),出現(xiàn)在輸入中的每一個(gè)空格、制表符和換行符都將被記錄,
while循環(huán)中的3條if語句在每次循環(huán)中都將被執(zhí)行。如果程序讀到的字符不是空格、制表
符或換行符,就不執(zhí)行任何操作,如果程序讀到的字符是這三個(gè)符號(hào)之一,就對相應(yīng)的計(jì)數(shù)
器加1。當(dāng)while循環(huán)終止(即getchar返回EOF)B寸,本程序?qū)芽崭?、制表符和換行符的
統(tǒng)計(jì)結(jié)果打印出來.
對if-else語句的介紹最早出現(xiàn)于教材第14頁,下面是使用了這一語法結(jié)構(gòu)的實(shí)現(xiàn)方
法:
nclude<stdio.h>
/?countblanks,tabs,andnewlines?/
main(>
<
intc,nbTnt>n1;
nb,0>/?numberofblanks?/
nt*0;/?numberoftabs?/
n1?0;/?numberofnewlines?/
whlie((c■getchar())!?E0F>
if<c.?
??nb;
el^eif<c=='\t')
??nt;
elseif(c-=/O
??nl:
6第I章
printf(uXdXdXd\nM>nb?nt?nl);
>
練習(xí)1-9(教材第13頁)
編寫一個(gè)將輸入復(fù)制到輸出的程序,并將其中連續(xù)的多個(gè)空格用一個(gè)空格代替。
?include<std*o.h>
/defineNONBLANK'a'
/*replacestringofblankswithasinglebl&nfc?/
main()
intc?lastc>
lastcuNONBLANK;
while((c-geteharC))f?EOF){
ifCc!?'')
putchar(c);
if<c--'
if(lestc!"'9)
putcharCcl;
leatc?c;
}
?
整型變量c負(fù)責(zé)記錄當(dāng)前輸入字符的ASCII值,而整型變量lastc則記錄著前一個(gè)輸人字
符的ASCII值。符號(hào)常量NONBLANK負(fù)責(zé)把變量lastc初始化為一個(gè)任意的非空格字符。
while循環(huán)體中的第一條if語句輸出非空格字符;第二條if語句處理空格字符,而第三
條if語句用于檢查當(dāng)前的空格字符究竟是一個(gè)單個(gè)的空格符還是一串空格中的第一個(gè)空格。
最后,對變量lastc進(jìn)行刷新。以上操作將一直重復(fù)到while循環(huán)終止(即getchar返回
EOF)為止。
對if-else語句的介紹最早出現(xiàn)于教材第14頁,下面是使用了這一語法結(jié)構(gòu)的實(shí)現(xiàn)方法:
<IncludeCstdio,h>
/defineNONBLANK
/#replacestringofblankswithas1ngleblanlc■'
main<)
<
intc,lastc;
lastc?NONBLANK;
while(<c?getcharf))I?EOF)(
if<c!?<^)
putchartc);
elseif(lastc,??9)
putcharCc);
lastc■c;
導(dǎo)言7
對邏輯或(OR)操作符II的介紹也最早出現(xiàn)于教材第14頁,F(xiàn)面是使用「這一知識(shí)的實(shí)
現(xiàn)方法:
#1nc1ude<5tdio.h>
#defmeNONBLANK‘3''
/■replacestringofblankswithssingleblank
ma1n(>
<
intc,lastc;
lastc■NONBLANK;
while<(c■getchar()>EOF)<
if(c?-'?:Ilastc!”'
putchar<c);
lastc?c;
練習(xí)1-10(教材第13頁)
編寫一個(gè)將輸入復(fù)制到輸出的程序,并將其中的制表符替換為\j把回退符替換為\b,
把反斜杠替換為\\,這樣可以將制表符和回退符以可見的方式顯示出來。
?include<stdio.h>
/?replacetabsandbackspaceswithvisiblecharacters?/
ma1n()
<
mtc;
while<Cc?getcharC))!?EOF)<
if€c??
printf(??Wf1);
if(c--'\b'】
printf
if<C?""'中
pr
if<c?-''b')
if<c!**\t
ifCc?-?、、?)
putchar(c);
?
)
輸入的字符可以是一個(gè)制表符、一個(gè)回退符、一個(gè)反斜杠或者其他任何字符。如果輸入
是一個(gè)制表符,我們就把它替換為\t;如果輸入是一個(gè)回退符,我們就把它替換為\b;如果
輸入是一個(gè)反斜杠,我們就把它替換為\\;其他字符則按原樣輸出。
在C語言中,反斜杠是用飛「來表示的。因此,如果我們想輸出兩個(gè)反斜杠,就必須把字
符串"\\\\"傳遞給printf函數(shù)-
對if-else語句的介紹最早出現(xiàn)于教材第14頁,下面是使用了這一語法結(jié)構(gòu)的實(shí)現(xiàn)方
法:
/include<stdio.h>
/?replacetabsendbadspaceswithvisiblecheroctens?/
maxn()
{
intc;
while(<c■getcharO)!?EDF)
if<c--
printf
elseifCc
printf
elseif(c?=
else
putchar(c);
練習(xí)1-11(教材第15頁)
你準(zhǔn)備如何測試單詞計(jì)數(shù)程序?如果程序中存在某種錯(cuò)誤,那么什么樣的物入最可能發(fā)
現(xiàn)這類錯(cuò)誤呢?
單詞計(jì)數(shù)程序的測試工作首先要從沒有任何輸入的情況開始。此時(shí),該程序的輸出結(jié)果
應(yīng)該是“000”,即零行、零單詞、零字符。
接下來測試輸入單字符單詞的情況。此時(shí),該程序的輸出結(jié)果應(yīng)該是“1I2”,郎一行、
一個(gè)單詞、兩個(gè)字符(一個(gè)字母加上一個(gè)換行符)。
再測試一個(gè)由兩個(gè)字符組成的單詞。此時(shí),該程序的輸出結(jié)果應(yīng)該是“113”,即一行、
一個(gè)單詞、三個(gè)字符(二個(gè)字母加上一個(gè)換行符)。
然后,再測試兩個(gè)單字符單詞的情況。首先,兩個(gè)單詞出現(xiàn)在同一行,此時(shí)的輸出結(jié)果
應(yīng)該是“124”;然后,兩個(gè)單詞各占一行,此時(shí)的輸出結(jié)果應(yīng)該是“224”。
那些滿足邊界條件的輸入情況最有助于發(fā)現(xiàn)單詞計(jì)數(shù)程序中的錯(cuò)誤。這些邊界條件包括:
——沒有輸入
——沒有單詞(只有換行符)
——沒有單詞(只有空格、制表符和換行符)
——每個(gè)單詞各占一行的情況(沒有空格和制表符)
——單詞出現(xiàn)于文本行行首的情況
——單詞出現(xiàn)于一串空格之后的情況
練習(xí)1-12(教材第15頁)
編寫一個(gè)程序,以每行一個(gè)單詞的形式打印其輸入。
*include<atdlo.h>
*defineIN1/?insideaword?/
Hi
t9
?defineOUT0/?outsideaword
/<printInputonewordperline
main<)
<
intc,state;
state-OUT;
while<(c-getcharO)!?EDF)<
if<c?■*■?Ic,■'\n’3;C7'){
1f(state■■IH><
putcharC*\n*);/?finishtheword?/
state■OUT;
>
>el^eif(stateOUT)<
state■IN;/?beginn1ngofword?/
putchar<c);
>e)9e/?insideaword?/
putcharCc>;
整型變量state是一個(gè)布爾量,用于記錄程序的處理過程是否正處于某個(gè)單詞的內(nèi)部。
在程序剛開始運(yùn)行的時(shí)候,變量state將被初始化為OUT,表明尚未處理任何數(shù)據(jù)。
第一條if語句
ifqc??''IIc-?'\n'IIc--'\t')
判斷變量c是否是一個(gè)單詞分隔符。如果是,則第二條if語句
ifCatate**IN)
將判斷這個(gè)單詞分隔符是否表示某個(gè)單詞結(jié)束。如果是,就輸出一個(gè)換行符并修改變量
state的值;如果不是,則不進(jìn)行任何操作。
如果c不是一個(gè)單詞分隔符,那么,它將或者是某單詞的第一個(gè)字符、或者是一個(gè)單詞中
除第一個(gè)字符之外的其他字符。對于第一種情況(c是某單詞的第一個(gè)字符〉,程序?qū)⑿薷淖?/p>
量state的值并輸出這個(gè)字符;時(shí)于第二種情況(c是某個(gè)單詞中的其他字符),程序直接輸
出這個(gè)字符。
練習(xí)1-13(教材第17頁)
編寫一個(gè)程序,打印輸入中單詞長度的直方圖。水平方向的直方圖比枝容易繪制,垂直
方向的直方圖則要困難些。
nclude<atdlo.h>
/defineMAXHISTIS/?maxlengthofhistogram*/
*def1neMAXWORD11/?maxlengthofaword■/
*defmeJN1/?insideaword*/
*defineOUT0/*outsideaword?/
/#pr1nthorizonta1histogram?/
main<)
10第1步
intc>11nc,state;
intlen;/*lengthofeachbar
intmaxvalue;/?maximumvalueforwl(]
intovflow;/?numberofoverflowwords
intwl[MAXNORDJ;/#wordlengthcounters
stete?OUT;
nc■0;/?numberofcharainaword*/
ovflow?0;/<numberofwords>?MAXWORD*/
for<i?0;1<MAXWORD;
wl[1]-0;
while(Cc-geteharO>!-EOF){
ifCc■"''I:c-*/\n/\\c*?/\t*><
state-OUT;
if<nc>0>
1/<nc<MAXWORD)
**wl(nc];
else
??□vflow;
nc?0;
>elseif(atate??OUT)<
state■IN;
nc,1;/?beginningofanewword■/
>else
?*nc;/*insideaword?/
}
maxvalue-0;
for(i-1;i<MAXNORD:
if(wlIi1>maxvalue)
mexvAlue?wl〔U;
for<1-1;i<MAXWORD;?+!)<
prirtf<HXSd-XSd:",i,wHx));
if<wl[13>0)<
if(<len?wl(il?MAXH1ST/maxvalue)<*0>
len-1;
}else
len-0;
while<1en>0>{
putchar
--1?力;
>
putchart*\n*);
if(ovf1ow>0)
printf<uThereareXdwords>*ovflow>MAXWORD);
空格、換行符或制表符標(biāo)志著單詞的結(jié)束。如果有一個(gè)單詞(口c>0)且它的長度小于允
許的單詞最大長度(nc<MAXWORD),這個(gè)程序?qū)ο鄳?yīng)的單詞長度計(jì)數(shù)器加1(++皿[nc])0
如果單詞的長度超出了允許的單詞最大長度(nc>=MAXWORD),這個(gè)程序?qū)ψ兞縪vflow
加1以記錄長度大于或等于MAXWORD的單洞的個(gè)數(shù)。
在讀入全部單詞之后,我們的程序?qū)⒄页鰯?shù)組w1中的最大值(maxvalue)n
言11
變量len是根據(jù)MAXHIST和maxvalue的值計(jì)算得出的wl[i)所對應(yīng)的直方圖長度。
如果wl[i]大于零,就至少要打印出一個(gè)星號(hào)。
/include<5tdio?h>
?/
/def1neMAXHIST15/?maxlengthofhistogram
/def1neMAXUI0RD11/?maxlengthofaword*/
/defineIN1/?insideaword*/
*defineOUT0/?out9ideeword*/
/*printverticalhi9togram■/
meinO
intmaxvalue;/?maximumvalueforwlC]*/
irtQVf10W;/?numberofoverflowwords?/
irtwKMAXWORDJ;/?wordlengthcounters*/
state■OUT;
nc益°;/?numberofcbarsinwward《
ovflow?05/?numberofwords)■HAXWORD<
forCi*0;i<MAXWDRD;
wl[1]-0;
while(Cc-getcher())!?EOFI《
if(c?-**Mc??,\n?1tc<
state-OUT;
ifCnc>0>
if(nc<MAXH0RD>
??3line】;
else
?*ovflow;
nc?0;
>elseif(state?■DUT><
state■IN;
力c?1;/?beginningofanewword?/
}else
??nc;/?insideaword
}
maxvalue■0;
for(i>1;1<MAXWORD;**i)
if(wltiJ>maxvalue)
mexvalue■wl(i];
forCi-MAXHIST;i>0;-7)《
for(j-1;j<MAXNORD;■))
ifCwHj]?MAXHIST/maxvalue>>i)
print””?
else
printfCif”;
putchart
>
for(1-1;1<MAXW口RD;**i)
printf<H%4dM,i);
putebor<'\n'>;
for<1-1;1<MAXUIORD;**i)
H
printf(X4d“,uHi])s
12第[章
putcharC);
if(ovf1ow>0)
prxntf(MThereare%dwords>*ovflow,MAXWORD);
>
這個(gè)實(shí)現(xiàn)方法將輸出一個(gè)垂直方向的直方圖。這個(gè)程序從開始直到求值maxvalue的過程與
前一個(gè)程序完全相同。然后,這個(gè)程序需要計(jì)算數(shù)組wl中的每一個(gè)元素并判斷是否需要在數(shù)
組元素的對應(yīng)位置上打印一個(gè)星號(hào)。這一判斷過程必不可少,因?yàn)榇怪狈较蛑狈綀D的所有直
方條是同步打印的。最后的兩個(gè)for循環(huán)用來輸出數(shù)組wl各元索的下標(biāo)和取值。
練習(xí)1-14(教材第17頁)
編寫一個(gè)程序,打聿輸入中各個(gè)字符出現(xiàn)頻度的直方圖。
^include<stdio.h>
*include<ctype.h>
/defineMAXHIST15/?maxlengthofhistogram
?defineMAXCHAR128/*maxdifferentcharacters
/?printhorizontalhlstoqramfreq,ofdifferentcherecters?/
fliain<)
<
Intc,i;
mtlen;/?lengthofeachbar*/
intmaxvalue;/?maximumvalueforcc(]*/
xntccCMAXCHAR];八charactercounters?/
for<i-0;i<MAXCHAR;??)1)
cc[iJ?0;
while€Cc?getcharC))1?EOF>
ifCc<MAXCHAR)
**cc[c);
maxvalue?0;
for(i?1;j<MAXCHAR;
xf<cc£x]>majtvalue)
maxvaiue*cc(1];
for<i-1;i<MAXCHAR;?*!)<
if(isprintC1))
printfCaXSd-%c-15d:M,i,i,cell]);
else
printf(MXSd--XSd:1>cell】);
ifCccCiJ>0){
if((1en?ccCi]?M科XHIST/maxve1ue><-0)
1en?1;
>else
len■0;
while<len>0){
putchar(,?■】;
--leu;
putcharC,\nr?
導(dǎo)言13
這個(gè)程序與練習(xí)1-13中的水平直方圖輸出程序很相似,但我們現(xiàn)在統(tǒng)計(jì)的是各個(gè)字符的
出現(xiàn)頻度。程序中使用了一個(gè)元素個(gè)數(shù)等于MAXCHAR的字符計(jì)數(shù)器數(shù)組,如果我們使用的字
符集中存在值大于或等于MAXCHAR的字符,則這些字符將被忽略。另一個(gè)區(qū)別是我們使用了
一個(gè)宏來判斷某個(gè)字符是否是一個(gè)可顯示字符。關(guān)于包含的頭文件VCtype.h>的討論出現(xiàn)于
教材第34頁,對isprint的介紹則出現(xiàn)于教材第227頁(附錄B)。
練習(xí)1-15(教材第19頁)
重新編寫L2節(jié)中的溫度轉(zhuǎn)換程序,使用函數(shù)實(shí)現(xiàn)溫度轉(zhuǎn)換計(jì)算。
/include<5tdio.h>
floatcelsius<float^ahr);
/<printFahrenheit-Celsiustable
forfahr-0,20,...,300;floating-pointversion,/
main()
(
floatfahr;
mt1ower,upper,step;
l0wer?0;/?lowerlimitoftemperaturetable?/
upper?300;/?upper1imit"
step-20;/?stepsize?/
fahr■1ower;
whi1e(fahr<*upper)<
,eM
printfC%3.0fX€.1f\ntfahr>ce1siustfahr));
fahr-fahr?step;
}
>
/?celsmstconvertfshrintoce19ius',
floatcelsiuaCflootfahr)
<
return(5.0/9.0)?<fahr-32<0}j
}
我們采用一個(gè)函數(shù)把華氏溫度轉(zhuǎn)換為攝氏溫度。這個(gè)函數(shù)名為celsius,它的輸入?yún)?shù)
是一個(gè)浮點(diǎn)數(shù),返回值也是一個(gè)浮點(diǎn)數(shù)。這個(gè)函數(shù)將通過return語句返回表達(dá)式的值。有時(shí),
表達(dá)式是一個(gè)簡單變量,例如power函數(shù)(參見教材第19頁);但有時(shí)我們也會(huì)使用一個(gè)比
較復(fù)雜的表達(dá)式,例如這里的Celsius函數(shù),因?yàn)檫@樣做可以使所有工作都在return語句
中完成。
因?yàn)楹瘮?shù)Celsius的輸入?yún)?shù)是一個(gè)浮點(diǎn)數(shù),它的返回值也是一個(gè)浮點(diǎn)數(shù),所以我們把
它聲明為如下的形式:.
fleetcelslusCfloetfahr>;
練習(xí)1-16(教材第22頁)
修改打印最長文本行的程序的主程序main,使之可以打印任意長度的輸入行的長度,并
14
盡可能多地打印文本。
/inc1ude<stdio.h>
*defineMAXLINE1000八maximuminput1inesite
intget1ineCcher1ine[]tintmax]1ne);
voidcopyCcharto[1vcharfrom[));
/*printlongestinputline?/
main()
<
intlen;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年天津一百中高考語文質(zhì)檢試卷(一)
- 2023年全斷面掘進(jìn)機(jī)項(xiàng)目融資計(jì)劃書
- 2023年三醋酸纖維素膜項(xiàng)目融資計(jì)劃書
- 《社會(huì)文化》課件
- 電力及電機(jī)拖動(dòng)習(xí)題庫+參考答案
- 養(yǎng)老院老人生活設(shè)施維修人員考核獎(jiǎng)懲制度
- 養(yǎng)老院老人護(hù)理評(píng)估制度
- 2024年大型企業(yè)第三方社保代繳與員工福利管理服務(wù)協(xié)議3篇
- 施工房屋漏水免責(zé)協(xié)議書(2篇)
- 2025年駕考駕考貨運(yùn)道路從業(yè)資格證
- DTU配網(wǎng)自動(dòng)化測控終端精講
- 道路運(yùn)輸達(dá)標(biāo)車輛客車貨車核查記錄表
- 兒童詩兒童詩的欣賞和創(chuàng)作(課件)
- 人力資源管理工作思路(共3頁)
- 五筆常用字根表3746
- 新生兒肺氣漏
- 氣管切開(一次性氣切導(dǎo)管)護(hù)理評(píng)分標(biāo)準(zhǔn)
- 保安工作日志表
- 姜太公釣魚的歷史故事
- 數(shù)控車床實(shí)訓(xùn)圖紙國際象棋圖紙全套
- 電子政務(wù)概論教案
評(píng)論
0/150
提交評(píng)論