C printf 格式輸出
阿新 • • 發佈:2019-01-11
C語言中printf 格式輸出
Technorati 標籤: c,printf,輸出格式
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
printf()函式
作用:向終端輸出若干個任意型別的資料(putchar 只能輸出字元,而且只能是一個字元,而printf可以輸出多個數據,且為任意型別)
一、 printf()的一般格式
printf(格式控制,輸出列表);
例:int i = 3;
double f = 4.56;
printf("i = %d, f = %f\n", i,f);
printf()是函式,“格式控制”和“輸出列表”是其引數。可以表示為:printf(引數1, 引數2,引數3,....,引數n); 其中“引數1”表示“格式控制”;其餘引數表示“輸出 列表。
二、格式字元
1、d格式符:按十進位制格式輸出。
%d 輸出數字長度為變數數值的實際長度
%md m指定輸出資料的寬度。當資料本身的實際寬度小於m時,則資料左端補空格;若大於m,則按資料的實際位數輸出。
%ld,%mld l(小寫字母L)表示輸出“長整型”資料
%0md,%0mld 0(數字0)表示位數不足m時補0
注:%後面的m(位數控制)、0(位數不足補0)對於其他格式符也適用。
例:(□表示空格)int i = 123;
long j = 123456;
printf("%d□5d□05d,□ld□8ld□08ld",i,i,i,j,j,j);
123□□□123□00123,□123456□□□123456□00123456
2、o(字母)格式符:按八進位制格式輸出整數。(不會出現負數格式)
3、x格式符:按十六進位制格式輸出整數。(不會出現負數格式)
4、u格式符:以十進位制數形式輸出unsigned的整數。
[例3.2]main()
{ unsigned int a = 65535;
int b = -2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("a=%d,%o,%x,%u\n",b,b,b,b);
}
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
5、c格式符:用來輸出一個字元。一個整數,其值在0~255之間時也可以以字元的格式輸出 例:char c;
printf("%c",c);
一個整數,若其值在0~255範圍內,也可以用字元形式輸出,在輸出前,將該整數轉換為對應的ASCII字元。反之,一個字元資料也可以用整數形式輸出。
[例3.3]main()
{ char c = 'a';
int i = 97;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
}
執行結果為:
a,97
a,97
6、s格式符:用來輸出一個字串。%s 用來輸出一個字串,不含雙引號. 例:printf("%s","CHINA");
%ms m指定寬度(字串長度小於m時左補空格,大於時按實際寬度輸出)
%-ms 左對齊,不足m時右補空格
%m.ns 輸出佔m列,只取字串中左端n個字元.這n各字元輸出在m列的右側,左補空格.
%-m.ns 同上,右補空格
7、f格式符:按實數格式輸出。%f 整數部分全部顯示出來,小數部分顯示6位.但並不是顯示的所有數字都是有效數字
%m.nf 指定資料的寬度共為m列,其中有n位小數.如果數值長度小於m,則左側補空格。
%-m.nf 與%m.f類似,只是應在右側補空格
[例3.5]main()
{ float x, y;
x = 111111.111; y = 222222.222;
printf("%f", x+y);
}
程式輸出:
333333.328152(實數運算中誤差不可避免)
[例3.6]main()
{ double x,y; double x2,y2;
x = 1111111111111.111111111;y = 2222222222222.222222222;
x2= 1111111111111.111; y2= 2222222222222.222;
printf("%f %f", x+y, x2+y2);
}
程式輸出:
3333333333333.333010 3333333333333.333010(相同)
從[例3.6]和[例3.7]可以看出:
(1)實數運算中誤差不可避免。
(2)double(例3.7)比float(例3.6)精度高。
(3)float實數(單精度)的有效位數是7位,double實數(雙精度)的有效位數是16位,超過有效位數的輸出和輸入均無意義。
[例3.7]main()
{
float f = 123.456;
printf("%f□□f□□.2f□□%.2f□□%-10.2f",f,f,f,f,f);
}
輸出結果:
123.455994□□123.455994□□□□□□123.46□□123.46□□123.46
8、e格式符:以指數形式輸出實數。%e 按規範化指數形式輸出實數,系統自動給出6位小數,指數部分佔5位
%m.ne 與前面的敘述相同
%-m.ne 與前面的敘述相同
9、g格式符:它將根據數值的大小,自動選用f格式或e格式輸出資料,並且它不輸出無意義的0.
三、使用注意
%是printf()的格式說明符,若要直接輸出字元%,在格式控制中使用兩個連續的%。
例:
printf("%f%%", 1.0/3)
輸出:0.333333%。
Technorati 標籤: c,printf,輸出格式
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
printf()函式
作用:向終端輸出若干個任意型別的資料(putchar 只能輸出字元,而且只能是一個字元,而printf可以輸出多個數據,且為任意型別)
一、 printf()的一般格式
printf(格式控制,輸出列表);
例:int i = 3;
double f = 4.56;
printf("i = %d, f = %f\n", i,f);
printf()是函式,“格式控制”和“輸出列表”是其引數。可以表示為:printf(引數1, 引數2,引數3,....,引數n); 其中“引數1”表示“格式控制”;其餘引數表示“輸出 列表。
二、格式字元
1、d格式符:按十進位制格式輸出。
%d 輸出數字長度為變數數值的實際長度
%md m指定輸出資料的寬度。當資料本身的實際寬度小於m時,則資料左端補空格;若大於m,則按資料的實際位數輸出。
%ld,%mld l(小寫字母L)表示輸出“長整型”資料
%0md,%0mld 0(數字0)表示位數不足m時補0
注:%後面的m(位數控制)、0(位數不足補0)對於其他格式符也適用。
例:(□表示空格)int i = 123;
long j = 123456;
printf("%d□5d□05d,□ld□8ld□08ld",i,i,i,j,j,j);
123□□□123□00123,□123456□□□123456□00123456
2、o(字母)格式符:按八進位制格式輸出整數。(不會出現負數格式)
3、x格式符:按十六進位制格式輸出整數。(不會出現負數格式)
4、u格式符:以十進位制數形式輸出unsigned的整數。
[例3.2]main()
{ unsigned int a = 65535;
int b = -2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("a=%d,%o,%x,%u\n",b,b,b,b);
}
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
5、c格式符:用來輸出一個字元。一個整數,其值在0~255之間時也可以以字元的格式輸出 例:char c;
printf("%c",c);
一個整數,若其值在0~255範圍內,也可以用字元形式輸出,在輸出前,將該整數轉換為對應的ASCII字元。反之,一個字元資料也可以用整數形式輸出。
[例3.3]main()
{ char c = 'a';
int i = 97;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
}
執行結果為:
a,97
a,97
6、s格式符:用來輸出一個字串。%s 用來輸出一個字串,不含雙引號. 例:printf("%s","CHINA");
%ms m指定寬度(字串長度小於m時左補空格,大於時按實際寬度輸出)
%-ms 左對齊,不足m時右補空格
%m.ns 輸出佔m列,只取字串中左端n個字元.這n各字元輸出在m列的右側,左補空格.
%-m.ns 同上,右補空格
7、f格式符:按實數格式輸出。%f 整數部分全部顯示出來,小數部分顯示6位.但並不是顯示的所有數字都是有效數字
%m.nf 指定資料的寬度共為m列,其中有n位小數.如果數值長度小於m,則左側補空格。
%-m.nf 與%m.f類似,只是應在右側補空格
[例3.5]main()
{ float x, y;
x = 111111.111; y = 222222.222;
printf("%f", x+y);
}
程式輸出:
333333.328152(實數運算中誤差不可避免)
[例3.6]main()
{ double x,y; double x2,y2;
x = 1111111111111.111111111;y = 2222222222222.222222222;
x2= 1111111111111.111; y2= 2222222222222.222;
printf("%f %f", x+y, x2+y2);
}
程式輸出:
3333333333333.333010 3333333333333.333010(相同)
從[例3.6]和[例3.7]可以看出:
(1)實數運算中誤差不可避免。
(2)double(例3.7)比float(例3.6)精度高。
(3)float實數(單精度)的有效位數是7位,double實數(雙精度)的有效位數是16位,超過有效位數的輸出和輸入均無意義。
[例3.7]main()
{
float f = 123.456;
printf("%f□□f□□.2f□□%.2f□□%-10.2f",f,f,f,f,f);
}
輸出結果:
123.455994□□123.455994□□□□□□123.46□□123.46□□123.46
8、e格式符:以指數形式輸出實數。%e 按規範化指數形式輸出實數,系統自動給出6位小數,指數部分佔5位
%m.ne 與前面的敘述相同
%-m.ne 與前面的敘述相同
9、g格式符:它將根據數值的大小,自動選用f格式或e格式輸出資料,並且它不輸出無意義的0.
三、使用注意
%是printf()的格式說明符,若要直接輸出字元%,在格式控制中使用兩個連續的%。
例:
printf("%f%%", 1.0/3)
輸出:0.333333%。