C语言各种类型数据的输出显示
之前我們使用 puts 來(lái)輸出字符串。puts 是 output string 的縮寫,只能用來(lái)輸出字符串,不能輸出整數(shù)、小數(shù)、字符等,我們需要用另外一個(gè)函數(shù),那就是 printf。
printf 比 puts 更加強(qiáng)大,不僅可以輸出字符串,還可以輸出整數(shù)、小數(shù)、單個(gè)字符等,并且輸出格式也可以自己定義,例如:
以十進(jìn)制、八進(jìn)制、十六進(jìn)制形式輸出;要求輸出的數(shù)字占 n 個(gè)字符的位置;控制小數(shù)的位數(shù)。**printf 是 print format 的縮寫,意思是“格式化打印”。**這里所謂的“打印”就是在屏幕上顯示內(nèi)容,與“輸出”的含義相同,所以我們一般稱 printf 是用來(lái)格式化輸出的。
示例
printf("今天天氣晴朗");這個(gè)語(yǔ)句可以在屏幕上顯示“今天天氣晴朗”,與puts(“今天天氣晴朗”);的效果類似。
輸出變量 abc 的值:
int abc=333; printf("%d", abc);這里就比較有趣了。先來(lái)看%d,d 是 decimal 的縮寫,意思是十進(jìn)制數(shù),%d 表示以十進(jìn)制整數(shù)的形式輸出。輸出什么呢?輸出變量 abc 的值。%d 與 abc 是對(duì)應(yīng)的,也就是說(shuō),會(huì)用 abc 的值來(lái)替換 %d。
下面我們來(lái)看個(gè)復(fù)雜點(diǎn)的:
int abc=999; printf("The value of abc is %d !", abc);會(huì)在屏幕上顯示:
The value of abc is 999 !字符串 “The value of abc is %d !” 中的 %d 被替換成了 abc 的值,其他字符沒有改變。這說(shuō)明 %d 比較特殊,不會(huì)原樣輸出,會(huì)被替換成對(duì)應(yīng)的變量的值。
再來(lái)看:
int a=100; int b=200; int c=300; printf("a=%d, b=%d, c=%d", a, b, c);會(huì)在屏幕上顯示:
a=100, b=200, c=300再次證明了 %d 與后面的變量是一一對(duì)應(yīng)的,第一個(gè) %d 對(duì)應(yīng)第一個(gè)變量,第二個(gè) %d 對(duì)應(yīng)第二個(gè)變量……
%d稱為格式控制符,它指明了以何種形式輸出數(shù)據(jù)。格式控制符均以%開頭,后跟其他字符。%d 表示以十進(jìn)制形式輸出一個(gè)整數(shù)。除了 %d,printf 支持更多的格式控制,例如:
%c:輸出一個(gè)字符。c 是 character 的簡(jiǎn)寫。%s:輸出一個(gè)字符串。s 是 string 的簡(jiǎn)寫。%f:輸出一個(gè)小數(shù)。f 是 float 的簡(jiǎn)寫。printf 支持更加復(fù)雜和優(yōu)美的輸出格式。
我們的完整程序
#include <stdio.h> int main() {int n = 100;char c = '@'; //字符用單引號(hào)包圍,字符串用雙引號(hào)包圍float money = 93.96;printf("n=%d, c=%c, money=%f\n", n, c, money);return 0; }輸出結(jié)果:
n=100, c=@, money=93.959999程序解析
1 . \n是一個(gè)整體,組合在一起表示一個(gè)換行字符。換行符是 ASCII 編碼中的一個(gè)控制字符,無(wú)法在鍵盤上直接輸入,只能用這種特殊的方法表示,被稱為轉(zhuǎn)義字符。
puts 輸出完成后會(huì)自動(dòng)換行,而 printf 不會(huì),要自己添加換行符,這是 puts 和 printf 在輸出字符串時(shí)的一個(gè)區(qū)別。
2 . //后面的為注釋。注釋用來(lái)說(shuō)明代碼是什么意思,起到提示的作用,可以幫助我們理解代碼。注釋雖然也是代碼的一部分,但是它并不會(huì)給程序帶來(lái)任何影響,編譯器在編譯階段會(huì)忽略注釋的內(nèi)容,或者說(shuō)刪除注釋的內(nèi)容。
3 . money 的輸出值并不是 93.96,而是一個(gè)非常接近的值,這與小數(shù)本身的存儲(chǔ)機(jī)制有關(guān),這種機(jī)制導(dǎo)致很多小數(shù)不能被精確地表示,即使像 93.96 這種簡(jiǎn)單的小數(shù)也不行。
我們不用變量,將數(shù)據(jù)直接輸出:
#include <stdio.h> int main() {float money = 93.96;printf("n=%d, c=%c, money=%f\n", 100, '@', money);return 0; }輸出結(jié)果與上面相同。
編程中,我們會(huì)經(jīng)常使用 printf,說(shuō)它是C語(yǔ)言中使用頻率最高的一個(gè)函數(shù)一點(diǎn)也不為過(guò)。
%ds輸出什么
%d 輸出整數(shù),%s 輸出字符串,那么 %ds 輸出什么呢?
示例
#include <stdio.h> int main() {int a=5555;printf("a=%ds\n", a);return 0; }運(yùn)行結(jié)果:
a=5555s從輸出結(jié)果可以發(fā)現(xiàn),%d被替換成了變量 a 的值,而s沒有變,原樣輸出了。這是因?yàn)?#xff0c; %d才是格式控制符,%ds在一起沒有意義,s僅僅是跟在%d后面的一個(gè)普通字符,所以會(huì)原樣輸出。
那么如何在字符串中書寫長(zhǎng)文本
假設(shè)現(xiàn)在我們要輸出一段比較長(zhǎng)的文本,它的內(nèi)容為:
如果將這段文本放在一個(gè)字符串中,會(huì)顯得比較臃腫,格式也不好看,就像下面這樣:
當(dāng)文本超出編輯窗口的寬度時(shí),可以選擇將文本換行,也可以選擇將文本隱藏(可以在編輯器里面自行設(shè)置),但是不管哪種形式,在一個(gè)字符串里書寫長(zhǎng)文本總是不太美觀。
當(dāng)然,你可以多寫幾個(gè) puts 函數(shù),就像下面這樣:
我不否認(rèn)這種寫法也比較美觀,但是這里我要講的是另外一種寫法:
#include <stdio.h>
int main()
{
puts(
“我們說(shuō)的是漢語(yǔ),是“中國(guó)語(yǔ)言”,只要把我們的需求告訴父母,”
“父母就會(huì)滿足,我們用“中國(guó)語(yǔ)言”來(lái)控制父母,”
“讓父母做我們喜歡的事情。”
);
return 0;
}
在 puts 函數(shù)中,可以將一個(gè)較長(zhǎng)的字符串分割成幾個(gè)較短的字符串,這樣會(huì)使得長(zhǎng)文本的格式更加整齊。
注意,這只是形式上的分割,編譯器在編譯階段會(huì)將它們合并為一個(gè)字符串,它們放在一塊連續(xù)的內(nèi)存中。
多個(gè)字符串并不一定非得換行,也可以將它們寫在一行中,例如:
#include <stdio.h>
int main()
{
puts(“今天” “明天” “后天”);
return 0;
}
我們所說(shuō)的 puts、printf,以及 fprintf、fputs 等與字符串輸出有關(guān)的函數(shù),都支持這種寫法。
如果感覺不錯(cuò)請(qǐng)點(diǎn)贊喲!!!
總結(jié)
以上是生活随笔為你收集整理的C语言各种类型数据的输出显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。