版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.5格式輸入輸出4.5.1printf()函數(shù)(格式輸出函數(shù))printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類(lèi)型的數(shù)據(jù)。
[例L4.4.c]已知圓半徑radius=1.5,求圓周長(zhǎng)和圓面積。
main()
{floatradius,length,area,pi=3.1415926;
radius=1.5;
length=2*pi*radius; /*求圓周長(zhǎng)*/
area=pi*radius*radius; /*求圓面積*/
printf(“radius=%f\n”,radius); /*輸出圓半徑*/
printf(“l(fā)ength=%7.2f,area=%7.2f\n”,length,area); /*輸出圓周長(zhǎng)、面積*/
}
演示程序運(yùn)行結(jié)果如下:
radius=1.500000length=9.42,area=7.07 1.printf()函數(shù)的一般格式:printf(“格式控制”[,輸出項(xiàng)表]);(1).格式控制(轉(zhuǎn)換控制字符串),可以包含三種字符:
a、格式說(shuō)明。一般形式如下:%[格式字符]
b、轉(zhuǎn)義字符(見(jiàn)p48)c、普通字符──除格式指示符和轉(zhuǎn)義字符之外的其它字符。格式字符串中的普通字符,原樣輸出。例如,printf(“radius=%f\n”,radius);中的“radius=”是普通字符。(2).輸出項(xiàng)表可選項(xiàng)。如果要輸出的數(shù)據(jù)不只1個(gè),相鄰2個(gè)之間用逗號(hào)分開(kāi)。例
printf("Iamastudent.\n"); printf("%d",3+2);
printf("a=%fb=%5d\n",a,a+3); 注意:“格式字符串”中的格式指示符,必須與“輸出項(xiàng)表”中、輸出項(xiàng)的數(shù)據(jù)類(lèi)型一致,否則會(huì)引起輸出錯(cuò)誤。輸出格式說(shuō)明符整型數(shù)據(jù)
%d以有符號(hào)十進(jìn)制形式輸出整型數(shù)%o以無(wú)符號(hào)八進(jìn)制形式輸出整型數(shù)%x以無(wú)符號(hào)十六進(jìn)制形式輸出整型數(shù)%u以無(wú)符號(hào)十進(jìn)制形式輸出整型數(shù)實(shí)型數(shù)據(jù)
%f以小數(shù)形式輸出實(shí)型數(shù)%e以指數(shù)形式輸出實(shí)型數(shù)%g按數(shù)值寬度最小的形式輸出實(shí)型數(shù)字符型數(shù)據(jù)
%c輸出一個(gè)字符%s輸出字符串其他
%%輸出字符%本身在%和格式符之間可以使用附加說(shuō)明符2格式字符附加格式說(shuō)明符l輸出長(zhǎng)整型數(shù)(只可與d、o、x、u結(jié)合用)m指定數(shù)據(jù)輸出的寬度(即域?qū)挘?n對(duì)實(shí)型數(shù)據(jù),指定輸出n位小數(shù);對(duì)字符串,指定左端截取n個(gè)字符輸出+使輸出的數(shù)值數(shù)據(jù)無(wú)論正負(fù)都帶符號(hào)輸出-使數(shù)據(jù)在輸出域內(nèi)按左對(duì)齊方式輸出整數(shù)位數(shù)+小數(shù)位數(shù)+小數(shù)點(diǎn)自動(dòng)對(duì)n位后小數(shù)四舍五入
例如:%ld——輸出十進(jìn)制長(zhǎng)整型數(shù)%m.nf——右對(duì)齊,m位域?qū)?,n位小數(shù)或n個(gè)字符%-m.nf——左對(duì)齊
輸出不同類(lèi)型的數(shù)據(jù),要使用不同的格式字符(類(lèi)型轉(zhuǎn)換字符)。
(1)類(lèi)型轉(zhuǎn)換字符d──以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。%d:實(shí)際長(zhǎng)度輸出%md:指定的輸出字段的寬度%ld長(zhǎng)整型數(shù)據(jù)對(duì)于整數(shù),還可用無(wú)符號(hào)形式的八進(jìn)制(%o(小寫(xiě)字母o))和十六進(jìn)制(x/X);對(duì)于unsigned型數(shù)據(jù),用%u格式符。所謂無(wú)符號(hào)形式是指,不論正數(shù)還是負(fù)數(shù),系統(tǒng)一律當(dāng)作無(wú)符號(hào)整數(shù)來(lái)輸出。
[例L4.5.c]類(lèi)型轉(zhuǎn)換字符d的使用。main(){intnum1=123;longnum2=123456789;/*用3種不同格式,輸出int型數(shù)據(jù)num1的值*/
printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1);/*用3種不同格式,輸出long型數(shù)據(jù)num2的值*/
printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);printf("num1=%ld\n",num1);
printf("num2=%d\n",num2);} 演示程序運(yùn)行結(jié)果如下:num1=123,num1=□□123,num1=123□□,num1=123num2=12345689,num2=123456789,num2=123456789num1=16908411(TC2.0結(jié)果,VC結(jié)果正確)num2=-7616(TC2.0結(jié)果,VC結(jié)果正確)
(2)類(lèi)型轉(zhuǎn)換字符f──以小數(shù)形式、按系統(tǒng)默認(rèn)的寬度,輸出單精度和雙精度實(shí)數(shù)。%f%m.nf%-m.nf
對(duì)于實(shí)數(shù),也可使用格式符%e,以標(biāo)準(zhǔn)指數(shù)形式輸出——尾數(shù)中的整數(shù)部分大于等于1、小于10,小數(shù)點(diǎn)占一位,尾數(shù)中的小數(shù)部分占5位,指數(shù)部分占4位(如e-03),其中e占一位,指數(shù)符號(hào)占一位,指數(shù)占2位,共計(jì)11位。也可使用格式符%g——讓系統(tǒng)根據(jù)數(shù)值的大小,自動(dòng)選擇%f或%e格式、且不輸出無(wú)意義的零。
[例L4.6.c]類(lèi)型轉(zhuǎn)換字符f的使用。main(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}
演示程序運(yùn)行結(jié)果如下:
123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46
d1+d2=3333333333333.333010
說(shuō)明:本案例程序的輸出結(jié)果中,數(shù)據(jù)123.456001和3333333333333.333010中的01和010都是無(wú)意義的,因?yàn)樗鼈兂隽擞行?shù)字的范圍。
(3)類(lèi)型轉(zhuǎn)換字符c──輸出一個(gè)字符(只占一列寬度)。[例L4.7.c]類(lèi)型轉(zhuǎn)換字符c的使用。main(){charc='A';
inti=65;
printf("c=%c,%5c,%d\n",c,c,c);
printf("i=%d,%c",i,i);}
程序運(yùn)行結(jié)果如下:
c=A,□□□□A,65i=65,A注意:在C語(yǔ)言中,整數(shù)可以用字符形式輸出,字符數(shù)據(jù)也可以用整數(shù)形式輸出。將整數(shù)用字符形式輸出時(shí),系統(tǒng)首先求該數(shù)與256的余數(shù),然后將余數(shù)作為ASCII碼,轉(zhuǎn)換成相應(yīng)的字符輸出。演示(4)類(lèi)型轉(zhuǎn)換字符s──輸出一個(gè)字符串。[例L4.8.c]類(lèi)型轉(zhuǎn)換字符s的使用。
main(){
printf("%s,%5s,%-10s","Internet","Internet","Internet");
printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");} 程序運(yùn)行結(jié)果如下:Internet,Internet,Internet□□,□□□□□Inter,Inter□□□□□,Inter演示使用說(shuō)明
(1)printf()可以輸出常量、變量和表達(dá)式的值。但格式控制中的格式說(shuō)明符,必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否則出錯(cuò)。例如,printf("str=%s,f=%d,i=%f\n","Internet",1.0/2.0,3+5,"CHINA");是錯(cuò)誤的。
(2)格式字符x、e、g可以用小寫(xiě)字母,也可以用大寫(xiě)字母。使用大寫(xiě)字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫(xiě)。除了x、e、g格式字符外,其它格式字符必須用小寫(xiě)字母。例如,%f不能寫(xiě)成%F。
(3)格式字符緊跟在“%”后面就作為格式字符,否則將作為普通字符使用(原樣輸出)。例如,“printf(”c=%c,f=%f\n“,c,f);”中的第一個(gè)c和f,都是普通字符。4.5.2格式化輸入scanf()函數(shù)
[例]已知圓柱體的底半徑radius=1.5,高h(yuǎn)igh=2.0,求其體積。
main()
{floatradius=1.5,high=2.0,pi=3.14159,vol;
vol=pi*radius*radius*high;/*求體積*/
printf(“vol=%7.2f\n”,vol); /*輸出求出的體積*/
} [例L4.9.c]已知圓柱體的底半徑為radius,高為high,求其體積。/*功能:說(shuō)明函數(shù)scanf()的格式及作用。*/main(){floatradius,high,vol,pi=3.1415926;
printf("Pleaseinputradius&high:");
scanf("%f%f",&radius,&high); /*從鍵盤(pán)輸入兩個(gè)實(shí)數(shù)賦給變量r,h*/
vol=pi*radius*radius*high;
printf("radius=%7.2f,high=%7.2f,vol=%7.2f\n",radius,high,vol);}
程序運(yùn)行結(jié)果如下:
Pleaseinputradius&high:1.5□2.0↙radius=□□□1.50,high=□□□2.00,vol=□□14.14演示1.scanf()函數(shù)的一般格式scanf(“格式控制",輸入項(xiàng)首地址表);(1)格式控制字符串。格式控制字符串可以包含3種類(lèi)型的字符:格式指示符、空白字符(空格、Tab鍵和回車(chē)鍵)和非空白字符(又稱(chēng)普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個(gè)輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。(2)輸入項(xiàng)首地址表──由若干個(gè)輸入項(xiàng)首地址組成,相鄰2個(gè)輸入項(xiàng)首地址之間,用逗號(hào)分開(kāi)。輸入項(xiàng)首地址表中的地址:變量的地址、字符數(shù)組名或指針變量。變量地址的表示方法:&變量名其中“&”是地址運(yùn)算符。例如,[L4.9.c]中的“&radius”是指變量radius在內(nèi)存中的地址。
2.scanf()函數(shù)的功能:從鍵盤(pán)上接收格式化輸入。運(yùn)行例[L4.9.c]的程序時(shí),從鍵盤(pán)上輸入2個(gè)實(shí)數(shù),分別存入&radius、&high所標(biāo)示的存儲(chǔ)單元中,即輸入兩個(gè)實(shí)數(shù)分別賦給radius和high。
3、格式指示符
格式指示符的一般形式為:%[*][寬度][h|l]類(lèi)型字符(1)類(lèi)型字符類(lèi)型字符如p80表4.3。例如,在例[L4.9.c]的scanf()函數(shù)語(yǔ)句中,格式字符串“%f%f”。
(2)寬度n
指定該項(xiàng)輸入數(shù)據(jù)所占列數(shù)為n。
換句話說(shuō),讀取輸入數(shù)據(jù)中相應(yīng)的n位,但按需要的位數(shù)賦給相應(yīng)的變量,多余部分被舍棄。例如,scanf("%3c%3c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);
假設(shè)輸入“abcdefg”,則系統(tǒng)將讀取的“abc”中的“a”賦給變量ch1;將讀取的“def”中的“d”賦給變量ch2,所以printf()函數(shù)的輸出結(jié)果為:ch1=a,ch2=d。
(3)賦值抑制字符*表示本輸入項(xiàng)對(duì)應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量(該變量由下一個(gè)格式指示符輸入)。例如,scanf("%2d%*2d%3d",&num1,&num2);printf("num1=%d,num2=%d\n",num1,num2);
假設(shè)輸入“123456789”,則系統(tǒng)將讀取“12”并賦值給num1;讀取“34”、但舍棄掉(“*”的作用);讀取“567”并賦值給num2。所以,printf()函數(shù)的輸出結(jié)果為:num1=12,num2=567。
(4)類(lèi)型修飾符──h、l。
其含義與printf()中的一樣,分別為短整型和長(zhǎng)整型。
4、數(shù)據(jù)輸入操作
(1).如果相鄰2個(gè)格式指示符之間,不指定數(shù)據(jù)分隔符(如逗號(hào)、冒號(hào)等),則相應(yīng)的2個(gè)輸入數(shù)據(jù)之間,至少用一個(gè)空格分開(kāi),或者用Tab鍵分開(kāi),或者輸入1個(gè)數(shù)據(jù)后,按回車(chē),然后再輸入下1個(gè)數(shù)據(jù)。例如,scanf("%d%d",&num1,&num2);
假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:12□36↙
或者:12↙36↙
注:使用“↙”符號(hào)表示按回車(chē)鍵操作,在輸入數(shù)據(jù)操作中的作用是,通知系統(tǒng)輸入操作結(jié)束。
(2).“格式字符串”中出現(xiàn)的普通字符(包括轉(zhuǎn)義字符形式的字符),務(wù)必原樣輸入。例如,scanf("%d,%d",&num1,&num2);
假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:12,36↙
另外,scanf()函數(shù)中、格式字符串內(nèi)的轉(zhuǎn)義字符(如\n),系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符來(lái)解釋?zhuān)瑥亩a(chǎn)生一個(gè)控制操作,而是將其視為普通字符,所以也要原樣輸入。例如:scanf("num1=%d,num2=%d\n",&num1,&num2);
假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:
num1=12,num2=36\n↙
提高人機(jī)交互性建議:為改善人機(jī)交互性,同時(shí)簡(jiǎn)化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先用printf()函數(shù)輸出一個(gè)提示信息,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。
例如,將scanf("num1=%d,num2=%d\n",&num1,&num2);改為:
printf("num1=");scanf("%d",&num1);printf("num2=");scanf("%d",&num2);
(3)輸入數(shù)據(jù)時(shí),遇到以下情況,系統(tǒng)認(rèn)為該數(shù)據(jù)結(jié)束:
a.遇到空格,或者回車(chē)鍵,或者Tab鍵。
b.遇到輸入域?qū)挾冉Y(jié)束。例如“%3d”,只取3列。
c.遇到非法輸入。例如,在輸入數(shù)值數(shù)據(jù)時(shí),遇到字母等非數(shù)值符號(hào)(數(shù)值符號(hào)僅由數(shù)字字符0-9、小數(shù)點(diǎn)和正負(fù)號(hào)構(gòu)成)。
(4)使用格式說(shuō)明符“%c”輸入單個(gè)字符時(shí),空格和轉(zhuǎn)義字符均作為有效字符被輸入。例如,scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
假設(shè)輸入:A□B□C↙,則系統(tǒng)將字母'A'賦值給ch1,空格'□'賦值給ch2,字母'B'賦值給ch3。
4.6順序結(jié)構(gòu)程序設(shè)計(jì)舉例
在順序結(jié)構(gòu)程序中,各語(yǔ)句(或命令)是按照位置的先后次序,順序執(zhí)行的,且每個(gè)語(yǔ)句都會(huì)被執(zhí)行到。
[例L4.10.c]輸入任意三個(gè)整數(shù),求它們的和及平均值。
/*功能:設(shè)計(jì)一個(gè)順序結(jié)構(gòu)程序,求三個(gè)整數(shù)的和及平均值。*/
main()
{intnum1,num2,num3,sum;
floataver;
printf("Pleaseinputthreenumbers:");
scanf("%d,%d,%d",&num1,&num2,&num3);/*輸入三個(gè)整數(shù)*/
sum=num1+num2+num3; /*求累計(jì)和*/
aver=sum/3.0; /*求平均值*/
printf("num1=%d,num2=%d,num3=%d\n",num1,num2,num3);
printf("sum=%d,aver=%7.2f\n",sum,aver);
} 演示思考題:能否將“aver=sum/3.0;”中“3.0”改為“3”?[例L4.11.c]求方程ax2+bx+c=0的實(shí)數(shù)根。a,b,c由鍵盤(pán)輸入,a≠0且b2-4ac>0。/*功能:設(shè)計(jì)一個(gè)順序結(jié)構(gòu)程序,求方程的根。*/#include"math.h“/*使用求平方
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)期階段性教學(xué)總結(jié)計(jì)劃
- 學(xué)校藝術(shù)課程的跨專(zhuān)業(yè)融合計(jì)劃
- 大學(xué)藝術(shù),一年制油畫(huà)教學(xué)計(jì)劃書(shū)
- 病人教育計(jì)劃書(shū)
- 工作計(jì)劃與財(cái)務(wù)預(yù)算的結(jié)合
- 年度教學(xué)成果分享會(huì)安排計(jì)劃
- 性別平等與職場(chǎng)禮儀培訓(xùn)
- 拓展人際關(guān)系對(duì)月度工作的支持作用計(jì)劃
- 禮品行業(yè)月度個(gè)人工作計(jì)劃
- 2024年鐵嶺道路旅客運(yùn)輸駕駛員從業(yè)資格考試試題及答案
- 課件口腔頜面部囊腫
- 五年級(jí)上冊(cè)英語(yǔ)課件-Unit 4 Where do you work?人教精通版.(共11張PPT)
- 2小時(shí)一次防火巡查記錄表
- 保定市縣級(jí)地圖PPT可編輯矢量行政區(qū)劃(河北省)
- 七年級(jí)數(shù)學(xué)《絕對(duì)值》優(yōu)質(zhì)公開(kāi)課獲獎(jiǎng)教案設(shè)計(jì)5篇
- 完整版?zhèn)€人征信報(bào)告
- 《自然地理》教學(xué)課件 第五章 地貌
- 搭船的鳥(niǎo)(分課時(shí)版)課件
- 2021EPC總承包各專(zhuān)業(yè)配合以及項(xiàng)目組織架構(gòu)
- 中國(guó)各石油領(lǐng)域的10大鼻祖你知道幾個(gè)?
- 《心中的“110”》PPT課件
評(píng)論
0/150
提交評(píng)論