計算機二級C語言-第3章輸入輸出函數(shù)_第1頁
計算機二級C語言-第3章輸入輸出函數(shù)_第2頁
計算機二級C語言-第3章輸入輸出函數(shù)_第3頁
計算機二級C語言-第3章輸入輸出函數(shù)_第4頁
計算機二級C語言-第3章輸入輸出函數(shù)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論