版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章輸入與輸出本章主要介紹C語(yǔ)言中的輸入與輸出函數(shù)的使用。所謂數(shù)據(jù)輸入輸出是以計(jì)算機(jī)為主體而言的。C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由函數(shù)實(shí)現(xiàn)的。C語(yǔ)言函數(shù)庫(kù)中有一批“標(biāo)準(zhǔn)輸入輸出函數(shù)”,它是以標(biāo)準(zhǔn)的輸入輸出設(shè)備為輸入輸出對(duì)象的。其中有:putchar(輸出字符),getchar(輸入字符),printf(格式輸出),scanf(格式輸入),puts(輸出字符串),gets(輸入字符串)。在使用C語(yǔ)言的庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。頭文件中包含了與函數(shù)有關(guān)的信息。例如使用標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),要用到“stdio.h”文件,文件開頭應(yīng)有一個(gè)預(yù)編譯命令:
#include<stdio.h>
或
#include“stdio.h”3.1、單字符輸入、輸出函數(shù)1、單字符輸出函數(shù)(putchar)1)putchar()函數(shù)的格式:putchar(ch);
其中ch可以是一個(gè)字符變量或常量,也可以是一個(gè)轉(zhuǎn)義字符。2)putchar()函數(shù)的作用:向終端輸出一個(gè)字符。
(1)putchar()函數(shù)只能用于單個(gè)字符的輸出,且一次只能輸出一個(gè)字符。(2)在程序中使用putchar()函數(shù),務(wù)必牢記:在程序(或文件)的開頭加上編譯預(yù)處理命令(也稱包含命令),即:#include"stdio.h"
(3)putchar()函數(shù)有參數(shù),無(wú)返回值。參數(shù)就是它要輸出的那個(gè)字符,可以是字符變量或字符常量。[例]putchar()函數(shù)的格式和使用方法。#include<stdio.h> main(){charch1='N',ch2='E',ch3='W';putchar(ch1);putchar(ch2);putchar(ch3);putchar('\n');putchar(ch1);putchar('\n'); putchar('E');putchar('\n'); putchar(ch3);putchar('\n');}
程序運(yùn)行結(jié)果如下:
NEWNEW2、單字符輸入函數(shù)getchar()1)getchar()函數(shù)的格式:getchar();2)getchar()函數(shù)的作用:從系統(tǒng)隱含的輸入設(shè)備(如鍵盤)輸入一個(gè)字符。⑴getchar()函數(shù)只能用于單個(gè)字符的輸入,一次輸入一個(gè)字符。⑵程序中要使用getchar()函數(shù),必須在程序(或文件)的開頭加上編譯預(yù)處理命令:
#include“stdio.h”⑶getchar()函數(shù)沒(méi)有參數(shù),但有返回值,返回的就是輸入的那個(gè)字符。⑷getchar()函數(shù)同樣將空格和回車鍵等字符都會(huì)作為有效字符輸入。⑸在TC屏幕下運(yùn)行含本函數(shù)程序時(shí),將退出TC屏幕進(jìn)入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。⑹程序最后兩行可用下面兩行的任意一行代替:main(){charc;c=getchar();putchar(c);}putchar(getchar());printf("%c",getchar());[例]說(shuō)明getchar()函數(shù)的格式和作用。#include"stdio.h" main(){charch;ch=getchar(); putchar(ch);putchar('\n');putchar(getchar()); putchar('\n');} 程序運(yùn)行情況如下:
ab↙ab3.2、格式輸出函數(shù)(printf)printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。printf()函數(shù)的一般格式如下:
printf(“格式字符串”
[,輸出表列]);
⑴“格式控制字符串”是用雙引號(hào)括起來(lái)的字符串,也稱“轉(zhuǎn)換控制字符串”,它可以是兩種信息:格式說(shuō)明或普通字符。①格式說(shuō)明。是由“%”字符開始和格式字符組成,如%d、%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。
②普通字符。即需要原樣輸出的字符,包括轉(zhuǎn)義字符。例如printf函數(shù)中雙引號(hào)內(nèi)的逗號(hào)、空格和換行符等?!皃rintf(”abc=%f\n“,abc);”語(yǔ)句中的“abc=”就是普通字符。
2.輸出表列輸出表列是可選的。如果要輸出的數(shù)據(jù)不止一個(gè),相鄰兩個(gè)數(shù)據(jù)之間用逗號(hào)分開。下面的printf()函數(shù)都是合法的:(1)printf("Iamastudent.\n");
(2)printf("%d",3+2);
(3)printf("a=%db=%5d\n",a,a+3); 注意:①“格式字符串”中的格式指示符,必須與“輸出項(xiàng)表”中、輸出項(xiàng)的數(shù)據(jù)類型一致,否則會(huì)引起輸出錯(cuò)誤。②在TurboC中,printf函數(shù)輸出表列中的求值順序是從右到左進(jìn)行的。2.格式控制字符串 在TurboC中printf函數(shù)格式控制字符串以%開始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符。一般形式為:說(shuō)明:方括號(hào)中的項(xiàng)為可選項(xiàng),可以省略。%[□][m][.n][h/l]格式字符↓↓↓↓↓↓[開始符][標(biāo)志字符][寬度指示符][精度指示符][長(zhǎng)度修正符][格式轉(zhuǎn)換字符]⑴格式字符格式字符用來(lái)表示輸出數(shù)據(jù)的類型,對(duì)不同類型的數(shù)據(jù)用不同的格式字符,在格式控制字符串中不能省略,其常用符號(hào)和含義參見表2-4。表2-4printf格式字符格式字符說(shuō)明d,i以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))o以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0)x,X以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0x),用x則輸出十六進(jìn)制數(shù)的a~f時(shí)以小寫形式輸出;用X時(shí),則以大寫字母輸出A~Fu以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)。e,E以指數(shù)“e”或“E”形式輸出實(shí)數(shù)。(如1.2e+02或1.2E+02)g,G選用%f或%e格式中輸出寬度較短的一種格式,不輸出無(wú)意義的0。用G時(shí),若以指數(shù)形式輸出,則指數(shù)以大寫表示⑵標(biāo)志字符標(biāo)志字符包括-、+、#、0等4種,具體含義參見表2-6所示。表2-6printf標(biāo)志字符字符意義-輸出結(jié)果左對(duì)齊,右邊填空格;缺省則輸出結(jié)果右對(duì)齊,左邊填空格或零+輸出值為正時(shí)冠以“+”號(hào),為負(fù)時(shí)冠以“-”號(hào),缺省則為正時(shí)冠以空格,為負(fù)時(shí)冠以“-”號(hào)#八進(jìn)制輸出時(shí)加前綴0;十六進(jìn)制輸出時(shí)加前綴0x,對(duì)c、s、d、u類無(wú)影響,對(duì)e、g、f類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn)0輸出在數(shù)據(jù)前的多余空格處加前導(dǎo)0⑶寬度指示符用來(lái)設(shè)置輸出數(shù)據(jù)項(xiàng)的最小寬度,通常用十進(jìn)制整數(shù)來(lái)表示輸出的位數(shù)。如果輸出數(shù)據(jù)項(xiàng)所需實(shí)際位數(shù)多于指定寬度,則按實(shí)際位數(shù)輸出,如果實(shí)際位數(shù)少于指定的寬度則用空格填補(bǔ)。如以下示例程序:printf("%d\n",888);/*888(按實(shí)際需要寬度輸出)*/printf("%6d\n",888);/*□□□888(輸出右對(duì)齊,左邊填空格)*/printf("%f\n",888.88);/*888.880000(按實(shí)際需要寬度輸出)*/printf("%12f\n",888.88);/*□□888.880000(輸出右對(duì)齊,左邊填空格)*/printf("%g\n",888.88);/*888.88(%g格式比采用%f格式輸出寬度?。?/printf("%8g\n",888.88);/*□□888.88(輸出右對(duì)齊,左邊填空格)*/⑷精度指示符對(duì)于十進(jìn)制數(shù),以“.”開頭,用十進(jìn)制整數(shù)表示精度。對(duì)于float或double類型的浮點(diǎn)數(shù)或字符串可以用“m.n”的形式在指定寬度的同時(shí)來(lái)指定其精度。其中,“m”用以指定輸出數(shù)據(jù)所占總的寬度,“n”表示精度,對(duì)實(shí)數(shù),表示輸出n位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)。printf("%.5d\n",888);/*00888(數(shù)字前補(bǔ)0)*/printf("%.0d\n",888);/*888*/printf("%8.3f\n",888.88);/*□888.880*/printf("%8.1f\n",888.88);/*□□□888.9*/printf("%8.0f\n",888.88);/*□□□□□889*/printf("%.5s\n","abcdefg");/*abcde(截去超過(guò)的部分)*/printf("%5s\n","abcdefg");/*abcdefg(寬度不夠,按實(shí)際寬度輸出)*/⑸長(zhǎng)度修正符常用的長(zhǎng)度修正符為h和l兩種,h表示輸出項(xiàng)按短整型輸出,l表示輸出項(xiàng)按長(zhǎng)整型輸出。3.3、scanf()函數(shù)scanf()函數(shù)是用來(lái)從外部輸入設(shè)備向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)的。1.scanf()函數(shù)的功能:從鍵盤上接收格式化輸入。2.scanf()函數(shù)的一般格式
scanf(“格式控制字符串”,地址表列);(1)格式控制字符串。格式控制字符串可以包含3種類型的字符:格式指示符、空白字符(空格、Tab鍵和回車鍵)和非空白字符(又稱普通字符)。格式指示符與printf()函數(shù)的相似,空白字符作為相鄰2個(gè)輸入數(shù)據(jù)的缺省分隔符,非空白字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。(2)地址表列──由若干個(gè)輸入項(xiàng)首地址組成,相鄰2個(gè)輸入項(xiàng)首地址之間,用逗號(hào)分開。輸入項(xiàng)首地址表中的地址,可以是變量的首地址,也可以是字符數(shù)組名或指針變量。變量首地址的表示方法:&變量名其中“&”是地址運(yùn)算符。例如,scanf(“%d”,&a);中的“&a”是指變量a在內(nèi)存中的首地址。
3、格式指示符格式指示符的一般形式為:%[*][寬度m][h|l][格式字符]1)格式字符:與printf中的類型字符含義相同。
2)寬度m
指定該項(xiàng)輸入數(shù)據(jù)所占列數(shù)為m。換句話說(shuō),讀取輸入數(shù)據(jù)中相應(yīng)的m位,但按需要的位數(shù)賦給相應(yīng)的變量,多余部分被舍棄。例如:charch1,ch2;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、注意事項(xiàng)⑴scanf函數(shù)中的“格式控制字符串”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。 例如,如果a、b為整型變量,則scanf("%d,%d",a,b);是錯(cuò)誤的,應(yīng)將“a,b”改為“&a,&b”。⑵scanf函數(shù)沒(méi)有計(jì)算功能,因此輸入的數(shù)據(jù)只能是常量,而不能是表達(dá)式。⑶在輸入多個(gè)整型數(shù)據(jù)或?qū)嵭蛿?shù)據(jù)時(shí),可以用一個(gè)或若干個(gè)空格、Enter鍵或制表符(Tab)作為間隔;但在輸入多個(gè)字符型數(shù)據(jù)時(shí),數(shù)據(jù)之間分隔符和“轉(zhuǎn)義字符”都認(rèn)為是有效字符。例如:
scanf("%c%c%c",&c1,&c2,&c3);
如輸入:a□b□c<Enter>
則字符‘a(chǎn)’賦予變量c1,字符‘□’賦予變量c2,字符‘b’賦予變量c3,因?yàn)?c只要求讀入一個(gè)字符,后面不需要用空格作為兩個(gè)字符的間隔,因此‘□’作為下一個(gè)字符賦予變量c2。⑷輸入格式中,除格式說(shuō)明符之外的普通字符應(yīng)原樣輸入。 例如:
scanf("x=%d,y=%d,z=%d",&x,&y,&z);
應(yīng)使用以下形式輸入:
x=12,y=34,z=56<Enter>⑸輸入實(shí)型數(shù)據(jù)時(shí),不能規(guī)定精度,即沒(méi)有“%m.n”的輸入格式。 例如:
scanf("%7.2f",&f);
這種輸入格式是不合法的,不能企圖用這樣的scanf函數(shù)并輸入以下數(shù)據(jù)而使f的值為12345.67。
1234567<Enter>⑹在輸入數(shù)據(jù)時(shí),如果遇到以下情況,則認(rèn)為是該數(shù)據(jù)輸入結(jié)束:①遇到空格符、換行符或制表符(Tab)。例如:
scanf("%d%d%d%d",&i,&j,&k,&m);
如果輸入: 1□2<Tab>3<Enter>4<Enter> 則i、j、k、m變量的值分別為1、2、3、4。②遇到給定的寬度結(jié)束。例如: scanf("%2d",&i); 如果輸入:
1234567<Enter>
則i變量的值為12。③遇到非法字符輸入,例如:
scanf("%d%c%f",&i,&c1,&f1);
如果輸入:
123x45y.6789
則i的值為123,c1的值為’x’,f1的值為45.0。⑺若輸入的數(shù)據(jù)與輸出的類型不一致,雖然編譯能夠通過(guò),但結(jié)果不正確?!纠?-9】輸入數(shù)據(jù)與輸出數(shù)據(jù)類型不一致的情況。
main() { inta; printf("inputanumber\n"); scanf("%d",&a); printf("%ld",a); }
提高人機(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);
scanf,printf,getchar和putchar函數(shù)的特點(diǎn)scanf和getchar函數(shù)是輸入函數(shù),接收來(lái)自鍵盤的輸入數(shù)據(jù)。scanf是格式輸入函數(shù),可按指定的格式輸入任意類型數(shù)據(jù);getchar函數(shù)是字符輸入函數(shù),只能接收單個(gè)字符。printf和putchar函數(shù)是輸出函數(shù),向顯示器屏幕輸出數(shù)據(jù)。printf是格式輸出函數(shù),可按指定格式顯示任意類型的數(shù)據(jù);putchar是字符顯示函數(shù),只能顯示單個(gè)字符只使用scanf和printf函數(shù)可以在程序中不包含頭文件#include<stdio.h>使用getchar和putchar函數(shù)在程序中一定要包含頭文件#include<stdio.h>3.4程序舉例【例3.4】設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,輸出圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、圓柱體積,要求小數(shù)點(diǎn)后面保留兩位小數(shù)。解題思路:利用相關(guān)的計(jì)算公式來(lái)完成問(wèn)題的求解;其中:圓周長(zhǎng)l=2*PI*r圓面積s=PI*r*r圓球表面積sq=4*PI*r*r圓球體積vq=4.0/3.0*PI*r*r*r圓柱體積vz=PI*r*r*hPI為符號(hào)常量,代表3.1415926;源程序:#include<stdio.h>#definePI3.1415926main(){floatr,h,l,s,sq,vq,vz;/*變量定義*/printf("pleaseinputr,h:\n");/*輸入提示信息*/scanf("%f,%f",&r,&h);/*從鍵盤輸入圓半徑r、圓柱高h(yuǎn)的值*/l=2*PI*r;/*計(jì)算圓周長(zhǎng)*/s=PI*r*r;/*計(jì)算圓面積*/sq=4*PI*r*r;/*計(jì)算圓球表面積*/vq=4.0/3.0*PI*r*r*r;/*計(jì)算圓球體積*/vz=PI*r*r*h;/*計(jì)算圓柱體積*/printf("%6.2f\n",l);/*輸出各計(jì)算結(jié)果,小數(shù)點(diǎn)后面保留兩位小數(shù)*/printf("%6.2f\n",s);printf("%6.2f\n",sq);printf("%6.2f\n",vq);printf("%6.2f\n",vz);}【例3.5】編寫一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 25129-2010制冷用空氣冷卻器》專題研究報(bào)告
- 2026年河南推拿職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案詳解一套
- 在線體檢預(yù)約服務(wù)合同
- 2026屆江蘇省南京市七校聯(lián)合體高三上學(xué)期12月聯(lián)考地理含答案
- 中醫(yī)康復(fù)治療師崗位招聘考試試卷及答案
- 2025年城管崗面試題目及答案解析
- 辦公室主任2025年工作計(jì)劃(3篇)
- 2025年安全生產(chǎn)工作總結(jié)及2026年思路計(jì)劃(第3篇)
- 2025年網(wǎng)絡(luò)接口適配器合作協(xié)議書
- 2025年液位雷達(dá)項(xiàng)目建議書
- 智能采血管理系統(tǒng)功能需求
- 【基于PLC的自動(dòng)卷纜機(jī)結(jié)構(gòu)控制的系統(tǒng)設(shè)計(jì)10000字(論文)】
- 資產(chǎn)移交使用協(xié)議書
- 腦器質(zhì)性精神障礙護(hù)理查房
- GB/T 45481-2025硅橡膠混煉膠醫(yī)療導(dǎo)管用
- GB/T 32468-2025銅鋁復(fù)合板帶箔
- 山西交控集團(tuán)招聘筆試內(nèi)容
- 大窯校本教材合唱的魅力
- 《建筑測(cè)繪》課件
- 《健康體檢報(bào)告解讀》課件
- 前臺(tái)電話禮儀培訓(xùn)
評(píng)論
0/150
提交評(píng)論