C語言探索之旅 | 第一部分第六課:變量的世界(三),顯示變量內容

做者 謝恩銘,公衆號「程序員聯盟」。 轉載請註明出處。 原文:www.jianshu.com/p/497355a6b…git

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

內容簡介


  1. 用 printf 顯示變量內容
  2. 用 scanf 提取程序中的輸入
  3. 總結
  4. 第一部分第七課預告

1. 用 printf 顯示變量內容


變量相關的內容有點多,通過上一課 C語言探索之旅 | 第一部分第五課:變量的世界(二),變量聲明 ,今天咱們來學習變量的最後一個知識點:顯示變量內容。github

在上幾課中,咱們已經知道了如何用 printf 函數在屏幕上顯示內容。但那時候還只是顯示一些簡單的文字,好比「Hello World」,「你好嗎」,「飯吃了沒」,等等。緩存

下面咱們來學習如何用 printf 函數來顯示變量內容。bash

用 printf 來顯示變量內容其實也是相似,只不過在咱們要插入變量內容的地方要用一個特殊符號代替,例如:函數

printf("你有 %d 只狗");
複製代碼

這裏的特殊符號實際上是 % 加上一個字母(上例中是 d),這個字母代表要顯示什麼類型,d 表示要顯示整數。下表列出了一些經常使用的字母和對應的變量類型:學習

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

能夠看到用於顯示 float(單精度浮點數)和 double(雙精度浮點數)的符號是同樣的(由於說到底它們都是浮點數嘛)。測試

在適當的時候,咱們還會介紹其餘的符號,暫時只須要記得這幾個就夠了。ui

咱們差很少要完工了。咱們在確切的位置指明瞭咱們要顯示一個整數,可是咱們還沒指定要顯示哪個數。因此上面的代碼還不完整,必須告訴 printf 函數咱們要顯示的變量。spa

其實也很簡單,咱們只須要在雙引號後面再寫一個逗號,在逗號後面寫上咱們要顯示的變量的名字,以下:

printf("你有 %d 只狗", numberOfDogs);
複製代碼

程序運行時,printf 函數就會把 %d 替換成變量 numberOfDogs 的值了。

咱們用一個完整的程序來測試一下:

#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;
}
複製代碼

運行以上程序,屏幕會顯示:

你有 5 只狗
**** 跑了一隻狗 ****
啊呀,你只剩下 4 只狗了
複製代碼

很簡單吧!

顯示多個變量


用一個 printf 函數也能夠顯示多個變量的值

以下

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

    return 0;
}
複製代碼

運行,輸出:

你有 5 只狗,還有 4 只貓
複製代碼

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


從如今開始,變量對咱們會愈來愈重要,也會愈來愈有意思。

咱們來學習這一課的最後一個知識點:如何提取用戶輸入的值,並將其儲存到變量裏面。

爲了可以讓用戶在控制檯輸入,咱們須要藉助另外一個函數:scanf 。

這個函數和 printf 函數算是一對,用法有點相似。scanf 負責輸入,printf 負責輸出。

給出一個 scanf 使用的例子:

int numberOfDogs = 0;
scanf("%d", &numberOfDogs);
複製代碼

是否是和 printf 很相似呢,可是咱們注意到了,numberOfDogs 前面多了一個 & 符號。爲何 printf 裏面變量名前不須要這個符號而 scanf 卻須要呢?

回答是:這個符號的做用暫時沒必要深究,知道 scanf 是這樣用就好,之後的課程咱們再一塊兒學習。相信我,若是咱們必定要講的話,今天的課就結束不了了。

scanf 和 printf 函數還有一點差別:

對於 float 和 double 來講,printf 裏面他們的替代符號都是 %f, 可是在 scanf 裏面卻不同。在 scanf 中,float 是 %f,而 double 是 %lf 。

例如:

double sum = 0;
scanf("%lf", &sum);
複製代碼

下面是一個完整的例子,演示如何用 scanf 提取用戶輸入,存儲到變量中,再用 printf 函數輸出變量的值:

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

    printf("你身上有多少錢 ? ");
    scanf("%d", &sum);   // 請求用戶輸入錢數
    printf("你有 %d 塊錢啊,那還不快快地交出來 !\n", sum);
        
    return 0;
}
複製代碼

運行,程序會先顯示「你身上有多少錢 ?」,而後光標會停在後面,等待用戶輸入;用戶輸入數據以後,按回車,printf 那句話纔會顯示,以下:

你身上有多少錢 ? 12000
你有 12000 塊錢啊,那還不快快地交出來 !
複製代碼

好了,你應該已經明白了大體的原理。多虧了 scanf 函數,咱們的程序能夠和用戶交互啦!

還要注意 scanf 的一個「任性」的地方,就是雖然上例中咱們指定了用戶輸入整數類型,可是假如用戶輸入的是其餘類型,scanf 也不會出錯:

  • 好比說用戶輸入 5600.45,這是一個浮點數,不是整數,可是 scanf 仍是會將其讀入,可是儲存在 sum 變量裏的數會變成 5600(捨去了小數部分,只保留整數部分)。

  • 一樣的,假如用戶輸入一些奇怪的字符,例如:g^b@&* ,那變量 sum 的值就不會變,仍是它的初始值(上例中是 0,由於咱們初始化 sum 爲 0, 假如沒有初始化,那 sum 的值會是任意的)。

3. 總結


「變量的世界」系列終於結束了,咱們回顧一下重要的知識點:

  1. 咱們的電腦有好幾種不一樣的存儲器類型,從速度最快到最慢排序是:寄存器,高速緩存,內存,硬盤。

  2. 硬盤中的數據不會隨電腦關機而消失,其餘三類存儲器都是暫時性的儲存。

  3. 爲了存儲信息,咱們的電腦須要把數據存放在存儲器裏,通常暫時的數據都是存放到內存裏,固然也可能存放到寄存器或者高速緩存中,咱們不用操心,電腦自會分配。

  4. 在咱們的源代碼中,變量指的是暫時存放在內存中(主要),在程序運行期間值會改變的數據。

  5. 咱們也有 constant 變量(只讀變量,不是常量),值在程序運行期間不會改變。

  6. 變量有好多類型,每種類型在內存中所佔據的空間大小不同。通常來講,int 類型是聲明整數的首選,而 double 類型是聲明浮點數的首選。

  7. scanf 函數使用戶能夠輸入數據,printf 函數輸出數據。

4. 第一部分第七課預告


今天的課就到這裏,一塊兒加油吧!

下一課:C語言探索之旅 | 第一部分第七課:運算那點事


我是 謝恩銘,公衆號「程序員聯盟」運營者,慕課網精英講師 Oscar 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」

相關文章
相關標籤/搜索