1. 程式人生 > 其它 >C語言----輸出語句(進階篇十四)

C語言----輸出語句(進階篇十四)

  。。。

  格式控制字元

    printf中的字元包括以下三種:

      (1)以%開頭的格式控制字元

      (2)以 \ 開頭的轉義字元

      (3)普通字元

    程式1

      printf的細節

// 14-1輸出語句printf細節

#include <stdio.h>

int main()
{
    long FmtLong = 99999999;   //長整型
    double FmtDouble = 88888888.88888888;   //雙精度型
    int FmtInt1 = 3, FmtInt2 = 4;  //兩個普通整型
/*整數輸出*/ printf("輸出整數:"); printf("%d\n", 13); //輸出整數 printf("輸出整數:"); printf("%i\n", -13); //有符號整數 printf("輸出無符號整數:"); printf("%u\n", +13); //無符號整好 printf("輸出單個字串:"); printf("%c\n", 'X'); //輸出單個字元 printf("輸出長整型:"); printf("%ld\n", FmtLong); //輸出長整型 printf(
"以16進位制輸出整數,沒有正負數:"); printf("%x\n", 13); //以16進位制輸出整數,沒有正負數 printf("以8進位制輸出整數,沒有正負數"); printf("%o\n", 13); //以8進位制輸出整數,沒有正負數 /*控制輸出*/ printf("控制寬度輸出,左端補空格:"); printf("%3d\n", 13); //控制寬度輸出 printf("控制寬度輸出:"); printf("%2d\n", 1234); printf("控制寬度輸出也適用於長整型:
"); printf("%2ld\n", FmtLong); //長整型控制寬度 printf("格式串後面的字元為普通字元"); //格式串後面的字元為普通字元,普通字元原樣輸出, //如下面 "%2ld3\n" 裡面的 3 會原樣輸出在最後一位,輸出的結果是:999999993 printf("%2ld3\n", FmtLong); /*浮點輸出*/ printf("\n"); //換行 printf("輸出浮點數:"); printf("%f\n", 100.33); //浮點數輸出會精確到後六位 輸出結果是:100.330000 printf("以指數形式輸出浮點數:"); printf("%e\n", 100.33); //以指數形式輸出浮點數 printf("以指數形式輸出浮點數:"); printf("%E\n", 100.33); //以指數形式輸出浮點數 printf("由系統自己決定採用e還是採用f格式輸出:"); printf("%g\n", 100.33); //系統自己決定採用e還是採用f的格式輸出 printf("輸出長浮點型:"); printf("%lf\n", FmtDouble); //輸出長浮點型 此函式有自動四捨五入的功能 printf("控制有效位數,左端補空格:"); //控制有效位數,左端補空格 //"%8.1fok\n" 8 代表總位數輸出8位。 1 代表小數點後面有一位 ok 是原樣輸出 printf("%8.1fok\n", 100.33); printf("控制有效位數,右端補空格:"); printf("%-8.1fok\n", 100.33); //控制有效位數,右端補空格 /*特殊輸出*/ printf("輸出一個換行:"); printf("\n"); //輸出一個換行 printf("輸出一個%號"); printf("%%\n"); //輸出一個%號 /*字串輸出*/ printf("用變數方式輸出字串:"); printf("%s\n", "你若盛開,蝴蝶自來"); //用變數的方式輸出字串 printf("原樣輸出字串:"); printf("不忘初心,方得始終,初心易守,始終難得\n"); //原樣輸出 printf("混合輸出:"); printf("天在高又怎樣,%s\n","踮起腳尖更接近陽光"); //混合輸出 /*綜合輸出*/ printf("同時輸出好幾個資料:"); printf("%d,%lf\n", FmtLong, FmtDouble); //同時輸出好幾個資料 printf("直接輸出結果:"); printf("%d\n", FmtInt1*FmtInt2); //直接輸出結果 printf("%d*%d=%d\n", FmtInt1, FmtInt2, FmtInt1*FmtInt2); }

    ※雙引號中出現一個%,後面一定要跟隨一個輸出常量,變數或表示式。

    ※兩個連續的%表示輸出一個%

    ※一旦出現格式控制字元和轉義字元,它們立即會尋找後面緊跟著的字元進行組合。但是它們前面的算普通字元。如:

      printf(“a,%c\n”,t);

    %c只能算一個字元,它會輸出t中的字元。\n又算一個字元,它會輸出回車。而前面的a,(逗號)只能算普通字元,會原樣輸出。

    ※在格式控制串中,格式說明與輸出項從左到右在型別上必須一一對應匹配。如果不匹配,資料不能正確輸出,這時系統並不報錯。如:

      printf(“%d,%d”,i)

    因為只有一個引數,第二個%d會輸出一個亂碼。

    ※%m.nf指定輸出的資料共佔m列,其中有n位小數。如果數值長度小於m,則左端補空格,超過m列,原樣輸出。

    ※%-m.nf與%m.nf基本相同,只是使輸出的數值向左端靠,右端補空格。

    ※用f或lf格式列印浮點數時,系統會自動四捨五入。

    ※格式控制字元除了X,E,G外,其它字元必須用小寫字母,如%d不能寫成%D。

  轉義字元

    原本字元常量只能是一個字元,但是因為有些字元看不見或是不好表達,所以特殊的字元常量可以是多個字元,它們以 \ 開頭後面跟著其它字元,這也叫“轉義字元”。

    下面是C語言中所有的轉義字元:

      \n 回車換行

      \t 橫向跳格(代表Tab鍵)

      \v 豎向跳格(印表機專用)

      \r 回車

      \f 換頁(印表機專用)

      \b 退格(代表Backspace鍵)

      \\ 反斜槓字元 \

      \’ 單引號

      \” 雙引號

      \ddd 以八進位制形式代表的ASCII字元

      \xhh 以十六進位制形式代表的ASCII字元

      \0 空值

    下面這行程式碼:

      printf(“%c”,’\x41’);

    會輸出字元A

    注意:

      ※格式控制字元“%”只能在printf和scanf中使用,而轉義字元“\”可以用在所有字元和字串處理函式中。

      ※轉義字元“\”會取後面所有符合條件的字元,並且只取一次,就失去作用,後面的都按普通字元輸出。如:\x41n就會輸出An

    程式2

      轉義字元輸出

// 14-2轉義字元輸出
#include <stdio.h>

 main()
{
     printf("沒有轉義字元:");
     printf("abc");            //沒有轉義字元
     printf("d");
     printf("\n");

     printf("回車:");
     printf("abc\r");        //回車 \r
     printf("d");
     printf("\n");

     printf("退格:");
     printf("abc\b");        //退格 \b
     printf("d");
     printf("\n");

     printf("豎向跳格只用作在印表機上,這裡是亂碼:");
     printf("abc\v");        //豎向跳格只用作在印表機上,這裡是亂碼\v\f
     printf("d");
     printf("\n");

     printf("引號和右斜槓只能用轉義字元輸出:");
     printf("\\\n");
     printf("\'\n");

     printf("空字元:\n");
     printf("\0\0\0");        //空字元什麼也不做

     printf("用ASCII碼輸出:");
     printf("\101\n");        //用八進位制輸出ASCII碼
     printf("\x42\n");        //用十六進位制輸出ASCII碼

     printf("製表符演示:\n");
     printf("%d\t%d\t%d\t\n", 1, 2, 3);
     printf("%d\t%d\t%d\t\n", 100, 200, 300);
     printf("%d\t%d\t%d\t\n", 999, 10000, 4444);

     printf("-------------------------\n");
     printf("|%d\t|%d\t|%d\t|\n", 1, 2, 3);
     printf("|%d\t|%d\t|%d\t|\n", 100, 200, 300);
     printf("|%d\t|%d\t|%d\t|\n", 999, 10000, 4444);
     printf("-------------------------\n");

}