版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第三章輸入輸出函數(shù)一、字符輸入輸出操作例如:#include<stdio.h>字符標(biāo)準(zhǔn)輸入字符標(biāo)準(zhǔn)輸出
C語言本身不提供輸入輸出語句,輸入輸出操作是由函數(shù)實現(xiàn)的。
C語言的輸入輸出函數(shù)的處理程序不在C語言本身,因而在運行時要連接函數(shù)庫,但必須在程序中將相應(yīng)的文件頭部加載。在計算機終端鍵盤上輸入數(shù)據(jù)。在終端顯示器上輸出數(shù)據(jù)。二、有格式輸入輸出操作的實現(xiàn)格式輸出函數(shù)printf格式輸入函數(shù)scanf1、格式輸出函數(shù)printf功能:
該函數(shù)按指定的格式輸出多個、不同類型的數(shù)據(jù)。格式:printf(格式控制,輸出表列)格式控制:也稱為轉(zhuǎn)換控制字符串。它包含格式轉(zhuǎn)換說明和需原樣輸出的普通字符。輸出表列:要輸出其值的表達式表列,該表列中的參數(shù)可為多個,也可沒有。輸出列表中變量的位置、個數(shù)和類型必須與格式控制字符串中的格式轉(zhuǎn)換說明符對應(yīng)。普通字符的輸出普通字符即需要原樣輸出的字符。printf("a=%db=%d",a,b);普通字符設(shè)a,b分別為3和4,則有:a=3
b=4輸出列表舉例“輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達式??梢杂卸囗?,也可以沒有。printf("a=%da+b=%d",a,a+b);輸出表列printf(“輸出提示信息!");格式說明
格式說明:是從“%”開始到其后第一個格式說明符。格式說明符:⑴d格式符⑵o格式符⑶x格式符⑷u格式符⑸c格式符⑹s格式符⑺f格式符⑻e格式符⑼g格式符(1)d格式符功能以帶符號的十進制整型格式輸出整數(shù)。格式%d按整型數(shù)據(jù)的實際長度輸出%ldl或(L)表示輸出長整型數(shù)據(jù)%md按長度為m輸出整型數(shù)據(jù),不足補空格%0md按長度為m輸出整型數(shù)據(jù),不足補0.
a=123;b=12345;printf("%4d,%05d,%d",a,a,b);
_123,00123,12345
由于是將內(nèi)存單元的各位的值(0或1)按八進制形式輸出,因此輸出的數(shù)值不帶符號。(2)
o格式符功能以八進制、無符號形式輸出整數(shù)。格式%o,%mo對于長整型數(shù)可以用“%lo”格式輸出。以十六進制無符號形式輸出整數(shù)。(3)
x格式符功能格式%x,%mx對于長整型數(shù)可以用“%lx”格式輸出。a=-1;printf("%x,%6x,%d",a,a,a,a);ffff,△△ffff,-11111111111111111
一個有符號整數(shù)(int型)也可用%u輸出;反之,一個unsigned型也可用%d、%o,%x輸出。(4)
u格式符以十進制無符號形式輸出unsigned數(shù)據(jù)。功能格式%u,%mu(5)
c格式符功能用來輸出一個字符。格式%c%mcc='a';printf("%c,%3c,%d",c,c,c);a,△△a,97注:上行的%c和c的意義不同。其值在0—255內(nèi)的整數(shù),可用c或d輸出。一個字符,可用c或d輸出。(6)
s格式符輸出字符串,直到遇到字符串結(jié)束標(biāo)識\0為止。功能格式1、%s
按字符串的實際長度輸出。printf("%s","china");china2、%ms
輸出的字符串占m列。printf("%3s,%7s","china","china");china,△△china1.當(dāng)字符串實際長度>m,則按實際長度輸出。2.當(dāng)字符串實際長度≤m。則左端補空格。3、%-ms
輸出的字符串占m列。printf("%3s,%-7s","china","china");china,china△△1.當(dāng)字符串實際長度>m,則按實際長度輸出。2.當(dāng)字符串實際長度≤m。則右端補空格。4、%m.ns
輸出的字符串占m列。printf("%7.2s","china");△△△△△ch1.左端輸出m-n個空格,右端輸出字符串左n個字符。2.當(dāng)字符串實際長度≤n。則n為字符串長度。
5、%-m.ns
輸出的字符串占m列。printf("%-7.2s,%.4s","china","china");ch△△△△△,chin1.右端輸出m-n個空格,左端輸出字符串左n個字符。2.當(dāng)字符串實際長度≤n。則n為字符串長度。3.當(dāng)m沒有時自動地m=n=4。(7)
f格式符用來輸出實數(shù)(包括單精度、雙精度)以小數(shù)形式輸出。功能格式1、%f:實數(shù)的整數(shù)部分全部輸出,小數(shù)部分保留六位。2、%mf:輸出的實數(shù)共占m位,小數(shù)部分保留六位。
m>實際長度,左端補空格。3、%.nf:輸出的實數(shù),總寬度按實際寬度,小數(shù)部分占n位。floata=123.45;printf(“%f,%11f,%.2f”,a,a,a);
程序運行結(jié)果為:
123.450000,_123.450000,123.454、%m.nf,輸出的實數(shù)包括小數(shù)點在內(nèi)共占m位,其中小數(shù)部分占n位。
如果數(shù)據(jù)的實際寬度小于m,右靠齊,左邊補空格。5、%-m.nf,輸出的實數(shù)包括小數(shù)點在內(nèi)共占m位,其中小數(shù)部分占n位。如果數(shù)據(jù)的實際寬度小于m,則左靠齊,右邊補空格.floata=123.45;printf(“%10.2f,%-10.2f”,a,a);
程序運行結(jié)果為:___123.45,123.45___(8)
e格式符以指數(shù)形式輸出實數(shù)功能格式1、%e
輸出6位小數(shù);指數(shù)部分占5位,(其中e占一位,指數(shù)符號占一位,指數(shù)占3位),%e輸出實數(shù)占13列寬度。如:printf(“%e”,123.2456);輸出:1.232456e+0028列5列2、%me
輸出的實數(shù)共占m位,小數(shù)部分保留六位。
m>實際長度,左端補空格。3、%m.ne
數(shù)據(jù)共占m位,(當(dāng)m<n+7,突破m的限制)。
n為數(shù)據(jù)的小數(shù)部分的小數(shù)位數(shù),實際長度<m,右靠齊,左端補空格。4、%-m.nen為數(shù)據(jù)的小數(shù)部分的小數(shù)位數(shù),
實際長度<m,左靠齊,右端補空格。printf(“%10.2e”,123.2456);輸出:
1.23e+00210列(9)
g格式符根據(jù)數(shù)值的大小,自動選擇f或e輸出實數(shù)。功能格式%g選擇占寬度較小的一種。printf函數(shù)使用說明1.有些系統(tǒng)要求格式字符要用小寫字母。printf("%d,%f",a,f);√printf("%D,%F",a,f);×2.如輸出字符%,則在“格式控制”字符串重用連續(xù)的兩個%字符。printf("%f%%\n",1.0/3);輸出:0.333333%3.可以在“格式控制”字符串內(nèi)包含“轉(zhuǎn)義字符”。例如:\n,\t,\b,\r,\f等。printf("%d,%f\n",a,f);轉(zhuǎn)義字符轉(zhuǎn)義字符功能\n換行(回車換行)\t橫向跳格(跳向下一輸出區(qū))(8列)\v豎向跳格\b后退一格\r回車(回本行第一列)\f走紙換頁\\輸出反斜杠字符\ˊ輸出單引號字符\ddd(d為數(shù)據(jù))1到3位8進制數(shù)所代表的字符\xhh(x為數(shù)據(jù))1到2位16進制數(shù)所代表的字符printf函數(shù)舉例#include<stdio.h>main(){inta=29;longb=123456;doublex=123.456;charc=':';printf("1.a=%d,a=%4d,",a,a);printf("a=%-4d,a=%04d\n",a,a);printf("2.a=%o,a=%04o,",a,a);printf("a=%x,a=0x%x\n",a,a);printf("3.b=%ld,b=%8ld\n",b,b);printf("4.x=%f,x=%.2f",x,x);printf("x=%10.2f,x=%-10.2f\n",x,x);1.a=29,a=29,a=29,a=00292.a=35,a=0035,a=1d,a=0x1d3.b=123456,b=1234564.x=123.456000,x=123.46,x=123.46,x=123.46printf("5.x=%e,x=%.2e,x=%g\n",x,x,x);printf("6.%c%8s%c\n",c,"howareyou",c);printf("7.%c%15s%c\n",c,"howareyou",c);printf("8.%c%+10.3s%c\n",c,"howareyou",c);printf("9.%c%-10.3s%c\n",c,"howareyou",c);}5.x=1.234560e+02,x=1.23e+02,x=123.4560016.:howareyou:7.:howareyou:8.:how:9.:how:2、格式輸入函數(shù)scanf功能:
該函數(shù)可按指定的格式輸入多個不同類型的數(shù)據(jù),并將輸入數(shù)據(jù)存入地址參數(shù)所指定的地址單元。格式:scanf(格式控制,地址表列)格式控制:與printf的格式控制含義相同。輸出表列:是由若干個地址組成的表列,可以是地址,或字符串首地址。&:取地址符格式:&變量名
一般格式scanf(“格式控制字符串”,變量1的地址,變量2的地址,…,變量n的地址);
格式控制符與后續(xù)參數(shù)中的變量地址的對應(yīng)關(guān)系
已知:
inta,b;函數(shù)調(diào)用:
scanf("%d%d",&a,&b);假設(shè)輸入:
10□20↙變量的值:a的值是10,b的值是20scanf附加的格式說明字符字符說明l用于輸入長整形數(shù)據(jù)(可用%ld、%lo、%lx),以及double型數(shù)據(jù)(用%lf或%le)h用于輸入短整形數(shù)據(jù)(可用%hd、%ho、%hx)域?qū)?為以正整數(shù))
指定輸入數(shù)據(jù)所占寬度(列數(shù))*表示本輸入項在讀入后,不賦給相應(yīng)的變量。
scanf函數(shù)的格式控制符
%[*][width][l|h]Type
一般形式:
說明:
[]:表示可選項,可缺省。|表示互斥關(guān)系。
width:指定輸入數(shù)據(jù)的域?qū)?,遇空格或不可轉(zhuǎn)換字符則結(jié)束。
Type:各種格式轉(zhuǎn)換符(參照printf)。*:抑制符,輸入的數(shù)據(jù)不會賦值給相應(yīng)的變量。
l:用于d、u、o、x前,指定輸入為long型整數(shù);用于e、f前,指定輸入為double型實數(shù)。
h:用于d、u、o、x前,指定輸入為short型整數(shù)。
使用scanf函數(shù)注意事項
(1)如果相鄰兩個格式控制符之間,不指定數(shù)據(jù)分隔符(如逗號、冒號等),則相應(yīng)的兩個輸入數(shù)據(jù)之間,至少用一個空格分隔、Tab鍵分隔,或者輸入一個數(shù)據(jù)后,按回車,然后再輸入下一個數(shù)據(jù)。
(2)格式控制字符串中出現(xiàn)的常規(guī)字符(包括轉(zhuǎn)義字符),務(wù)必原樣輸入。
(3)為改善人機交互性,同時簡化輸入操作,在設(shè)計輸入操作時,一般先用printf()函數(shù)輸出一個提示信息,再用scanf()函數(shù)進行數(shù)據(jù)輸入。
(4)當(dāng)格式控制字符串中指定了輸入數(shù)據(jù)的域?qū)抴idth時,將讀取輸入數(shù)據(jù)中相應(yīng)的width位,但按需要的位數(shù)賦給相應(yīng)的變量,多余部分被舍棄。例如:
scanf("%d%d",&num1,&num2);
假設(shè)給num1輸入12,給num2輸入36,則正確的輸入操作為:
12□36↙
或者
12↙36↙
使用“↙”符號表示按回車鍵操作。例如:
scanf("%d:%d:%d",&h,&m,&s);
假設(shè)給h輸入12,給m輸入30,給s輸入10,正確的輸入操作為:
12:30:10↙
例如:
scanf("num1=%d,num2=%d\n",&num1,&num2);
假設(shè)給num1輸入12,給num2輸入36,正確的輸入操作為:
num1=12,num2=36\n↙例如:將scanf("num1=%d,num2=%d\n",&num1,&num2);改為:
printf("num1=");scanf("%d",&num1);printf("num2=");scanf("%d",&num2);例如:
scanf("%3c%3c",&ch1,&ch2);
假設(shè)輸入abcdefg↙,則系統(tǒng)將讀取的“abc”中的'a'賦給變量ch1;將讀取的"def"中的'd'賦給變量ch2。
使用scanf函數(shù)注意事項
(5)當(dāng)格式控制字符串中含有抑制符‘*’時,表示本輸入項對應(yīng)的數(shù)據(jù)讀入后,不賦給相應(yīng)的變量(該變量由下一個格式指示符輸入)。
(6)使用格式控制符%c輸入單個字符時,空格和轉(zhuǎn)義字符均作為有效字符被輸入。
(7)輸入數(shù)據(jù)時,遇到以下情況,系統(tǒng)認為該數(shù)據(jù)結(jié)束:
遇到空格,或者回車鍵,或者Tab鍵。
遇到輸入域?qū)挾冉Y(jié)束。例如“%3d”,只取3列。
遇到非法輸入。比方說,在輸入數(shù)值數(shù)據(jù)時,遇到字母等非數(shù)值符號。
(8)當(dāng)一次scanf調(diào)用需要輸入多個數(shù)據(jù)項時,如果前面數(shù)據(jù)的輸入遇到非法字符,并且輸入的非法字符不是格式控制字符串中的常規(guī)字符,那么,這種非法輸入將影響后面數(shù)據(jù)的輸入,導(dǎo)致數(shù)據(jù)輸入失敗。例如:
scanf("%2d%*2d%3d",&num1,&num2);printf("num1=%d,num2=%d\n",num1,num2);
假設(shè)輸入123456789↙
輸出結(jié)果為:num1=12,num2=567。
例如:
scanf("%c%c%c",&ch1,&ch2,&ch3);
假設(shè)輸入:A□B□C↙,則系統(tǒng)將字母'A'賦值給ch1,空格'□'賦值給ch2,字母'B'賦值給ch3。
例如:
scanf("%d",a);
如果輸入為:12a3↙,a的值將是12。例如:
scanf("%d,%d",&a,&b);
如果輸入為:12a34↙,那么a的值將是12,b的值將無法預(yù)測。正確的輸入是:12,34↙
通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,需要注意以下幾點:1.scanf函數(shù)中的輸入項必須是“地址量”,它可以是一個變量的地址,也可以是數(shù)組的首地址,但不能是變量名。例如,如果定義了a,b為整型變量,則
scanf(“%d,%d”,a,b);
是不合法的,應(yīng)將“a,b”改為“&a,&b”。請讀者予以注意,這是初學(xué)者易出錯的地方。2.輸入數(shù)據(jù)時,各個數(shù)據(jù)之間可以用空格“
”或Tab鍵或回車鍵作為間隔符。3.如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。例如,對應(yīng)語句:
scanf(“%d,%d”,&a,&b);輸入方式應(yīng)為:1,3<回車>
注意:1后面是逗號,它與scanf函數(shù)中的“格式控制”中的逗號對應(yīng),若輸入時不用逗號,而用空格或回車鍵等字符就不對。4.特別需要注意的是,在使用格式說明符%c輸入一個字符時,凡是從鍵盤輸入的字符,包括空格、回車等均被作為有效字符接收。例如對語句:
scanf(“%c%c”,&c1,&c2);若輸入:
ab<回車>原意圖是把字符‘a(chǎn)’賦給c1,‘b’賦給c2,而結(jié)果卻是把空格賦給了c2。因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符間隔,因此空格作為下一個字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年跨國人力資源配置合同
- 《千字文》全文解讀簡編
- 2024采購合同供應(yīng)商資格補充協(xié)議
- 2025版木材加工廠木屑原料采購合同3篇
- 2024年適用:臨時建筑設(shè)施轉(zhuǎn)讓合同樣式
- 2024招投標(biāo)與合同管理工作坊:文化創(chuàng)意產(chǎn)業(yè)項目招投標(biāo)與合同管理服務(wù)合同3篇
- 地鐵知識培訓(xùn)視頻課件
- 硬件基礎(chǔ)知識培訓(xùn)課件
- 2024年酒店會議設(shè)施租賃合同
- 專業(yè)兒童用濕紙巾購銷協(xié)議文檔下載版A版
- 落實《中小學(xué)德育工作指南》制定的實施方案(pdf版)
- 光伏項目施工總進度計劃表(含三級)
- 酒店砌體專項施工方案
- 送達地址確認書(法院最新版)
- 建設(shè)工程施工合同 GF—2017—0201
- 部編版小學(xué)語文五年級下冊第四單元教學(xué)計劃及單元分析
- 邀請外國人來華擔(dān)保函
- 進水口快速閘門液壓啟閉機安裝施工方案
- 法道(FADAL)機床設(shè)備維修知識講座
- 職校生個人簡歷自薦信范文模板
- 雙電源STS靜態(tài)換轉(zhuǎn)開關(guān)輸入配電系統(tǒng)解決方案
評論
0/150
提交評論