因為考完了,沒什么心思整理了,筆記可能會有點亂。大家將就看看吧~
1、輸入
在C語言中,沒有專門的輸入輸出語句,所有的輸入輸出操作都是通過對標准I/O庫函數的調用實現。最常用的輸入輸出函數有scanf( )、printf( )、getchar( )和putchar( )。
<1>putchar函數
當我們要把字符一個一個輸出時,可以用putchar函數,它是一個專門輸出字符的函數。其一般形式是:putchar(<字符表達式>)
該函數的功能是輸出“字符表達式”的值。
putchar(‘A’); //輸出字符'A';
putchar(‘A’+1); //輸出字符'B';
<2>printf 函數
1)printf格式符
| 格式字符 |
說明 |
| d |
以帶符號的十進制形式輸出整型數(正數不輸出符號) |
| o |
以8進制無符號形式輸出整型數(不輸出前導符0) |
| x |
以16進制無符號形式輸出整型數(不輸出前導符0x) |
| u |
以無符號10進制形式輸出整型數 |
| c |
以字符形式輸出,只輸出一個字符 |
| s |
輸出字符串 |
| f |
以小數形式輸出單、雙精度數,隱含輸出6位小數 |
| e |
以標准指數形式輸出單、雙精度數,數字部分小數位數為6位 |
| g |
自動選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0 |
2)d格式符
用來控制整型數按十進制形式輸出。
%d,按整型數據的實際長度輸出。
%md,m為指定的輸出字段的寬度。如果數據的位數(包括負號)小於m,則右對齊左端補以空格,若大於m,則按實際位數輸出。
%-md,m為指定的輸出字段的寬度。如果數據的位數小於m,則左對齊補以空格,若大於m,則按實際位數輸出
%ld,輸出長整型數據,也可以%mld,%-mld
3)x格式符
以16進制形式輸出整型數據。不會出現負的十六進制數。可以用“%x”輸出長整型數。可以指定輸出字段的寬度,如“%12x”。x格式符一般用於輸出正整數或無符號類型的數據。
4)u格式符(補碼)
用來輸出unsigned數據,即無符號數,以十進制形式輸出。
一個有符號整型數(int型)也可以用%u格式輸出,此時把符號位當作數值看待。
一個unsigned型數據也可以用%d格式輸出,按相互賦值的規則處理。unsigned數據也可用%o或%x格式輸出。
5)c格式符
一個整數,只要它的值在0~255范圍內,也可以用字符形式輸,在輸出前將該整數轉換成換成相應的ASCII字符;反之,一個字符數據也可以用整型數形式輸出,但輸出的是其ASCII碼值。
6)s格式符
%s,用來輸出一個字符串(不包括雙引號)。用“%s”輸出時,遇‘\0’結束。
數組中有多個‘\0’時,遇第一個結束。scanf中%s輸入時,遇空格或回車結束。
%ms,輸出的字符串占m列,若字符串長度小於m,則“右對齊”,左邊補空格。如字 符本身長度大於m,則突破m的限制,將字符串全部輸出。
%-ms,若字符串長度小於m,則在m列范圍內,“左對齊”,右邊補空格。如字符本身 長度大於m,則突破m的限制,將字符串全部輸出。
%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側, 左邊補空格。
%-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側,右面補空格。如果m 省略或n>m,則m自動取n值,即保證n個字符正常輸出。
7)e格式符
以指數形式輸出實數。
%e,不指定輸出所占的寬度和數字部分小數位數,由系統自動指定給出6位小數, 指數部分占5位(如e+002),其中“e”占一位,指數符號占一位,指數占3位。數值按標准化指數形式輸出(即小數點前必須有而且只有一位非零數字)。
%m.ne和%-m.ne,m、n及“-”字符含義與之前相同。此處n為指數的數字部分(又稱尾數)的小數位數。如省略n,則n=6。如省略m,則自動使m等於數據應有的長度,即m=7+n。
8)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格式輸出,且小數位中的最后三位為無意義的0,不輸出。%g格式用得比較少。
2)格式字符要用小寫字母,如%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),前面數字的小數部分為5位而不是6位等等。
〈3〉getchar 函數
此函數的作用是從鍵盤輸入一個字符,並把這個字符作為函數的返回值。getchar函數沒有參數,其一般形式為:getchar()。
請注意,getchar()只能接受一個字符。getchar函數得到的字符可以賦給一個字符變量或整型變量。也可以不賦給任何變量。也可以作為表達式的一部分
在一個函數中調用getchar函數,應該在函數的前面(或本文件開頭)用:#include<stdio.h>
<4>scanf 函數
| 字符 |
說明 |
| l |
用於輸入長整數數據(可用%ld、%lo、%lx),以及double型數據(用%lf或%le) |
| h |
用於輸入短整型數據(可用%hd、%ho,%hx) |
| m(正整數) |
指定輸入數據所占寬度(列數) |
| * |
表示本輸入項在讀入后不賦給相應的變量 |
注意: C語言在scanf中不使用%u格式符,對unsigned型數據,以%d、%o或%x 格式輸入。
可以指定輸入數據所占列數,系統自動按它截取所需數據。
%后的附加說明符”*”,用來表示跳過它相應的數據。
輸入數據時不能規定精度。
scanf函數中的“格式控制”后面應當是變量地址,而不應是變量名。
如果在“格式控制”字符串中除了格式說明外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符,即原樣輸入。
在用“%c”格式輸入字符時,空格字符和“轉義字符”都作為有效字符輸入。
在輸入數據時,遇到以下情況時該數據認為結束:
遇空格,或回車鍵或跳格鍵(tab鍵)。
遇寬度結束時,如“%3d”,只取3列。
遇非法輸入。1234a123o.26
