1. 程式人生 > >C語言入門學習(02)——HelloWorld程式分析&printf函式的用法

C語言入門學習(02)——HelloWorld程式分析&printf函式的用法

 

接著上一篇 C語言入門學習(01)——C程式設計環境的搭建及HelloWorld程式 繼續

//本文不是最終版本,該教程還在編寫整理中。

目錄

Part_2.1:HelloWorld程式的解釋

Part_2.2:printf函式的用法

Part_2.2.1:函式概念簡介

Part_2.2.2:用printf函式輸出字串

 

Part_2.3 printf函式的練習


Part_2.1:HelloWorld程式的解釋

搭建好環境之後,我們來仔細分析一下上一節搭建環境時候的寫的那幾行程式碼,程式碼如下:

#include <stdio.h>
int main(void)
{
	printf("Hello world!");
	return 0;
}

上面程式碼中第四行的printf("Hello world!");放在後面printf函式的基本用法中解釋。剩下的五行程式碼,要想解釋清楚,會涉及到很多的知識點和新的概念名詞,並不適合現在講,等程式設計有一定的基礎了之後再理解這五行程式碼會很容易。所以這裡只告訴大家,這五行程式碼是後面每段程式都必須要有的,可以理解為是一種固定的格式、一種固定的模板、框架,只要寫C語言的程式,首先寫好這五行程式碼,然後在這五行程式碼的基礎上,去加別的東西(比如加一句printf("Hello world!");)。所以這五行程式碼,暫時不用理解,把它當做寫C語言的一種格式和模板即可,隨著學習的深入,會逐步解釋這五行程式碼。

即,寫C語言程式的模板如下,在今後的很長時間裡,寫C語言程式都要寫先寫好這幾行程式碼,然後開始在空行的地方開始寫別的程式碼。

#include <stdio.h>
int main(void)
{

	return 0;
}

可以試一下把上面的程式碼敲一遍,然後單擊編譯連結按鈕,正常情況下,也會彈出一個視窗的,但是沒有顯示任何內容,截圖如下:

這應該算是最簡單的C語言程式了,當然要想省還可以把第五行的return 0;和第一行的#include<stdio.h>也都刪掉,即花括號裡面什麼都不寫,執行效果也會是上圖那樣,包括之前的HelloWorld源程式,把return 0;那句刪掉,花括號裡面只保留一個printf("Hello world!");,程式依然能執行。但是我建議不要去掉這句話,因為去掉之後會顯得不專業、不舒服、不完整。當然具體這句話從何而來,以後介紹函式這個概念的時候會提到。

Part_2.2:printf函式的用法

這裡只介紹printf函式最簡單最基本的用法——輸出字串到螢幕上。

printf("Hello world!");

這行程式碼是在螢幕上顯示了一個字串—— Hello world!。它是通過呼叫printf這個庫函式實現的,這裡提到了一個新的概念——(庫)函式。首先簡單解釋下函式的概念,具體函式這個概念以後會講到。

還有字串這個概念,一個英文字母、一個英漢標點符號、一個漢字,這都叫做字元,好多字元連起來,就叫做字串。

Part_2.2.1:函式概念簡介

對於函式可以這樣理解:函式是可以幫我們完成一些特定功能的一段程式碼,比如這個printf函式就幫我們完成了在螢幕上輸出一句話的功能。函式可以是自己寫的,也可以是別人寫好你直接呼叫的,這是函式的簡單概念。

下面這一段內容是對函式的進一步解釋,可以簡單看一下,能理解多少算多少,現在理解不了也沒關係。

函式可以供我們的程式呼叫,即我們寫程式時想實現某個功能,就可以看看有沒有現成的函式可以呼叫,如果有現成的函式可以呼叫,就直接在我們的程式裡呼叫函式即可實現相關功能。如果沒有現成的函式,我們可能就需要自己寫函式,然後在我們的程式裡呼叫,以實現相關功能。比如程式想實現在螢幕上輸出一句話的功能,就可以直接呼叫printf函式,並且把要輸出的這句話告訴給printf函式,該功能即可實現。但比如程式想實現對一組數字從小到大排序的功能,就沒有現成的函式可以呼叫,需要自己寫一個可以實現排序功能的函式,然後呼叫排序函式並把要排序的這一組數字告訴排序函式,它就能幫你把這組數字排好順序。

介紹另一個概念——庫函式,首先庫函式也是函式,庫函式是把大家最常用的函式都寫好放到一個檔案裡面,供大家使用的一種方式,庫函式所在的檔案叫做庫檔案,如果程式需要使用庫函式,那麼程式就要把相關的庫載入到自己的程式中。比如printf函式就是一個庫函式,它被放在stdio.h這個庫檔案裡面,因此如果我們想使用printf函式,就需要在我們的程式里加載stdio.h檔案。

這樣我們前面的HelloWorld程式第一行程式碼就可以解釋清楚——載入庫函式檔案stdio.h。C語言中,載入庫函式檔案的格式如下:

#include<stdio.h>
#include<string.h>
#include<math.h>

上面三行程式碼演示了載入庫檔案的格式,三行程式碼分別載入了三個庫函式檔案,第一個檔案stdio.h大家已經見過了,stdio是“standard buffered input&output (帶緩衝的標準輸入輸出)”的縮寫,即這個檔案裡面放的都是和輸入輸出相關的函式。第二個庫檔案叫string.h,string,即字串,所以這個庫檔案裡面放的函式都是和字串處理相關的函式。第三個庫檔案math.h,猜也能猜到這裡面放了一堆和數學相關的函式,比如要對一個數開方,取絕對值等一些操作就可以用這個庫裡面的函式。

Part_2.2.2:用printf函式輸出字串

printf函式的基礎用法就是在螢幕上輸出字串,看如下兩行程式碼,猜一下它的執行結果是什麼。

#include <stdio.h>
int main(void)
{
    printf("Hello world!")
    printf(用printf函式輸出字串");
    reutrn 0;
}

這應該很好猜吧,當然猜完也要去寫一遍驗證一下,執行結果如下:

Hello world!用printf函式輸出字串

這段程式告訴告訴我們:printf函式輸出的內容即可以是英文字元,也可以是中文字元。

但是上面的輸出結果並不是很好看,我們更多時候希望第一次printf輸出的內容顯示在第一行,第二次用printf函式時輸出內容顯示在第二行,即我們希望輸出是下面這樣的格式:

Hello world!
用printf函式輸出字串

為此,我們要學習一個新的東西——回車換行(‘\n’)。

嘗試執行一下下面的程式碼(建議最好不要複製這裡的程式碼,而是自己從頭敲一遍):

#include <stdio.h>
int main(void)
{
    printf("Hello world!\n")
    printf(用printf函式輸出字串");
    reutrn 0;
}

還可以再試試下面的兩段程式碼:

#include <stdio.h>
int main(void)
{
    printf("Hello world!\n\n");
    printf("Hello world!");
    return 0;
}
#include <stdio.h>
int main(void)
{
    printf("Hello world!\nHello world!\nHello world!\n");
    return 0;
}

我就不貼出來結果了,自己對比一下原始碼和執行結果,就應該能發現'\n'在的程式碼中的作用就是將游標移動到下一行的開始位置繼續輸出剩餘內容。上面兩段你程式碼應該沒什麼難度。

來看一下下面這個有點變態的程式:

#include <stdio.h>
int main(void)
{
    printf("n\nnn\nnnn\nnnnn\nnnnnn\n");
    return 0;
}

執行結果如下圖:

注意紅色方框圈出來的部分,表示五個換行符('\n'),其餘的字元‘n’都是輸出內容了,這段程式主要是想說明編譯器是如何識別換行符和普通的字元'n'的——編譯器是靠反斜線來區分的,如果printf函式雙引號中出現了一個反斜線(‘\’),那編譯器就會看下一個字元是不是‘n’,如果是的話,那麼編譯器就知道在這裡要換行了。

小結一下回車換行符('\n')相關內容:

(1)回車換行符用在printf函式中,用於對輸出內容的換行進行控制,一個'\n'換一行,兩個'\n'換兩行。

(2)回車換行符可以出現在printf函式的雙引號中的任意位置,其作用都是換行。

 

Part_2.3 printf函式的練習

1.用printf函式輸出如下內容:

*
**
***
****
*****

如果理解了上面那個輸出一對字母n的程式,那這個程式應該不是問題吧,答案如下,給出兩種解:

#include <stdio.h>
int main(void)
{
    printf("*\n**\n***\n****\n*****\n");
    return 0;
}
#include <stdio.h>
int main(void)
{
    printf("*\n");
    printf("**\n");
    printf("***\n");
    printf("****\n");
    printf("*****\n");
    return 0;
}