C語言最簡單的C程序設計順序結構程序設計_第1頁
C語言最簡單的C程序設計順序結構程序設計_第2頁
C語言最簡單的C程序設計順序結構程序設計_第3頁
C語言最簡單的C程序設計順序結構程序設計_第4頁
C語言最簡單的C程序設計順序結構程序設計_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第第4 4章章 最簡單的最簡單的C C程序設計程序設計 -順序程序設計順序程序設計 本章主要討論本章主要討論C C程序的賦值、輸入、輸出。程序的賦值、輸入、輸出。 4.1 C4.1 C語句概述語句概述 C C程序:可由若干源程序文件組成,一個源文件可程序:可由若干源程序文件組成,一個源文件可由若干函數(shù)和預處理命令及全局變量聲明部分組成。由若干函數(shù)和預處理命令及全局變量聲明部分組成。 聲明部分:指出數(shù)據(jù)結構,定義數(shù)據(jù)類型。聲明部分:指出數(shù)據(jù)結構,定義數(shù)據(jù)類型。 函數(shù)函數(shù) 執(zhí)行部分:由語句組成,稱數(shù)據(jù)操作,對提執(zhí)行部分:由語句組成,稱數(shù)據(jù)操作,對提供的數(shù)供的數(shù) 據(jù)據(jù) 進行加工。進行加工。 語句:編

2、譯語句:編譯 指令,向計算機發(fā)布相應的操作命指令,向計算機發(fā)布相應的操作命令。令。C程序組成的示意圖程序組成的示意圖 函數(shù)函數(shù) 1預處理命令預處理命令函數(shù)函數(shù) n全局變量聲明全局變量聲明函數(shù)首部函數(shù)首部函數(shù)體函數(shù)體局部變量聲明局部變量聲明執(zhí)行語句執(zhí)行語句C程序程序源程序文件源程序文件2源程序文件源程序文件 1源程序文件源程序文件 n文件:文件:存儲在磁盤上的信息的集合,可以是一段程序,一組存儲在磁盤上的信息的集合,可以是一段程序,一組數(shù)據(jù)數(shù)據(jù)。 C源程序文件源程序文件:存儲在磁盤上的函數(shù)的集合,包括程序執(zhí)行:存儲在磁盤上的函數(shù)的集合,包括程序執(zhí)行中用到的數(shù)據(jù),中用到的數(shù)據(jù), 注:注: (1)所

3、有源程序文件中,只有一個源程序文件中包含一個主)所有源程序文件中,只有一個源程序文件中包含一個主函數(shù)函數(shù)main( ) , 其余文件中包含的都是被調(diào)用函數(shù)。其余文件中包含的都是被調(diào)用函數(shù)。 (2)當各源文件獨自存放磁盤上時,運行該程序的方法有:)當各源文件獨自存放磁盤上時,運行該程序的方法有: 在主函數(shù)前加在主函數(shù)前加 #include “文件名文件名.c ”用工程的方法,在工程文件中包含各源程序文件名,按用工程的方法,在工程文件中包含各源程序文件名,按F9生成生成.EXE文件,然后執(zhí)行即可,將在第七章舉例說明。文件,然后執(zhí)行即可,將在第七章舉例說明。 C C語言提供的語句分五大類:語言提供的

4、語句分五大類: (1)控制語句,完成控制功能控制語句,完成控制功能if( ) else 條件條件 for ( ) 循環(huán)循環(huán) while ( ) 循環(huán)循環(huán) do while ( ) 循環(huán)循環(huán) continue 結束本次循環(huán)結束本次循環(huán) break 中止中止switch 或循環(huán)或循環(huán) switch 多分支選擇多分支選擇 goto 轉(zhuǎn)向轉(zhuǎn)向 return 從函數(shù)返回從函數(shù)返回(2)(2)函數(shù)調(diào)用語句函數(shù)調(diào)用語句 函數(shù)名(參數(shù));函數(shù)名(參數(shù)); 如:如:printfprintf (“This is a C program.n”); (“This is a C program.n”); max(a,b

5、); max(a,b); (3)(3)表達式語句表達式語句 在表達式后加在表達式后加“ “ ;” ;” 構成構成 a=6 a=6 表達式表達式 ; ; a=5 ;a=5 ;表達式語句表達式語句 如如 i=i+2 i=i+2 表達式表達式 而而 i=i+2 ; i=i+2 ; 表達式語句表達式語句 x+y x+y ; x+y x+y ; (4)(4)空語句空語句 ; ; 無任何操作,但合法,可用于循環(huán)中的無任何操作,但合法,可用于循環(huán)中的轉(zhuǎn)折轉(zhuǎn)折(5)(5)復合語句復合語句 用用 將若干語句括起來而構成的語句。將若干語句括起來而構成的語句。 如:如:if (xy) 與與 if (xy) 意義不同

6、意義不同 z=x; z=x; x+; x+; y- -; y- -; 4.2 4.2 賦值語句賦值語句由賦值表達式與由賦值表達式與 “ “;” ” 組成。組成。 形式:變量形式:變量= =表達式;表達式; 功能:計算表達式的值,然后賦給左邊的變量。功能:計算表達式的值,然后賦給左邊的變量。 說明:說明: 1.1.賦值號與數(shù)學上的等號意義不同,如賦值號與數(shù)學上的等號意義不同,如 x=x+2; x=x+2; 2.2.在在C C語言中,賦值號作為賦值運算符使用,具有計語言中,賦值號作為賦值運算符使用,具有計算的功能。算的功能。 3.3.賦值表達式可以包含在其它表達式之中。賦值表達式可以包含在其它表達

7、式之中。 如:如:if ( (a=b) 0) t=a ; if ( (a=b) 0) t=a ; 但賦值語句不能包含在條件表達式中,如:但賦值語句不能包含在條件表達式中,如:if if (a=b;)0) t=a ; (a=b;)0) t=a ; 4.34.3數(shù)據(jù)輸入輸出的概念及在數(shù)據(jù)輸入輸出的概念及在C C語言中的實現(xiàn)語言中的實現(xiàn) (1)(1)輸入輸出:相對主機而言的輸入輸出:相對主機而言的 輸入設備:鍵盤、掃描儀、磁盤、光盤等輸入設備:鍵盤、掃描儀、磁盤、光盤等 輸出設備:顯示器、打印機、磁盤等。輸出設備:顯示器、打印機、磁盤等。 (2)(2)本身不提供本身不提供I/OI/O語句語句: I/

8、OI/O操作通過函數(shù)實現(xiàn),標準函數(shù)庫操作通過函數(shù)實現(xiàn),標準函數(shù)庫中提供了一些中提供了一些I/OI/O函數(shù),如函數(shù),如printf,scanfprintf,scanf等等, ,它們不是的關鍵字,而是函數(shù)名。它們不是的關鍵字,而是函數(shù)名。 好處是:使編譯系統(tǒng)簡化、通用性強、好處是:使編譯系統(tǒng)簡化、通用性強、可移植性好??梢浦残院谩?函數(shù)庫中的函數(shù)以函數(shù)庫中的函數(shù)以. .objobj作擴展名,連接時與源程序作擴展名,連接時與源程序經(jīng)編譯而得到的經(jīng)編譯而得到的. .objobj連接生成連接生成.exe.exe文件,若源程序中文件,若源程序中有有printfprintf,編譯時不把它翻譯成目標指令,在執(zhí)

9、行階,編譯時不把它翻譯成目標指令,在執(zhí)行階段調(diào)用已被連接的函數(shù)庫中的段調(diào)用已被連接的函數(shù)庫中的printfprintf目標文件。目標文件。 C C函數(shù)庫提供的一些標準函數(shù)庫提供的一些標準/ / 函數(shù)是以終端設備函數(shù)是以終端設備為為I / OI / O對象的,如:對象的,如:putchar, getchar, printf, putchar, getchar, printf, scanfscanf, puts, gets, puts, gets。 (3)(3)使用庫函數(shù)時使用庫函數(shù)時:用預編譯命令:用預編譯命令#include#include將有關頭文將有關頭文件包含到用戶源文件中,在頭文件中包

10、含了與用到的件包含到用戶源文件中,在頭文件中包含了與用到的函數(shù)有關的信息,如使用輸入輸出函數(shù)時要用到函數(shù)有關的信息,如使用輸入輸出函數(shù)時要用到stdiostdio.h.h文件。文件。#include#include放在程序開頭放在程序開頭 如如 # #include “stdioinclude “stdio.h” .h” 或或 # #include stdioinclude .h4.4 4.4 字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出 在在C C語言中,無語言中,無I/OI/O語句,數(shù)據(jù)的語句,數(shù)據(jù)的I/OI/O是通過是通過函數(shù)實現(xiàn)的,函數(shù)以文件的形式存放在系統(tǒng)的函數(shù)實現(xiàn)的,函數(shù)以文件的形式存放在

11、系統(tǒng)的 stdiostdio.h .h 庫文件中。庫文件中。 4.4.1 4.4.1 putcharputchar( (字符輸出函數(shù))字符輸出函數(shù)) 功能:向輸出設備輸出一個字符。功能:向輸出設備輸出一個字符。 形式:形式:putcharputchar( (參數(shù)參數(shù) ) ) 其中,參數(shù)可以是整型或字符型變量或常量。其中,參數(shù)可以是整型或字符型變量或常量。例如:例如:putchar(97); putcharputchar(97); putchar(a);(a);都輸出字符都輸出字符 a, a, char c= b ;putcharchar c= b ;putchar( c );( c );輸出字

12、符輸出字符 b b。 注意:注意: 在在C C語言中,除語言中,除printf printf 和和 scanf scanf 兩個函數(shù)兩個函數(shù)外,使用其它外,使用其它I/OI/O函數(shù)時,都必須在源文件的開函數(shù)時,都必須在源文件的開始處加上預編譯命令:始處加上預編譯命令:# #include include “stdio“stdio.h”.h”意義:意義: 將標準將標準I/OI/O函數(shù)庫中的函數(shù)包含到所在文件函數(shù)庫中的函數(shù)包含到所在文件中來。中來。 例例T4-1.c T4-1.c #include “stdio#include “stdio.h”.h”main( ) main( ) char a,

13、b,c; char a,b,c; a=B; a=B; b=O; b=O; c=Y; c=Y; putchar putchar(a); (a); putchar putchar(b); (b); putchar putchar (c); (c); 運行結果:運行結果:BOY BOY 若無文件包含編譯預處理,在編譯連接時若無文件包含編譯預處理,在編譯連接時系統(tǒng)將指出:系統(tǒng)將指出: Linking Error:Undefine Linking Error:Undefine symbolsymbol _putchar in _putchar in moduel moduel T4-1.cT4-1.c

14、另:另:putcharputchar( )( )函數(shù)還可以輸出控制字符函數(shù)還可以輸出控制字符 如:如: n n 或或012 012 回車回車 aa或或 007 007 字符為響鈴字符為響鈴 r r 或或 015 015 換行不回車換行不回車 n n 回車換行回車換行例例T4-1-1.c T4-1-1.c #include “stdio#include “stdio.h”.h”main( ) main( ) char a=A char a=A,b=Bb=B,c=007c=007; putchar(a)putchar(a);putchar(b)putchar(b);putchar(n)putcha

15、r(n); putchar (c )putchar (c );sleep(3)sleep(3);putchar( c)putchar( c); putchar(65)putchar(65);putchar(66)putchar(66);putcharputchar(007)(007); sleep(3)sleep(3);putcharputchar(007)(007); 運行結果:運行結果: AB AB 響,延時響,延時3 3秒,響秒,響 ABAB 響,延時響,延時3 3秒,響秒,響 例:例:T4-1-2.c T4-1-2.c #include “stdio#include “stdio.h”

16、.h”main() main() int int i i; for(i=1for(i=1;i=10i=10;i+) i+) putchar putchar(007)(007); 注:注: 007 007 和和 aa效果一樣嗎?效果一樣嗎? 結果是什么?結果是什么?答案:答案: 十次響鈴。十次響鈴。 一樣。一樣。 4.4.2 4.4.2 getchargetchar函數(shù)函數(shù) 功能:從鍵盤輸入一個字符功能:從鍵盤輸入一個字符 形式:形式:getchargetchar( ) ( ) 特點:無參數(shù),其值是從輸入設備得到的字符。特點:無參數(shù),其值是從輸入設備得到的字符。 例例T4-2.c T4-2.c

17、#include “stdio#include “stdio.h”.h”main( ) main( ) char c; char c; c=getchar( ); c=getchar( ); putchar( c); putchar( c); putchar (getchar( ) ); putchar (getchar( ) ); printf (“%c n”,getchar printf (“%c n”,getchar ( ) ); ( ) ); 輸入:輸入:abc 輸出:輸出:abc4.54.5格式輸入與輸出格式輸入與輸出 4.5.1 4.5.1 printf printf 格式輸出函數(shù)

18、格式輸出函數(shù) 功能:向輸出設備輸出若干個任意類型的數(shù)據(jù)功能:向輸出設備輸出若干個任意類型的數(shù)據(jù) 1 1、printf printf 函數(shù)的一般格式函數(shù)的一般格式 printfprintf ( (格式控制,輸出表列)格式控制,輸出表列) (1)(1)格式控制格式控制:由雙引號括起來的一串字符(:由雙引號括起來的一串字符(格式說明和普通字符)。格式說明和普通字符)。 格式說明:格式說明: 由由% %和格式字符(和格式字符(c, d, u, f, e, o, x, c, d, u, f, e, o, x, s, g)s, g)組成。組成。 普通字符:普通字符: 需要原樣輸出的字符。需要原樣輸出的字符

19、。 (2)(2)輸出表列輸出表列: 需要桉格式說明所指定的格式輸出的數(shù)據(jù)需要桉格式說明所指定的格式輸出的數(shù)據(jù),可以是常量、變量、表達式。,可以是常量、變量、表達式。 一般形式:一般形式: printfprintf( (參數(shù)參數(shù)1 1,參數(shù),參數(shù)2 2,參數(shù)參數(shù)n)n) 將參數(shù)將參數(shù)2n2n按參數(shù)的格式輸出。按參數(shù)的格式輸出。 int a=3 ; b=4; printf(“%d %d”, a, b); printf(“ a= %d b= %d”, a , b);格式說明格式說明輸出表列輸出表列普通字符普通字符輸出結果:輸出結果: 3 4 A=3 b=42 2、格式字符、格式字符(1)d (1)d

20、 格式符:輸出十進制整數(shù)格式符:輸出十進制整數(shù) %d%d:按十進制數(shù)據(jù)的實際長度輸出。:按十進制數(shù)據(jù)的實際長度輸出。 % %mdmd :m m為指定輸出字段的寬度。為指定輸出字段的寬度。 m時時 按數(shù)據(jù)的實際位數(shù)輸出。按數(shù)據(jù)的實際位數(shù)輸出。 例例T4-2-1.c main( ) int a=123,b=12345; printf (“a=%4d,b=%4dn”,a,b); 運行結果:運行結果:a=_123,b=12345 %ld%ld:輸出長整型數(shù)據(jù):輸出長整型數(shù)據(jù) 對于長整型數(shù)據(jù)只能按長整型的格式說明符輸對于長整型數(shù)據(jù)只能按長整型的格式說明符輸出出, ,否則否則, ,輸出的數(shù)據(jù)有誤。輸出的數(shù)

21、據(jù)有誤。 在長整型格式說明中在長整型格式說明中, ,還可指出其輸出寬度還可指出其輸出寬度. . 例例T4-2-2.c T4-2-2.c main( ) main( ) long a=134579; long a=134579; printf printf (“a=%dn”, a); (“a=%dn”, a); 結果:結果:a=3507 a=3507 (134579)10=(406663)80000000000000010 0000110110110011(3507)10( 00001101101100110000110110110011 )2 2= =(35073507)1010例例T4-2-

22、3.c main( ) long a=134579; printf (a=%ldn”,a); 結果:結果:a=134579 例例T4-2-4.c main( ) long a=134579; printf (“a=%10l dn”, a); 結果:結果:a=_ _ _ _134579(2 2)o o格式符,輸出八進制數(shù)格式符,輸出八進制數(shù) 特點:無論是正是負,輸出的都是不帶符號的數(shù)特點:無論是正是負,輸出的都是不帶符號的數(shù) 例:例:T4-2-5.c T4-2-5.c main ( ) main ( ) intint a=-1; a=-1; long b=-1; long b=-1; print

23、f (“a=%d, oa printf (“a=%d, oa=%o,lob=%lon”,a,a,b); =%o,lob=%lon”,a,a,b); 結果:結果:a= -1,oaa= -1,oa=0177777, lob=037777777777=0177777, lob=0377777777771 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ab(3)x(3)x格式符,輸出十六進制數(shù)格式符,輸出十六進制數(shù) 特點:無論數(shù)據(jù)是正是負,輸出的都是不帶符號的數(shù)特點

24、:無論數(shù)據(jù)是正是負,輸出的都是不帶符號的數(shù) 例:例:T4-2-6.c T4-2-6.c main( ) main( ) int a=-1;long b=-1; int a=-1;long b=-1; printf printf (“xa=%x,oa=%o,a=%d,b=%ld,lxb(“xa=%x,oa=%o,a=%d,b=%ld,lxb=%lxn”,a,a,a,b,=%lxn”,a,a,a,b,b); b); 結果:結果:xa=0 xffff,oa=177777,a=-1,b=-xa=0 xffff,oa=177777,a=-1,b=-1,lxb=oxffffffff 1,lxb=oxfff

25、fffff (4)u(4)u格式符,輸出無符號數(shù)據(jù)格式符,輸出無符號數(shù)據(jù) 無符號類型的數(shù)據(jù)可用無符號類型的數(shù)據(jù)可用%d,%u,%o,%x %d,%u,%o,%x 格式輸出。格式輸出。 帶符號的帶符號的char char 和和 int int 整型數(shù)據(jù)可用整型數(shù)據(jù)可用%u%u格式輸出。格式輸出。 單、雙精度實型數(shù)據(jù)用單、雙精度實型數(shù)據(jù)用%u%u格式輸出時,則得到錯誤格式輸出時,則得到錯誤的結果。的結果。例例T4-3.c T4-3.c main( ) main( ) unsigned int unsigned int a=65535a=65535; int b=-2int b=-2; printf

26、 (“a=%d,%o,%x,%un”,a,a,a,a)printf (“a=%d,%o,%x,%un”,a,a,a,a); printfprintf (“b=%d,%o,%x,%un”,b,b,b,b) (“b=%d,%o,%x,%un”,b,b,b,b); 運行結果:運行結果: a=-1,177777,ffff,65535 a=-1,177777,ffff,65535 b=-2,177776,fffeb=-2,177776,fffe,65534,65534 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0無符號數(shù)的

27、數(shù)值位無符號數(shù)的數(shù)值位帶符號數(shù)的符號位帶符號數(shù)的符號位a=65535b=-2例例T4-3-1.c main( ) float a=5; double b=12; printf (“a=%u,b=%un”,a,b); (結果錯的原因:無符號數(shù)也算整型數(shù)據(jù)之列結果錯的原因:無符號數(shù)也算整型數(shù)據(jù)之列)運算結果:運算結果: a=0,b=0(5)C(5)C格式符,輸出一個字符格式符,輸出一個字符 字符型數(shù)據(jù):占一個字節(jié),數(shù)據(jù)表示范圍字符型數(shù)據(jù):占一個字節(jié),數(shù)據(jù)表示范圍:0255 0255 對于整型數(shù)據(jù),若用字符格式輸出,由于對于整型數(shù)據(jù),若用字符格式輸出,由于整型數(shù)據(jù)占兩個字節(jié),整型數(shù)據(jù)占兩個字節(jié), 如

28、果整型數(shù)據(jù)的值在如果整型數(shù)據(jù)的值在02550255之間時,則輸出之間時,則輸出對應的字符,對應的字符, 若其值在若其值在2563276725632767之間時,則截取其低之間時,則截取其低8 8位部分,然后輸出對應的字符。位部分,然后輸出對應的字符。 例例T4-4.c main() char c= a; int i=97,j=355,k=232; printf (%c,%c,%c,%cn”,c,i,j,k);; printf (%d,%d,%d,%dn”,c,i,j,k); 輸出結果:輸出結果: a,a,c, 97,97,355,2320 0 0 0 0 0 0 1 0 1 1 0 0 0 1

29、 10 1 1 0 0 0 1 1輸出輸出355的低的低8位位 對應字符對應字符Cj=355j=低位為低位為99(6 6)S S格式符,用來輸出一個字符串,有幾種格式符,用來輸出一個字符串,有幾種方法方法% s% s:按實際長度輸出字符串。:按實際長度輸出字符串。 %ms%ms:m m為列寬為列寬 當串長當串長mm時,按實際長度輸出時,按實際長度輸出 當串長當串長mmm時,按串實際長度輸出,時,按串實際長度輸出, 當串長當串長mmnm時,時,m m自動取自動取n n值值, m, m只能是整只能是整常量,而不能不變量或表達式。常量,而不能不變量或表達式。 例例T4-5.c T4-5.c main

30、( ) main( ) printf printf (“%3s,%7.2s,%.4s,%-5.3sn”, (“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”, “CHINA”, “CHINA”, “CHINA” ); “CHINA” ); 運行結果:運行結果: CHINA, _ _ _ _ _CH, CHIN,CHI_ _ CHINA, _ _ _ _ _CH, CHIN,CHI_ _ (7) f(7) f格式符格式符: :輸出單、雙精度實數(shù)輸出單、雙精度實數(shù) %f:%f:單精度浮點輸出,有效位單精度浮點輸出,有效位7 7

31、位,通常小數(shù)點后位,通常小數(shù)點后有有6 6位數(shù)字。位數(shù)字。 %lf:%lf:雙精度浮點輸出,有效位雙精度浮點輸出,有效位1616位,通常小數(shù)點后位,通常小數(shù)點后有有6 6位數(shù)字。位數(shù)字。 例:例:T4-6.cT4-6.c輸出單精度有效位輸出單精度有效位 main( ) main( ) float x,y float x,y; x=111111.111x=111111.111; y=222222.222y=222222.222; printfprintf (“x+y=%fn”,x1+y1) (“x+y=%fn”,x1+y1); 運算結果:運算結果: x+y=333333.328125x+y=33

32、3333.328125例例T4-7.c輸出雙精度有效位輸出雙精度有效位 main( ) float x1,y1; double x2,y2; x1=1111111111111.111111111; y1=2222222222222.222222222; x2=1111111111111.111111111; y2=2222222222222.222222222; printf (“x1+y1=%fnx2+y2=%lfn”,x1+y1,x2+y2); 運行結果:運行結果: x1+y1=3333333319680.000000 x2+y2=3333333333333.333010 % %m. nf

33、m. nf :輸出數(shù)據(jù)共占輸出數(shù)據(jù)共占m m列,其中小數(shù)占列,其中小數(shù)占n n位,當數(shù)據(jù)長度位,當數(shù)據(jù)長度mm時,左補空格。時,左補空格。 (3)%-(3)%-m. nfm. nf:輸出數(shù)據(jù)占輸出數(shù)據(jù)占m m列,其中小數(shù)占列,其中小數(shù)占n n位,當數(shù)據(jù)長度位,當數(shù)據(jù)長度mm時,右補空格。時,右補空格。 例例T4-8.c T4-8.c main( ) main( ) float f=123.456; float f=123.456; printf printf (“%f,_ _%10f_ _%10.2f_ _% .2f_ (“%f,_ _%10f_ _%10.2f_ _% .2f_ _%-10.

34、2fn”,f,f,f,f,f); _%-10.2fn”,f,f,f,f,f); 運行結果運行結果: 123.456001_ _123.456001_ _ _ _ _ 123.456001_ _123.456001_ _ _ _ _ _123.46_ _123.46_ _123.46_ _ _ _123.46_ _123.46_ _123.46_ _ _ _(8)e(8)e格式,以指數(shù)形式輸出實數(shù)格式,以指數(shù)形式輸出實數(shù) % % e:e:小數(shù)點前有一位數(shù)字,小數(shù)點后有小數(shù)點前有一位數(shù)字,小數(shù)點后有5 5位位數(shù)字數(shù)字 float : x. xxxxxefloat : x. xxxxxexx xx

35、形式:形式: double: x.xxxxxedouble: x.xxxxxexxx xxx 例例T4-8-1.c T4-8-1.c main( ) main( ) float a=1.23456e38; doubl e float a=1.23456e38; doubl e b=1.23456e308; b=1.23456e308; printfprintf(“a=%e,b=%len”,a,b); (“a=%e,b=%len”,a,b); 運行結果運行結果: :a=1.23456e+38,b=1.23456e+308a=1.23456e+38,b=1.23456e+308% %m.nem.n

36、e:m m為輸出數(shù)據(jù)的列數(shù)為輸出數(shù)據(jù)的列數(shù),n,n是小數(shù)的位是小數(shù)的位數(shù)數(shù). . m mm數(shù)據(jù)長度數(shù)據(jù)長度, ,數(shù)據(jù)靠右輸出數(shù)據(jù)靠右輸出, ,左端補空格左端補空格 %-%-m.nem.ne:m m為輸出數(shù)據(jù)的列數(shù)為輸出數(shù)據(jù)的列數(shù),n,n是小數(shù)的位是小數(shù)的位數(shù)數(shù). . m mm數(shù)據(jù)長度數(shù)據(jù)長度, ,數(shù)據(jù)靠左輸出數(shù)據(jù)靠左輸出, ,右端補空格右端補空格 在在TcTc中的中的n n: 指在指在e e左邊的數(shù)字個數(shù)左邊的數(shù)字個數(shù), ,不包括小數(shù)點不包括小數(shù)點. . 例例T4-8-2.c main( ) float f=123.456; printf (“%e,%10e,%10.2e,%10.4e,% .

37、2e,% -10.2en”,f,f,f,f,f,f); 運行結果運行結果: 1.23456e+02, 1.23456e+02,_ _ _1.2e+02, _ 1.235e+02,1.2e+02,1.2e+02_ _ _(9)g(9)g格式符,用來輸出實數(shù)格式符,用來輸出實數(shù) 根據(jù)數(shù)據(jù)的大小,自動選取根據(jù)數(shù)據(jù)的大小,自動選取e e,f f 格式中占位格式中占位數(shù)較少的一種格式輸出。數(shù)較少的一種格式輸出。 例例T4-8-3.c T4-8-3.c main( ) main( ) float f=123.468; float f=123.468; printf printf (“%e,%f,%gn”,

38、f,f,f); (“%e,%f,%gn”,f,f,f); 運行結果:運行結果:1.234681.23468e+02,123.468002,123.468e+02,123.468002,123.468(10)print (10)print 函數(shù)的使用說明:函數(shù)的使用說明: 格式符用小寫字母而不能用大寫字母,如格式符用小寫字母而不能用大寫字母,如%d %d 而而不是不是% %D D。 格式控制的字符串中可包含轉(zhuǎn)義字符,如:格式控制的字符串中可包含轉(zhuǎn)義字符,如: n, n, t, b, r, 377, x41 t, b, r, 377, x41 由由% %和格式字符和格式字符d, f, e, g,

39、u, c, s, o, xd, f, e, g, u, c, s, o, x構成構成格式輸出符號格式輸出符號 特殊字符:特殊字符:% %和和 的輸出,如下所示:的輸出,如下所示: T4-8-4.cT4-8-4.c main( ) main( ) printf(“%s=350%s”, “wuhan3507”, printf(“%s=350%s”, “wuhan3507”, “hubei“hubein”); n”); 輸出輸出: : wuhan=hubeiwuhan=hubei 例例T4-8-5.c main( ) printf (“350 352376 n”); printf (“ ,%, “

40、, n”); printf (“%f, % n”,1.0/3); 輸出:輸出: ,%, ” 0.333333% 本題不要求本題不要求定義數(shù)據(jù)類型與格式符說明要一致,否則將輸出錯定義數(shù)據(jù)類型與格式符說明要一致,否則將輸出錯誤結果。誤結果。 例例T4-8-6.c T4-8-6.c main( ) main( ) int int a=5; float b=3.6; a=5; float b=3.6; char c=a; char c=a; double d=123.456; double d=123.456; printf printf (“a=%fnb=%dnc=%end(“a=%fnb=%dnc

41、=%end=%ldn”,a,b,c,d); =%ldn”,a,b,c,d); 運行結果:運行結果: a=-a=-9.239893754489199790000000000000000000000e+61 9.239893754489199790000000000000000000000e+61 b=16396 b=16396 c=-7.40806e+140 c=-7.40806e+140 d=13582430 d=13582430 出錯原因:類型定義與格式說明不一致出錯原因:類型定義與格式說明不一致 4.5.2 4.5.2 scanfscanf : :格式輸入函數(shù)格式輸入函數(shù) 功能:輸入任何類

42、型的數(shù)據(jù)。功能:輸入任何類型的數(shù)據(jù)。 1 1、一般形式、一般形式 scanfscanf ( (格式控制,地址表列)格式控制,地址表列) (1)(1)格式控制:是字符串,內(nèi)容有格式控制:是字符串,內(nèi)容有: 格式說明:由格式說明:由% %和格式字符和格式字符 d, f, e, c, s, d, f, e, c, s, o, xo, x中之一組成。中之一組成。 普通字符:需原樣輸入的字符普通字符:需原樣輸入的字符 轉(zhuǎn)義字符:轉(zhuǎn)義字符: n, t n, t 用來實現(xiàn)換行和制表輸用來實現(xiàn)換行和制表輸入入 (2)(2)地址表列:地址表列: 變量名前加變量名前加& &,表示將輸入的數(shù)據(jù)存入變

43、量所,表示將輸入的數(shù)據(jù)存入變量所指定的存儲單元內(nèi),字符數(shù)組前不加指定的存儲單元內(nèi),字符數(shù)組前不加& &例例T4-9.c main( ) int a,b,c; scanf (“%d %d %d”,&a, &b,&c); printf (“a=%d, b=%d, c=%dn”, a, b, c); 輸入方法:輸入方法: 3_4_5 3_ _4_ _ _ _5 3 4 5 3 Tab 4 Tab 5 輸出輸出:a=3,b=4,c=5354abc2 2、格式說明、格式說明 以以% %開始,以一個格式符(開始,以一個格式符(d, f, e(E), g(G),c,

44、d, f, e(E), g(G),c, s, o, x(X)s, o, x(X)結束,中間可插普通字符。結束,中間可插普通字符。 附加格式說明符有:附加格式說明符有: %ld, %lo, %lx :%ld, %lo, %lx :用于輸入長整型數(shù)據(jù)(十、八、十用于輸入長整型數(shù)據(jù)(十、八、十六進制數(shù))六進制數(shù)) %lf, %le: %lf, %le: 用于輸入雙精度類型數(shù)據(jù)用于輸入雙精度類型數(shù)據(jù) % %hd, %ho, %hxhd, %ho, %hx: :用于輸入十、八、十六進制短整用于輸入十、八、十六進制短整型數(shù)據(jù)型數(shù)據(jù) 域?qū)捰驅(qū)抧: n: 指出輸入數(shù)據(jù)所占的列數(shù)指出輸入數(shù)據(jù)所占的列數(shù)n n。

45、* * : :本輸入項讀入后不賦給任何變量。本輸入項讀入后不賦給任何變量。(1)(1)指出輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按其指出輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按其截取數(shù)據(jù)。截取數(shù)據(jù)。 例例T4-9-1.c T4-9-1.c main( ) main( ) int int a,b; a,b; scanf (“%3d %3d”,&a,&b); scanf (“%3d %3d”,&a,&b); printf printf (“a=%d,b=%dn”,a,b); (“a=%d,b=%dn”,a,b); 輸入:輸入:123456789 輸出:輸出:a=123,b=456(2)(2

46、)字符型數(shù)據(jù)若指出字符型數(shù)據(jù)若指出n n位寬度,則只將第一位寬度,則只將第一個字符賦給變量。個字符賦給變量。 例例T4-9-2.c T4-9-2.c main( ) main( ) char ch char ch; ; scanf (“%3c”,&ch); scanf (“%3c”,&ch); printf (“%cn”,ch printf (“%cn”,ch); ); 輸入:輸入:abcd 輸出:輸出:a(3)%(3)%后加后加* *, , 表示跳過相應數(shù)據(jù)表示跳過相應數(shù)據(jù) 例例T4-9-3.c T4-9-3.c main( ) main( ) int int a,b; a,

47、b; scanf (“%2d % scanf (“%2d %* *3d %2d”,&a,&b); 3d %2d”,&a,&b); printf printf (“a=%d,b=%dn”,a,b); (“a=%d,b=%dn”,a,b); 輸入:輸入:12 _ 345 _ 678 輸出:輸出:a=12,b=67(4)(4)格式說明中不能規(guī)定精度,編譯雖不指出格式說明中不能規(guī)定精度,編譯雖不指出錯誤,但結果不對。錯誤,但結果不對。 例例T4-9-4.c T4-9-4.c main( ) main( ) float a; float a; scanf (“%6.2f”

48、,&a); scanf (“%6.2f”,&a); printf printf (“a=%fn”,a); (“a=%fn”,a); 輸入:系統(tǒng)通過,不讓輸入數(shù)據(jù)輸入:系統(tǒng)通過,不讓輸入數(shù)據(jù) 輸出:輸出:a=0.000000a=0.000000(5)o, x(5)o, x格式輸入格式輸入 例例T4-9-5.c T4-9-5.c main ( ) main ( ) int int a,b,c; a,b,c; scanf (“%o%x%c”, &a,&b,&c); scanf (“%o%x%c”, &a,&b,&c); printf p

49、rintf (“%d, %d, %dn”,a,b,c); (“%d, %d, %dn”,a,b,c); 輸入:輸入:12 12 12 輸出:輸出:10,18,493 3、使用、使用sacnf sacnf 函數(shù)應注意的問題函數(shù)應注意的問題 (1)(1)地址表列地址表列 指的是變量的地址,而不是變量名。指的是變量的地址,而不是變量名。 如:如:scanfscanf (“%d”, &a); (“%d”, &a); (2)(2)格式字符串中除格式說明外,還可有其格式字符串中除格式說明外,還可有其它字符,在輸入時,除空格字符外,其它字它字符,在輸入時,除空格字符外,其它字符應原樣輸入。符

50、應原樣輸入。 (3)(3)用用%c%c格式輸入字符時,空格和轉(zhuǎn)義字符格式輸入字符時,空格和轉(zhuǎn)義字符都作有效字符輸入。都作有效字符輸入。例例T4-9-6.c main( ) int a,b; float c,d; char e,f; scanf (“%d %dn”,&a,&b); scanf (“c=%f,d=%fn”,&c,&d); scanf (“%c %c”,&e,&f); printf (“a=%d, b=%d, c=%f, d=%f, e=%cn”,a,b,c,d,e,f); 輸入:輸入:1_ 2 c=3. 5,d=4.6 ab 輸入:輸

51、入: 1_2c=3.5,d=4.6ab 或或輸出:輸出:a=1,b=2,c=3.500000,d=4.600000,e=a,f=b(4)(4)輸入數(shù)據(jù)遇到下列情況時,表示數(shù)據(jù)結束:輸入數(shù)據(jù)遇到下列情況時,表示數(shù)據(jù)結束: 遇空格、回車、遇空格、回車、TabTab; 遇結束寬度,如遇結束寬度,如%3d,%3d,只取只取3 3列;列; 遇非法輸入。遇非法輸入。 例例T4-9-7.c T4-9-7.c main( ) main( ) int int a; a; char b; char b; double c; double c; scanf(“%d%c%lf”,&a,&b,&

52、c); scanf(“%d%c%lf”,&a,&b,&c); printf printf (“a=%d,b=%c, c=%lfn”,a,b,c); (“a=%d,b=%c, c=%lfn”,a,b,c); 輸入:輸入:1234512345a54321.1234a a54321.1234a 輸出:輸出:a=12345,b=a,c=54321.123400a=12345,b=a,c=54321.123400* *非格式化輸入輸出函數(shù)非格式化輸入輸出函數(shù) 非格式化輸入輸出函數(shù)可以由上面講述的標準格式化輸入輸出非格式化輸入輸出函數(shù)可以由上面講述的標準格式化輸入輸出函數(shù)代替函數(shù)代

53、替, , 但這些函數(shù)編譯后代碼少但這些函數(shù)編譯后代碼少, , 相對占用內(nèi)存也小相對占用內(nèi)存也小, , 從而提從而提高了速度高了速度, , 同時使用也比較方便。下面分別進行介紹。同時使用也比較方便。下面分別進行介紹。 一、一、puts()puts()和和gets()gets()函數(shù)函數(shù)1. puts()1. puts()函數(shù)函數(shù) puts()puts()函數(shù)用來向標準輸出設備函數(shù)用來向標準輸出設備( (屏幕屏幕) )寫字符串并換行寫字符串并換行, , 其調(diào)其調(diào)用格式為用格式為: : puts(s); puts(s); 其中s為字符串變量(字符串數(shù)組名或字符串指針)。 puts()函數(shù)的作用與語p

54、rintf(%sn, s)相同。 例例4: 4: main() main() char s20, char s20, * *f;f; / /* *定義字符串數(shù)組和指針變量定義字符串數(shù)組和指針變量* */ / strcpystrcpy(s, Hello! Turbo C2.0); /(s, Hello! Turbo C2.0); /* *字符串數(shù)組變量賦值字符串數(shù)組變量賦值* */ / f=Thank you;f=Thank you; / /* *字符串指針變量賦值字符串指針變量賦值* */ / puts(s); puts(s); puts(f); puts(f); 說明說明: : (1). p

55、uts()(1). puts()函數(shù)只能輸出字符串函數(shù)只能輸出字符串, , 不能輸出數(shù)值或進行不能輸出數(shù)值或進行格式變換。格式變換。 (2). (2). 可以將字符串直接寫入可以將字符串直接寫入puts()puts()函數(shù)中。如函數(shù)中。如: : puts(Hello, Turbo C2.0); puts(Hello, Turbo C2.0); 2. gets()2. gets()函數(shù)函數(shù) gets()gets()函數(shù)用來從標準輸入設備函數(shù)用來從標準輸入設備( (鍵盤鍵盤) )讀取字符串直到讀取字符串直到回車結束回車結束, , 但回車符不屬于這個字符串。但回車符不屬于這個字符串。其調(diào)用格式為其調(diào)

56、用格式為: : gets(s); gets(s); 其中其中s s為字符串變量為字符串變量( (字符串數(shù)組名或字符串指針字符串數(shù)組名或字符串指針) )。 gets(s) gets(s)函數(shù)與函數(shù)與scanfscanf(%s, &s)(%s, &s)相似相似, , 但不完全相同但不完全相同, , 使用使用scanfscanf(%s, &s)(%s, &s)函數(shù)輸入字符串時存在一個問題函數(shù)輸入字符串時存在一個問題, , 就就是如果輸入了空格會認為輸入字符串結束是如果輸入了空格會認為輸入字符串結束, ,空格后的字符將空格后的字符將作為下一個輸入項處理作為下一個輸入項處

57、理, , 但但gets() gets() 函數(shù)將接收輸入的整個函數(shù)將接收輸入的整個字符串直到回車為止。字符串直到回車為止。 例例5 5 main() main() char s20, char s20, * *f; f; printf printf(Whats your name?n); (Whats your name?n); gets(s); gets(s); / /* *等待輸入字符串直到回車等待輸入字符串直到回車結束結束* */ / puts(s); puts(s); / /* *將輸入的字符串輸出將輸入的字符串輸出* */ / puts(How old are you?); puts

58、(How old are you?); gets(f); gets(f); puts(f); puts(f); 說明說明: : (1). gets(s)(1). gets(s)函數(shù)中的變量函數(shù)中的變量s s為一字符串。如果為單個字為一字符串。如果為單個字符符, , 編譯連接不會有錯誤編譯連接不會有錯誤, , 但運行后會出現(xiàn)但運行后會出現(xiàn) Null pointer Null pointer asignmemtasignmemt 的錯誤。的錯誤。二、二、putchar()putchar()、getch()getch()、getche()getche()和和getchargetchar()()函數(shù)函

59、數(shù) 1. 1. putcharputchar()()函數(shù)函數(shù) putcharputchar()()函數(shù)是向標準輸出設備輸出一個字符函數(shù)是向標準輸出設備輸出一個字符, , 其調(diào)用格式為其調(diào)用格式為: : putchar(chputchar(ch);); 其中其中chch為一個字符變量或常量。為一個字符變量或常量。 putcharputchar()()函數(shù)的作用等同于函數(shù)的作用等同于printf(%c, chprintf(%c, ch); ); 例例6: 6: # #includestdioinclude .h main() main() char c: char c: / /* *定義字符變量定

60、義字符變量* */ / c=B; c=B; / /* *給字符變量賦值給字符變量賦值* */ / putcharputchar(c);(c); / /* *輸出該字符輸出該字符* */ / putcharputchar(x42);(x42); / /* *輸出字母輸出字母B B* */ / putchar putchar(0 x42);(0 x42); / /* *直接用直接用ASCIIASCII碼值輸出字母碼值輸出字母B B* */ / 從本例中的連續(xù)四個字符輸出函數(shù)語句可以分清字符變量的不從本例中的連續(xù)四個字符輸出函數(shù)語句可以分清字符變量的不同賦值方法。同賦值方法。 2. 2. getch()getch()、getche()getche()和和getchargetchar()()函數(shù)函數(shù) (1) (1) getch()getch()和和getchegetche()()函數(shù)函數(shù) 這兩個函數(shù)都是從鍵盤上讀入一個字符。其調(diào)用格式為這兩個函數(shù)都是從鍵盤上讀入一個字符。其調(diào)用格式為: : getch()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論