1. 程式人生 > >c語言變量及輸入輸出

c語言變量及輸入輸出

span printf 間隔 定義 sca ble body pad 前綴

scanf:

  格式字符串的一般形式:%[*][輸入數據寬度][長度] 類型 (其中有方括號[] 的項為任選項。)

各項意義:

  1) 類型:表示輸入數據的類型,其格式符和意義如下表所示。

格式字符 意義
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f,e 輸入實型數(用小數形式或指數形式)
c
輸入單個字符
s 輸入字符串

  2) “ *”符: 用以表示該輸入項讀入後不賦予相應的變量,即跳過該輸入值。

    例:scanf("%d %*d %d",&a,&b);
    輸入: 1 2 3, 則a=1,2被跳過,b=3。
  3) 寬度: 用十進制整數指定輸入的寬度(即字符數)
    例1:scanf("%5d",&a);
    輸入: 12345678 則a=12345,其余部分被截去。
    例2:scanf("%4d%4d",&a,&b);

    輸入: 12345678 則a=1234,b=5678。
  4) 長度: 長度格式符為 l 和 h, l 表示輸入長整型數據(如%ld) 和雙精度浮點數(如%lf) 。 h 表示輸入短整型數據

printf:
  格式字符串的一般形式:[標誌][輸出最小寬度][. 精度][長度] 類型 (其中方括號[] 中的項為可選項。)


各項意義:
  1) 類型:類型字符用以表示輸出數據的類型,其格式符和意義如下表所示:

格式字符 意義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴 0)
x,X 以十六進制形式輸出無符號整數(不輸出前綴 Ox)
u 以十進制形式輸出無符號整數
f 小數形式輸出單、雙精度實數
e,E 指數形式輸出單、雙精度實數
g,G 以%f 或%e 中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字符
s 輸出字符串

  2) 標誌:標誌字符為-、 +、 #、空格四種,其意義下表所示:

標 誌 意義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值為正時冠以空格,為負時冠以負號
#

對 c,s,d,u 類無影響;對 o 類, 在輸出時加前綴 o;對 x 類, 在輸出時加前綴 0x

對 e,g,f 類當結果有小數時才給出小數點

  3) 輸出最小寬度:

    用十進制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或 0。
  4) 精度:

     精度格式符以“. ”開頭,後跟十進制整數。

    本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的個數;若實際位數大於所定義的精度數,則截去超過的部分
  5) 長度:

    長度格式符為 h,l 兩種, h 表示按短整型量輸出, l 表示按長整型量輸出。

註意

  1. 在輸入多個數值數據時,若格式控制串中沒有非格式字符作輸入數據之間的間隔則可用空格, TAB或回車作間隔。
  2. C 編譯在碰到空格,TAB,回車或非法數據(如對“%d”輸入“12A”時, A 即為非法數據)時即認為該數據結束。
  3. 在輸入字符數據時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符
    例:scanf("%c%c%c",&a,&b,&c);
    輸入:d e f 則a=‘d‘, b=‘ ‘, c=‘e‘。
    輸入:def 則a=‘d‘, b=‘e‘, c=‘f‘。
  4. 如果格式控制中有非格式字符輸入時也要輸入該非格式字符。只有“%”開頭的部分才會被後面的值替換掉。
    例1:scanf("%d,%d,%d",&a,&b,&c); (其中用非格式符“ , ”作間隔符)

    輸入應為:5,6,7
    例2:scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  5. 輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果將不正確。

    double型輸入輸出形式如下:

    double a;

    scanf("%lf",&a);

    printf("%f",a);

    註:在輸入double類型時需要使用%lf才能正常得到a值,而在輸出double類型時可以使用%f,因為在執行printf("%f",a)時編譯器將自動把float類型的參數轉化為double類型

  6. 整數值用%d輸出,實數用%f輸出  8.0和5.0被看做為實數、浮點數
  7. printf中使用“\n”表示換行
  8. 輸出25,printf("%d",25);
  9. 輸出025,printf("%03d",25);

c語言變量及輸入輸出