c語言輸入輸出語句_第1頁
c語言輸入輸出語句_第2頁
c語言輸入輸出語句_第3頁
c語言輸入輸出語句_第4頁
c語言輸入輸出語句_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 輸入輸出語句 在程序的運行過程中,往往需要由用戶輸入一些數據,這些數據經機器處理后要輸出反饋給用戶。通過數據的輸入輸出來實現人與計算機之間的交互,所以在程序設計中,輸入輸出語句是一類必不可少的重要語句。在C語言中,沒有專門的輸入輸出語句,所有的輸入輸出操作都是通過對標準I/O庫函數的調用實現。最常用的輸入輸出函數有scanfscanf( )( )、printfprintf( )( )、getchargetchar( ) ( ) 、putcharputchar ( )( )、gets()gets()、puts() puts() 。4.1 putchar 函數 當我們要把字符一個一個輸出時,可以

2、用putchar 函數,它是一個專門輸出字符的函數。其一般形式是: 該函數的功能是輸出“字符表達式”的值。 例如:putchar(A);輸出字符A; putchar(A+1); 輸出字符B; 在使用標準I/O庫函數時,要用預編譯命令“#inciude”將“stdio.h”文件包含到用戶源文件中,即: stdio.h是standard input&output的縮寫,它包含了與標準I/O庫函數有關的定義和函數聲明(具體見編譯預處理命令章節)。在需要使用標準I/O庫中的函數時,應在程序前使用上述預編譯命令。putchar ()#include 4.2 printf 函數4.2.1 prin

3、tf 函數的格式 printf函數的一般格式為: “輸出表列”是需要輸出的一些數據,可以是表達。例如: printf(%d %d,a+2,b); “格式控制”是用雙引號括起來的字符串,也稱“轉換控制字符串”,它用于控制輸出數據的格式。printf(,)“格式控制”包括兩種信息:(1)格式說明,由“%”和格式說明字符組成,如%d、%f。 表4.1 printf格式符格式字符 說明 d以帶符號的十進制形式輸出整型數(正數不輸出符號) o以8進制無符號形式輸出整型數(不輸出前導符0) x以16進制無符號形式輸出整型數(不輸出前導符0 x) u以無符號10進制形式輸出整型數 c以字符形式輸出,只輸出一

4、個字符 s輸出字符串 f以小數形式輸出單、雙精度數,隱含輸出6位小數 e以標準指數形式輸出單、雙精度數,數字部分小數位數為6位 g自動選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0 (2)普通字符,即需要原樣輸出的字符。 例如:printf(a=%d b=%d,a,b); 在上面雙引號中的字符除了“%d”和“%d”以外,還有非格式說明的普通字符(“a=”和“b=”),它們按原樣輸出。計算機在執行該語句時,首先輸出格式控制串中的“a=”,然后碰到一個格式說明“%d”,就從輸出表列中取第一個教據項a,按格式說明輸出該數據項值,然后原樣輸出格式控制串中的“b=”,又碰到第二個格式說明“

5、%d”,取輸出表列中的第二個數據項b,按格式說明輸出其值。4.2.2 格式說明字符 d d格式符格式符 用來控制整型數按十進制形式輸出。 %d,按整型數據的實際長度輸出。 %md,m為指定的輸出字段的寬度。如果數據的位數(包括負號)小于m,則右對齊左端補以空格,若大于m,則按實際位數輸出。 %-md,m為指定的輸出字段的寬度。如果數據的位數小于m,則左對齊補以空格,若大于m,則按實際位數輸出 %ld,輸出長整型數據。 o o格式符格式符l 以八進制數形式輸出整型數據。l 數值不帶符號,即將符號也一起作為八進制數的一部分輸出。l 對長整數(long型)可以用“%lo”格式輸出。l 可以指定字段寬

6、度,如“%8o”。l o格式符一般用于輸出正整數或無符號類型的數據。 x x格式符格式符l 以16進制形式輸出整型數據。l 不會出現負的十六進制數。l 可以用“%x”輸出長整型數。l 可以指定輸出字段的寬度,如“%12x”。l x格式符一般用于輸出正整數或無符號類型的數據。 u u格式符格式符l 用來輸出unsigned數據,即無符號數,以十進制形式輸出。l 一個有符號整型數(int型)也可以用%u格式輸出,此時把符號位當作數值看待。l 一個unsigned型數據也可以用%d格式輸出,按相互賦值的規則處理。unsigned數據也可用. %o或%x格式輸出。 c c格式符格式符l 用來輸出一個字

7、符。如: char c=a; printf(%c,c); 輸出字符a,注意“%c”的c是格式符,逗號右邊的C是變量名,不要搞混。l 一個整數,只要它的值在0255范圍內,也可以用字符形式輸,在輸出前將該整數轉換成換成相應的ASCII字符;反之,一個字符數據也可以用整型數形式輸出,但輸出的是其ASCII碼值。 s s格式符格式符l %s%s,用來輸出一個字符串(不包括雙引號)。l %ms%ms,輸出的字符串占m列,若字符串長度小于m,則“右對齊”,左邊補空格。如字符本身長度大于m,則突破m的限制,將字符串全部輸出。l %-ms%-ms,若字符串長度小于m,則在m列范圍內,“左對齊”,右邊補空格。

8、如字符本身長度大于m,則突破m的限制,將字符串全部輸出。l %m.ns%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左邊補空格。l %-m.ns%-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側,右面補空格。如果m省略或nm,則m自動取n值,即保證n個字符正常輸出。 f f格式符格式符用來輸出實型數(包括單、雙精度數),以小數形式輸出。l %f,不指定字段寬度,由系統自動指定,使整數部分全 部如數輸出,并輸入6位小數。應當注意,并非全部數字都是有效數字,單精度數的有效位數一般為7位。也就是說單精度數用%f格式輸出,只有前7位是有效的。雙精度數的有效

9、位數一般為16位,雙精度數用%f格式輸出時,只有前16位有效。l %m.nf,指定輸出的數據共占m列,其中有n位小數。如果數值長度(包括小數點和負號)小于m,則采用“右對齊”輸出,左端補空格。如果m省略則整數部分按實際寬度如數輸出。l %-m.nf與%m.nf基本相同,只是使輸出的數值“左對齊”,右端補空格。 e e格式符格式符以指數形式輸出實數。l %e,不指定輸出所占的寬度和數字部分小數位數,由系統自動指定給出6位小數,指數部分占5位(如e+002),其中“e”占一位,指數符號占一位,指數占3位。數值按標準化指數形式輸出(即小數點前必須有而且只有一位非零數字)。l %m.ne和%-m.ne

10、,m、n及“-”字符含義與之前相同。此處n為指數的數字部分(又稱尾數)的小數位數。如省略n,則n=6。如省略m,則自動使m等于數據應有的長度,即m=7+n。 g g格式符格式符 用來輸出實型數,它根據數值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。 若f=123.468,則: printf(”%f,%e,%g”,f,f,f); 輸出如下: 123.468000,1.234680e+002,123.468 用%f格式輸出占10列,用%e格式輸出占13列,用%g格式時,自動從前面兩種格式中選擇短者(今為%f格式為短),故選擇按%f格式輸出,且小數位中的最后三位為

11、無意義的0,不輸出。%g格式用得比較少。 在使用函數printf函數時,還有幾點要說明: 格式字符要用小寫字母,如%d不能寫成%D。 可以在printf函數中的“格式控制”字符串內包含轉義字符,如n、t、b 、r、f、377等,它們將原樣輸出。 上面介紹的d、o、x、u、c、s、f、e、g等字符,如不是用在“%”后面就作為普通字符,原樣輸出。 如果想輸出字符“%”,可以在“格式控制”字符串中用連續兩個%表示,或者使用轉義字符“45”。 不同的系統在格式輸出時,輸出結果可能會有一些小的差別,例如用%e格式符輸出實數時,有些系統輸出的指數部分為4位(如e+02)而不是5位(如e+002),前面數字

12、的小數部分為5位而不是6位等等。4.3 getchar 函數 此函數的作用是從鍵盤輸入一個字符,并把這個字符作為函數的返回值。getchar函數沒有參數,其一般形式為:getchar()。例4.8 請注意,getchar()只能接受一個字符。getchar函數得到的字符可以賦給一個字符變量或整型變量。也可以不賦給任何變量。也可以作為表達式的一部分 在一個函數中調用getchar函數,應該在函數的前面(或本文件開頭)用:#include#includemain()char c;c=getchar();putchar(c);在運行時,如果從鍵盤輸入字符a;a (輸入a后,按回車鍵字符才 送到內存)

13、a (輸出變量c的值a)4.4 scanf 函數4.4.1 4.4.1 一般形式一般形式 scanf函數的一般形式是: 其中,“地址表列”由若干個地址組成的表列,是可以接受數據的變量的地址。“格式控制”的含義同printf函數,但scanf中的“格式控制”是控制輸入的數據。例例4.9 main() int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%dn”,a,b,c); scanf(格式控制),)4.4.2 4.4.2 格式說明格式說明 和printf函數中的格式說明相似,scanf中的格式說明也以%開始,以一個格式

14、字符結束,中間可以插入附加格式說明字符(修飾符)。 如表4.3和4.4所示。 表表4.3 scanf4.3 scanf格式字符格式字符格式字符 說明 d用來輸入十進制整型數 o用來輸入八進制整型數 x用來輸入十六進制整型數 c用來輸入單個字符 s用來輸入字符串,將字符串送到一個字符數組中,在輸入時以為空白字符開始,以第一個分隔字符結束。系統自動把字符串結束標志0加到字符串尾部f用來輸入實型數,可以用小數形式或指數形式輸入 e與f作用相同,e與f可以互相替換 表表4.4 scanf4.4 scanf附加的格式說明字符附加的格式說明字符字符 說明 l用于輸入長整數數據(可用%ld、%lo、%lx)

15、,以及double型數據(用%lf或%le) h用于輸入端整型數據(可用%hd、%ho,%hx) m(正整數)指定輸入數據所占寬度(列數) * 表示本輸入項在讀入后不賦給相應的變量 (1)C語言在scanf中不使用%u格式符,對unsigned型數據,以%d、%o或%x格式輸入。 (2)可以指定輸入數據所占列數,系統自動按它截取所需數據。 (3)%后的附加說明符”*”,用來表示跳過它相應的數據。 (4)輸入數據時不能規定精度。4.4.3 scanf4.4.3 scanf函數的執行中應注意的問題函數的執行中應注意的問題scanf函數中的“格式控制”后面應當是變量地址,而不應是變量名。如果在“格式

16、控制”字符串中除了格式說明外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符,即原樣輸入。在用“% c”格式輸入字符時,空格字符和“轉義字符”都作為有效字符輸入。在輸入數據時,遇到以下情況時該數據認為結束; 遇空格,或回車鍵或跳格鍵(tab鍵)。 遇寬度結束時,如“%3d”,只取3列。 遇非法輸入。4.54.5 gets和puts函數o gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到回車結束, 但回車符 不屬于這個字符串。 其調用格式為: gets(s); 其中s為字符串變量(字符串數組名或字符串指針)。 gets(s)函數與scanf(%s, &s)相似, 但不完全相

17、同,使用scanf(%s, &s) 函數輸入字符串時存在一個問題, 就是如果輸入了空格會認為輸入字符串結束, 空格后的字符將作為下一個輸入項處理, 但gets() 函數將接收輸入的整個字符 串直到回車為止。o puts()函數用來向標準輸出設備(屏幕)寫字符串并換行。其調用格式為: puts(s); 其中s為字符串變量(字符串數組名或字符串指針)。 puts()函數的作用與語printf(%sn, s)相同4.6 程序舉例 例例4.104.10 輸入三角形的變長,求三角形面積。為簡單起見,設輸入的三邊長a,b,c能構成三角形。程序如下: #include main() float a,

18、b,c,s,area; scanf(%f%f%f,&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area); 例例4.11 從鍵盤輸入一個大寫字母,要求轉換成小寫字母輸入。程序如下: #include main() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2); 字符數組中常用的處理函數字符數組中常用的處理函數a a、strlenstrlen()()求字符串的長度:它是string length的縮寫。函數的原型為strlen(char);b b、strcpystrcpy()()復制字符串:其函數的原

溫馨提示

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

評論

0/150

提交評論