C語言探索之旅 | 第一部分第六課:變量的世界(三)萍聊,顯示變量?jī)?nèi)容

作者 謝恩銘问芬,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處寿桨。
原文:http://www.reibang.com/p/497355a6ba4d

《C語言探索之旅》全系列

內(nèi)容簡(jiǎn)介


  1. 用 printf 顯示變量?jī)?nèi)容
  2. 用 scanf 提取程序中的輸入
  3. 總結(jié)
  4. 第一部分第七課預(yù)告

1. 用 printf 顯示變量?jī)?nèi)容


變量相關(guān)的內(nèi)容有點(diǎn)多此衅,經(jīng)過上一課 C語言探索之旅 | 第一部分第五課:變量的世界(二),變量聲明 亭螟,今天我們來學(xué)習(xí)變量的最后一個(gè)知識(shí)點(diǎn):顯示變量?jī)?nèi)容挡鞍。

在上幾課中,我們已經(jīng)知道了如何用 printf 函數(shù)在屏幕上顯示內(nèi)容预烙。但那時(shí)候還只是顯示一些簡(jiǎn)單的文字墨微,比如“Hello World”,“你好嗎”扁掸,“飯吃了沒”翘县,等等。

下面我們來學(xué)習(xí)如何用 printf 函數(shù)來顯示變量?jī)?nèi)容谴分。

用 printf 來顯示變量?jī)?nèi)容其實(shí)也是類似锈麸,只不過在我們要插入變量?jī)?nèi)容的地方要用一個(gè)特殊符號(hào)代替,例如:

printf("你有 %d 只狗");

這里的特殊符號(hào)其實(shí)是 % 加上一個(gè)字母(上例中是 d)狸剃,這個(gè)字母表明要顯示什么類型掐隐,d 表示要顯示整數(shù)。下表列出了一些常用的字母和對(duì)應(yīng)的變量類型:

格式 類型
%d int
%ld long
%f float
%f double

可以看到用于顯示 float(單精度浮點(diǎn)數(shù))和 double(雙精度浮點(diǎn)數(shù))的符號(hào)是一樣的(因?yàn)檎f到底它們都是浮點(diǎn)數(shù)嘛)钞馁。

在適當(dāng)?shù)臅r(shí)候虑省,我們還會(huì)介紹其他的符號(hào),暫時(shí)只需要記得這幾個(gè)就夠了僧凰。

我們差不多要完工了探颈。我們?cè)诖_切的位置指明了我們要顯示一個(gè)整數(shù),但是我們還沒指定要顯示哪一個(gè)數(shù)训措。所以上面的代碼還不完整伪节,必須告訴 printf 函數(shù)我們要顯示的變量光羞。

其實(shí)也很簡(jiǎn)單,我們只需要在雙引號(hào)后面再寫一個(gè)逗號(hào)怀大,在逗號(hào)后面寫上我們要顯示的變量的名字纱兑,如下:

printf("你有 %d 只狗", numberOfDogs);

程序運(yùn)行時(shí),printf 函數(shù)就會(huì)把 %d 替換成變量 numberOfDogs 的值了化借。

我們用一個(gè)完整的程序來測(cè)試一下:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int numberOfDogs = 5;  // 一開始潜慎,你有5只狗

    printf("你有 %d 只狗\n", numberOfDogs);
    printf("**** 跑了一只狗 ****\n");
    numberOfDogs = 4;      // 剛跑了一只狗,只有4只了
    printf("啊呀蓖康,你只剩下 %d 只狗了\n", numberOfDogs);

    return 0;
}

運(yùn)行以上程序铐炫,屏幕會(huì)顯示:

你有 5 只狗
**** 跑了一只狗 ****
啊呀,你只剩下 4 只狗了

很簡(jiǎn)單吧蒜焊!

顯示多個(gè)變量


用一個(gè) printf 函數(shù)也可以顯示多個(gè)變量的值

如下

int main(int argc, char *argv[])
{
    int numberOfDogs = 5, numberOfCats = 6;
    printf("你有 %d 只狗倒信,還有 %d 只貓\n", numberOfDogs, numberOfCats);

    return 0;
}

運(yùn)行,輸出:

你有 5 只狗泳梆,還有 6 只貓

2. 用 scanf 提取程序中的輸入


從現(xiàn)在開始鳖悠,變量對(duì)我們會(huì)越來越重要,也會(huì)越來越有意思鸭丛。

我們來學(xué)習(xí)這一課的最后一個(gè)知識(shí)點(diǎn):如何提取用戶輸入的值竞穷,并將其儲(chǔ)存到變量里面。

為了能夠讓用戶在控制臺(tái)輸入鳞溉,我們需要借助另一個(gè)函數(shù):scanf 瘾带。

這個(gè)函數(shù)和 printf 函數(shù)算是一對(duì),用法有點(diǎn)類似熟菲。scanf 負(fù)責(zé)輸入看政,printf 負(fù)責(zé)輸出。

給出一個(gè) scanf 使用的例子:

int numberOfDogs = 0;
scanf("%d", &numberOfDogs);

是不是和 printf 很類似呢抄罕,但是我們注意到了允蚣,numberOfDogs 前面多了一個(gè) & 符號(hào)。為什么 printf 里面變量名前不需要這個(gè)符號(hào)而 scanf 卻需要呢呆贿?

回答是:這個(gè)符號(hào)的作用暫時(shí)不必深究嚷兔,知道 scanf 是這樣用就好,以后的課程我們?cè)僖黄饘W(xué)習(xí)做入。相信我冒晰,如果我們一定要講的話,今天的課就結(jié)束不了了竟块。

scanf 和 printf 函數(shù)還有一點(diǎn)差異:

對(duì)于 float 和 double 來說壶运,printf 里面他們的替代符號(hào)都是 %f, 但是在 scanf 里面卻不一樣浪秘。在 scanf 中蒋情,float 是 %f埠况,而 double 是 %lf 。

例如:

double sum = 0;
scanf("%lf", &sum);

下面是一個(gè)完整的例子棵癣,演示如何用 scanf 提取用戶輸入辕翰,存儲(chǔ)到變量中,再用 printf 函數(shù)輸出變量的值:

int main(int argc, char *argv[])
{
    int sum = 0; // 把錢數(shù)初始化為零

    printf("你身上有多少錢 ? ");
    scanf("%d", &sum);   // 請(qǐng)求用戶輸入錢數(shù)
    printf("你有 %d 塊錢啊狈谊,那還不快快地交出來 !\n", sum);
        
    return 0;
}

運(yùn)行金蜀,程序會(huì)先顯示“你身上有多少錢 ?”,然后光標(biāo)會(huì)停在后面的畴,等待用戶輸入;用戶輸入數(shù)據(jù)之后尝胆,按回車丧裁,printf 那句話才會(huì)顯示,如下:

你身上有多少錢 ? 12000
你有 12000 塊錢啊含衔,那還不快快地交出來 !

好了煎娇,你應(yīng)該已經(jīng)明白了大致的原理。多虧了 scanf 函數(shù)贪染,我們的程序可以和用戶交互啦缓呛!

還要注意 scanf 的一個(gè)“任性”的地方,就是雖然上例中我們指定了用戶輸入整數(shù)類型杭隙,但是假如用戶輸入的是其他類型哟绊,scanf 也不會(huì)出錯(cuò):

  • 比如說用戶輸入 5600.45,這是一個(gè)浮點(diǎn)數(shù)痰憎,不是整數(shù)票髓,但是 scanf 還是會(huì)將其讀入,但是儲(chǔ)存在 sum 變量里的數(shù)會(huì)變成 5600(舍去了小數(shù)部分铣耘,只保留整數(shù)部分)洽沟。

  • 同樣的,假如用戶輸入一些奇怪的字符蜗细,例如:g^b@&* 裆操,那變量 sum 的值就不會(huì)變,還是它的初始值(上例中是 0炉媒,因?yàn)槲覀兂跏蓟?sum 為 0, 假如沒有初始化踪区,那 sum 的值會(huì)是任意的)。

3. 總結(jié)


“變量的世界”系列終于結(jié)束了橱野,我們回顧一下重要的知識(shí)點(diǎn):

  1. 我們的電腦有好幾種不同的存儲(chǔ)器類型朽缴,從速度最快到最慢排序是:寄存器,高速緩存水援,內(nèi)存密强,硬盤茅郎。

  2. 硬盤中的數(shù)據(jù)不會(huì)隨電腦關(guān)機(jī)而消失,其他三類存儲(chǔ)器都是暫時(shí)性的儲(chǔ)存或渤。

  3. 為了存儲(chǔ)信息系冗,我們的電腦需要把數(shù)據(jù)存放在存儲(chǔ)器里,一般暫時(shí)的數(shù)據(jù)都是存放到內(nèi)存里薪鹦,當(dāng)然也可能存放到寄存器或者高速緩存中掌敬,我們不用操心,電腦自會(huì)分配池磁。

  4. 在我們的源代碼中奔害,變量指的是暫時(shí)存放在內(nèi)存中(主要),在程序運(yùn)行期間值會(huì)改變的數(shù)據(jù)地熄。

  5. 我們也有 constant 變量(只讀變量华临,不是常量),值在程序運(yùn)行期間不會(huì)改變端考。

  6. 變量有好多類型雅潭,每種類型在內(nèi)存中所占據(jù)的空間大小不一樣。一般來說却特,int 類型是聲明整數(shù)的首選扶供,而 double 類型是聲明浮點(diǎn)數(shù)的首選。

  7. scanf 函數(shù)使用戶可以輸入數(shù)據(jù)裂明,printf 函數(shù)輸出數(shù)據(jù)椿浓。

4. 第一部分第七課預(yù)告


今天的課就到這里,一起加油吧漾岳!

下一課:C語言探索之旅 | 第一部分第七課:運(yùn)算那點(diǎn)事


我是 謝恩銘轰绵,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營者,慕課網(wǎng)精英講師 Oscar 老師尼荆,終生學(xué)習(xí)者左腔。
熱愛生活,喜歡游泳捅儒,略懂烹飪液样。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巧还,隨后出現(xiàn)的幾起案子鞭莽,更是在濱河造成了極大的恐慌,老刑警劉巖麸祷,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澎怒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阶牍,警方通過查閱死者的電腦和手機(jī)喷面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門星瘾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惧辈,你說我怎么就攤上這事琳状。” “怎么了盒齿?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵念逞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我边翁,道長(zhǎng)翎承,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任符匾,我火速辦了婚禮审洞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘待讳。我一直安慰自己,他們只是感情好仰剿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布创淡。 她就那樣靜靜地躺著,像睡著了一般南吮。 火紅的嫁衣襯著肌膚如雪琳彩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天部凑,我揣著相機(jī)與錄音露乏,去河邊找鬼。 笑死涂邀,一個(gè)胖子當(dāng)著我的面吹牛瘟仿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播比勉,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劳较,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了浩聋?” 一聲冷哼從身側(cè)響起观蜗,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衣洁,沒想到半個(gè)月后墓捻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坊夫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年砖第,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撤卢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厂画,死狀恐怖凸丸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情袱院,我是刑警寧澤屎慢,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忽洛,受9級(jí)特大地震影響腻惠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欲虚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一集灌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧复哆,春花似錦欣喧、人聲如沸谬运。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毡咏。三九已至冒黑,卻和暖如春逢唤,著一層夾襖步出監(jiān)牢的瞬間迈着,已是汗流浹背袍祖。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工久免, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浅辙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓阎姥,卻偏偏與公主長(zhǎng)得像记舆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呼巴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容