第3章格式輸入輸出_第1頁
第3章格式輸入輸出_第2頁
第3章格式輸入輸出_第3頁
第3章格式輸入輸出_第4頁
第3章格式輸入輸出_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第三章第三章 格式化輸入格式化輸入和輸出和輸出n一、 字符數(shù)據(jù)的輸入輸出n二、 格式化的輸入與輸出程序程序是數(shù)據(jù)數(shù)據(jù)的處理器: 它接收輸入數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理,再將得到數(shù)據(jù)輸出。輸出輸出:從計(jì)算機(jī)向外部輸出設(shè)備(顯示器,打印機(jī))輸出數(shù)據(jù)輸入輸入:從輸入設(shè)備(鍵盤,鼠標(biāo),掃描儀)向計(jì)算機(jī)輸入數(shù)據(jù). 由于各種設(shè)備差別很大,C緩沖文件系統(tǒng)把每種設(shè)備都轉(zhuǎn)換成稱為流(stream)的邏輯設(shè)備。 流給程序員提供了與設(shè)備無關(guān)的一致界面,因此能夠用于寫入磁盤文件的函數(shù)也能用于寫入顯示器終端。 本章討論標(biāo)準(zhǔn)的輸入和輸出函數(shù)。也就是認(rèn)為輸入輸出函數(shù)是從鍵盤輸入,向顯示屏輸出。 C語言中標(biāo)準(zhǔn)輸入輸出C語言函數(shù)庫中有

2、一批“標(biāo)準(zhǔn)輸入輸出函數(shù)標(biāo)準(zhǔn)輸入輸出函數(shù)”,例如: 字符輸入函數(shù):getchar() 字符輸出函數(shù):putchar() 格式輸入函數(shù): scanf() 格式輸出函數(shù):printf() 字符串輸入函數(shù): gets() 字符串輸出函數(shù):puts()使用這些函數(shù)時(shí),應(yīng)在程序的開頭處寫下預(yù)編譯命令: # include “stdio.h” 或或 # include 用編譯命令“#include”將有關(guān)頭文件“stdio.h”包括到用戶的源文件當(dāng)中。 一、字符數(shù)據(jù)的輸入輸出1. 字符輸出函數(shù) putchar( )p函數(shù)作用:向終端輸出一個(gè)字符p一般形式:putchar(c) 輸出變量c的值 C可以是字符型

3、變量或整型變量例例1 輸出單個(gè)字符。輸出單個(gè)字符。#includevoid main() char a,b,c; a=:;b=);c=*; putchar(a);putchar(b);putchar(c); putchar(n); 運(yùn)行結(jié)果::)*putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);運(yùn)行結(jié)果::)*n也可以輸出其他轉(zhuǎn)義字符,例如: putchar(101); (輸出字符A) putchar(); (輸出單引號字符) putchar(015) (輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭) 2.

4、字符輸入函數(shù)p函數(shù)作用:從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。p沒有輸入?yún)?shù),一般形式:getchar()p函數(shù)值:從輸入設(shè)備得到的字符。例例2 輸入單個(gè)字符。輸入單個(gè)字符。#includevoid main() char c; c=getchar(); putchar(c); putchar(n);運(yùn)行程序:運(yùn)行程序:從鍵盤輸入字符從鍵盤輸入字符* *按按EnterEnter鍵鍵屏幕上將顯示輸出的字符屏幕上將顯示輸出的字符* * * *也可改寫為:putchar(getchar();二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式

5、輸出函數(shù)) 一般格式:一般格式: printf(”格式控制格式控制”,輸出列表);輸出列表);例如:例如:printf(“a=%d,b=%cn”,a,b)功能:功能:向默認(rèn)輸出設(shè)備(一般是顯示器)輸出向默認(rèn)輸出設(shè)備(一般是顯示器)輸出“輸出列表輸出列表”中各數(shù)據(jù)項(xiàng)。中各數(shù)據(jù)項(xiàng)。 1. 格式控制格式控制也稱“控制字符串”,是由雙引號括起來指定輸出輸出格式的字符串格式的字符串。他由格式說明格式說明、控制字符控制字符和普通字符普通字符三部分組成。(1)格式說明)格式說明構(gòu)成:構(gòu)成:由“%”字符開始后面跟有各種格式字符。作用:作用:以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位等格式。 C語言提供的常用語言

6、提供的常用printf()函數(shù)格式說明:()函數(shù)格式說明:二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) n1500 1.5*103 =1.5E+3n0.00001 1*10-5 1E-5(2)控制字符)控制字符控制字符用于控制設(shè)備的動作,如下表中制表符“t”、換行符“n”等。 轉(zhuǎn)義字符表示含義n換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭t橫向跳格,橫向跳到下一個(gè)輸出區(qū)橫向跳格,橫向跳到下一個(gè)輸出區(qū)r回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭f走紙換頁,將當(dāng)前位置移到下頁開頭走紙換頁,將當(dāng)前位置移到

7、下頁開頭b退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列v豎向跳格豎向跳格例如:例如:printf(“x=%dn”,x); 二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) (3)普通字符)普通字符除格式說明和控制字符之外,其他字符均屬除格式說明和控制字符之外,其他字符均屬普通字符普通字符,打印,打印時(shí)按原樣輸出。時(shí)按原樣輸出。例如:例如:printf(“x=%d,%c”,12,6*8);其中“x=”和“,”都是普通字符。 輸出結(jié)果是:輸出結(jié)果是:x=12,0 二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf(

8、 )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 2.輸出列表輸出列表:輸出列表:就是需要輸出的各數(shù)據(jù)項(xiàng)表達(dá)式,表達(dá)式之間用就是需要輸出的各數(shù)據(jù)項(xiàng)表達(dá)式,表達(dá)式之間用逗號分隔。逗號分隔。 注意:(1 1)表達(dá)式可以由變量構(gòu)成,也可以由常量構(gòu)成;)表達(dá)式可以由變量構(gòu)成,也可以由常量構(gòu)成;(2 2)表達(dá)式之間的逗號不是逗號表達(dá)式,而是確定計(jì)算)表達(dá)式之間的逗號不是逗號表達(dá)式,而是確定計(jì)算順序的分隔符,自右向左進(jìn)行的計(jì)算。順序的分隔符,自右向左進(jìn)行的計(jì)算。二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 3.附加說明符在%與格式字符間插入附加

9、說明符,組成:“% ”輸出格式來達(dá)到更高輸出格式要求。二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 附加說明符意 義l用于長整型,可以加在格式符用于長整型,可以加在格式符d、o、x、u的的前面前面m(正整數(shù))(正整數(shù))數(shù)據(jù)輸出的最小寬度,當(dāng)數(shù)據(jù)實(shí)際寬度超過數(shù)據(jù)輸出的最小寬度,當(dāng)數(shù)據(jù)實(shí)際寬度超過m時(shí),則按實(shí)際寬度輸出,如實(shí)際寬度短于時(shí),則按實(shí)際寬度輸出,如實(shí)際寬度短于m,則輸出時(shí)前面補(bǔ)則輸出時(shí)前面補(bǔ)0或空格。或空格。.n(正整數(shù))(正整數(shù))對實(shí)數(shù)表示輸出對實(shí)數(shù)表示輸出n位小數(shù),對字符串,表示從位小數(shù),對字符串,表示從左截取的字符個(gè)

10、數(shù)左截取的字符個(gè)數(shù)-輸出的字符或數(shù)字在域內(nèi)向左對齊,默認(rèn)右輸出的字符或數(shù)字在域內(nèi)向左對齊,默認(rèn)右對齊對齊+輸出的數(shù)字前帶有正負(fù)號輸出的數(shù)字前帶有正負(fù)號0在數(shù)據(jù)前多余空格處補(bǔ)在數(shù)據(jù)前多余空格處補(bǔ)0二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 【例【例3.1】輸出整型、長整型、無符號整型數(shù)據(jù)#include “stdio.h”void main() int y=20; long a=1024; unsigned b=54321; printf(“%d,%ld,%un”,y,a,b); printf(“%+8d,%+8ld,%+8un

11、”,y,a,b); printf(“%08d,%08ld,%08un”,y,a,b); printf(“%-8d,%-8ld,%-8un”,y,a,b); printf(“%o,%lo,%on”,y,a,b); printf(“%#x,%#lx,%#xn”,y,a,b); printf(“%8o,%8lo,%8on”,y,a,b); printf(“%-8x,%-8lx,%-8xn”,y,a,b); 二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 運(yùn)行結(jié)果如下:(運(yùn)行結(jié)果如下:(代表空格代表空格)20,1024,54321+20,

12、+1024,5432100000020,00001024,0005432120,1024,5432124,2000,1520610 x14,0 x400,0 xd432124,2000,15206114, 400, d4321二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) %-8.1E %-8.3fn86,1040【例【例3.2】輸出字符和字符串#include “stdio.h”void main() char ch=a; printf(“%cn”,ch); printf(“%-3cn”,ch); printf(“%3cn”,c

13、h); printf(“%sn”,”programing”); printf(“%15sn”,”programing”); printf(“%-15sn”,”programing”); printf(“%10.5sn”,”programing”); printf(“%-10.5sn”,”programing”);運(yùn)行結(jié)果如下:aaaprogramingprogramingprogramingprogrprogr二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 【例【例3.3】輸出實(shí)型數(shù)據(jù)#include “stdio.h”void

14、main() float x,y; double a; x=111111.111;y=123.468; a=333333333.33333; clrscr(); printf(“%fn”,x); printf(“%fn”,a); printf(“%10f,%10.2f,%.2f,%-10.2fn”,x,x,x,x); printf(“%en”,x); printf(“%en”,a); printf(“%10e,%10.2e,%.2e.%-10.2en”,a,a,a,a); printf(“%f,%e,%g”,y,y,y);二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函

15、數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下:111111.109375333333333.333330111111.109375, 111111.11,111111.11,111111.111.11111e+053.33333e+083.33333e+08, 3.33e+08,3.33e+08.33e+08123.468002,1.23468e+02,123.468二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 4. 在使用printf()函數(shù)時(shí),還應(yīng)注意以下問題 (1)轉(zhuǎn)換說明與輸出參數(shù)不一致時(shí)可

16、能產(chǎn)生錯誤。)轉(zhuǎn)換說明與輸出參數(shù)不一致時(shí)可能產(chǎn)生錯誤。printf()函中格式符串中的數(shù)目多于列表參數(shù)個(gè)數(shù)時(shí),則會輸出錯誤數(shù)據(jù);如果格式符串中的數(shù)目少于列表參數(shù)個(gè)數(shù),則多出的參數(shù)不被輸出。例如:例如:#include “stdio.h”void main() int i=-6,x=5; float y=123.456; printf(“%d,%dn”,i); printf(“%-4d,%f”,i,y,x); 輸出結(jié)果為:輸出結(jié)果為: -6,2509 /*多余格式符輸出錯誤數(shù)據(jù)*/ -6,123.456001 /* x未被輸出*/二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf(

17、 )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) (2)“f”格式符一般為格式符一般為7位有效數(shù)字位有效數(shù)字,雙精度一般為雙精度一般為16位。位。例如:例如: #include “stdio.h” void main() float x=111111.111,y=222222.222; printf(%f,x+y); 輸出結(jié)果為:輸出結(jié)果為: 333333.328125 /*前7位是有效數(shù)字,后面數(shù)字無意義*/二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) (2)“f”格式符一般為格式符一般為7位有效數(shù)字位有效數(shù)字,雙精度一般為雙精度

18、一般為16位。位。 #include “stdio.h” void main() double x=111111.11111,y=222222.22222; printf(%lf,x+y); 輸出結(jié)果為:輸出結(jié)果為: 333333.333330 /*可達(dá)16位是有效數(shù)字,小數(shù)點(diǎn)保留6位*/二、二、 格式化的輸入與輸出格式化的輸入與輸出1. printf( )函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))一般形式:一般形式: scanf(格式控制格式控制,地址列表);,地址列表);功能:功能:從鍵盤向程

19、序中的變量輸入一個(gè)或若干個(gè)任意類型的數(shù)據(jù)。例如:例如: scanf(%d,%d,&a,&b);); 1. 格式控制格式控制格式控制與printf基本相同,由格式說明、附加說明字符和普通字符三部分組成。% 格式字符作 用%d,%i輸入帶符號的十進(jìn)制整數(shù)輸入帶符號的十進(jìn)制整數(shù)%u輸入無符號十進(jìn)制整數(shù)輸入無符號十進(jìn)制整數(shù)%x,%X輸入無符號的十六進(jìn)制整數(shù)輸入無符號的十六進(jìn)制整數(shù)(不區(qū)分大小寫不區(qū)分大小寫)%o輸入無符號形式八進(jìn)制整數(shù)輸入無符號形式八進(jìn)制整數(shù)%f輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入%e,%E%g,%G與與%f作用相同,作用相同,%

20、e、%f、%g可以互相替換可以互相替換%c輸入單個(gè)字符輸入單個(gè)字符%s輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空字符輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空字符開始,遇到回車或空格字符結(jié)束開始,遇到回車或空格字符結(jié)束二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))格式修飾符格式修飾符作作 用用L或l用在格式字符用在格式字符d、o、x、u的前,表示輸入長整型數(shù)據(jù),用在的前,表示輸入長整型數(shù)據(jù),用在f或或e前,表示輸入前,表示輸入double型數(shù)據(jù)。型數(shù)據(jù)。h用在格式字符用在格式字符d、I、o、x前,表示輸入短整型數(shù)據(jù)前,

21、表示輸入短整型數(shù)據(jù)m指定輸入數(shù)據(jù)所占寬度,不能用來指定實(shí)數(shù)型數(shù)據(jù)寬度,應(yīng)為指定輸入數(shù)據(jù)所占寬度,不能用來指定實(shí)數(shù)型數(shù)據(jù)寬度,應(yīng)為正整數(shù)正整數(shù)*表示該輸入項(xiàng)在讀入后不賦值給相應(yīng)的變量表示該輸入項(xiàng)在讀入后不賦值給相應(yīng)的變量二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))2. 地址列表地址列表地址列表:用逗號分隔的若干接收輸入數(shù)據(jù)的變量地址。各變量地址間用逗號“,”分隔。變量地址組成:由地址運(yùn)算符“&”后跟變量名組成。例如:例如:#include void main() int a,b, c; scanf(“%d%d%d”,&a,&a

22、mp;b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c);輸入數(shù)據(jù)的格輸入數(shù)據(jù)的格式表示什么意式表示什么意思思?二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))運(yùn)行時(shí)按以下方式輸入運(yùn)行時(shí)按以下方式輸入a,b,c的值:的值:345 (輸入a,b,c的值,用空格間隔)a=3,b=4,c=5 (輸出a,b,c的值) 注:輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可以輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可以用用Enter鍵、鍵、Tab鍵分隔,鍵分隔,不能用逗號作為兩個(gè)數(shù)據(jù)的分隔符。不能用逗號作為兩

23、個(gè)數(shù)據(jù)的分隔符。下面輸入均為合法:下面輸入均為合法: 345 3 4 53(按Tab鍵)4 5如下面的輸入不合法如下面的輸入不合法:3,4,5二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))3. 使用scanf()函數(shù)時(shí)應(yīng)注意的問題(1)地址列表中的各個(gè)參量都是變量地址,而不是變量名。)地址列表中的各個(gè)參量都是變量地址,而不是變量名。例如:例如:設(shè)a 、 b 分別為整型變量和浮點(diǎn)型變量,則scanf(“%d %f”,&a,&b);是合法的。而scanf(%d %f,a,b);是非法的。 二、二、 格式輸入與輸出格式輸入與輸出2

24、scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))(2)普通字符在輸入數(shù)據(jù)時(shí),在對應(yīng)位置上輸入相同字符。)普通字符在輸入數(shù)據(jù)時(shí),在對應(yīng)位置上輸入相同字符。例如:例如:scanf(%d,%d,&a,&b)輸入時(shí)應(yīng)用如下形式:輸入時(shí)應(yīng)用如下形式:3,4以下輸入格式是不對的:以下輸入格式是不對的:343 : 4。又如:又如:scanf(”%d:%d:%d”,&x,&y,&z);輸入形式應(yīng)為:12:13:14。 二、二、 格式輸入與輸出格式輸入與輸出2 scanf( )函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))(3)對于實(shí)型數(shù)據(jù),輸入時(shí)不能規(guī)定其精度。)對于實(shí)型數(shù)據(jù),輸入時(shí)不能規(guī)定其精度。例如:例如:scanf(“%6.3f”,&x);是不合法的。(4)在用)在用“%c”格式輸入字符時(shí),空格字符和格式輸入字符時(shí),空格字符和“轉(zhuǎn)義字符轉(zhuǎn)義字符”都將作為有效的字符輸入。都將作為有效的字符輸入。例如:例如:scanf(%c%c%c,&c1,&c2,&c3);如果輸入:如果輸入:abc則字符ac1,字符c2,字符bc3。正確輸入方法是:正確輸入方法是:a

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論