今天介紹三個最簡答的c語言程式。
解題思路:在主函式中用printf函式原樣輸出以上文字
編寫程式:
#includeint main()
執行結果:
this is a c program.
以上執行結果是在visual c++ 6.0環境下執行程式時螢幕上得到的顯示。
程式分析:
先看第2行,其中main是函式的名字,表示「主函式」,main前面的int表示此函式的型別是int型別(整型)。在執行主函式後會得到乙個值(即函式值),其值為整型。程式第5行「return 0;」的作用是:當main函式執行結束前將整數0作為函式值,返回到呼叫函式處。每乙個c語言程式都必須有乙個main函式。函式體由花括號{}括起來。本例中主函式內有兩個語句,程式第4行是乙個輸出語句,printf是c編譯系統提供的函式庫中的輸出函式。printf函式中的雙撇號內的字串「this is a c program.」按原樣輸出。\n是換行符,即在輸出「this is a c program.」後,顯示屏上的游標位置移到下一行的開頭。這個游標位置稱為輸出的當前位置,即下乙個輸出的字元出現在此位置上。每個語句最後都有乙個分號,表示語句結束。
說明:c語言允許用兩種注釋方式:
(1)以//開始的單行注釋。如上介紹的注釋,這種注釋可以單獨佔一行,也可以出現在一行中其他內容的右側。此種注釋的範圍從//開始,以換行符結束。也就是說這種注釋不能跨行。如果注釋內容一行內寫不下,可以用多個單行注釋,如下面兩行是連續的注釋行:
//如注釋內容一行內寫不下
//可以在下一行重新用「//」,然後繼續寫注釋。
(2)以/*開始,以*/結束的塊式注釋。這種注釋可以包含多行內容。它可以單獨佔一行(在行開頭以/*開始,行末以*/結束),也可以包含多行。編譯系統在發現乙個/*後,會開始找注釋結束符*/,把二者間的內容作為注釋。
但應注意的是在字串中的//和/*都不作為注釋的開始,而是作為字串的一部分。如:
printf("//how do you do!\n");
或printf("/*how do you do!*/\n");
輸出分別是:
//how do you do!
和/*how do you do!*/
注釋可以用漢字或英文本元表示。
在c89只允許用/*...*/形式的注釋,而c++則允許用//形式的注釋,//注釋被稱為「c++風格」的注釋。但許多c編譯系統在c99之前就已支援這種方便的注釋方法,c99正式將//注釋納入c語言新標準。目前使用的一些編譯系統(如visual c++ 6.0, turbo c++ 3.0, gcc)等都支援//單行注釋。
例2:求兩個整數之和。
解題思路:設定3個變數,a和b用來存放兩個整數,sum用來存放和數。用賦值運算子「=」把相加的結果傳送給sum。
編寫程式:
#includeint main()
執行結果:
sum is 579
然後換行,程式執行結束。
程式分析:本程式的作用是求兩個整數a和b之和。第4行是宣告部分,定義sum為整型(int)變數。第5、6行是兩個賦值語句,使a和b的值分別為123和456.第7行使sum的值為a和b之和。第8行輸出結果,這個printf函式圓括號內有兩個引數,乙個是雙撇號中的內容sum is %d\n,它是輸出格式字串,作用是輸出使用者希望輸出的字元和輸出的格式。其中sum is是使用者希望輸出的字元,%d是指定的輸出格式,d表示用「十進位制整數」形式輸出。圓括號內第2個引數sum,表示要輸出變數sum的值。在執行printf函式時,將sum變數的值取代雙撇號中的%d。現在sum的值是579,所以在輸出時十進位制整數579取代了%d,\n是換行符。
最後輸出雙撇號中的字元「sum is 579」,然後換行程式執行結束。
由於本程式正常執行和結束,因此main函式的返回值應為0.現在並沒有去檢查和利用這個函式值,但是以後在某些時候會需要用到main函式值的。
例3:求兩個整數中的較大者。
解題思路:用乙個函式來實現求兩個整數中的較大者。在主函式中呼叫此函式並輸出結果。
編寫程式:
#include//主函式
int main()
//求兩個整數中的較大者的max函式
int max(int x, int y) // 定義max函式,函式值為整型,形參x和y為整型
執行結果:
8, 5
max=8
第1行輸入8和5,賦給變數a和b,第2行輸出「大數為8」。
程式分析:
本程式包含兩個函式:1.主函式main;2.被呼叫的函式max。
max函式的作用是將x和y中較大者的值賦給變數z。第16行return語句將z的值作為max的函式值,返回給呼叫max函式的函式(即主函式main)。返回值是通過函式名max帶回到main函式中去的。
程式第4行是對被呼叫函式max的宣告,為什麼要作這個函式宣告呢?因為在主函式中要呼叫max函式,而max函式的定義卻在main函式之後,對程式的編譯是自上而下進行的,在對程式第7行進行編譯時,編譯系統無法知道max是什麼,因而無法把它作為函式呼叫處理。為了使編譯系統能識別max函式,就要在呼叫max函式之前用「int max(int x ,int y);」,對max函式進行「宣告」,所謂宣告,通俗地說就是告訴編譯系統max是什麼,以及它的有關資訊。
程式第6行scanf是輸入函式的名字,該scanf函式的作用是輸入變數a和b的值。scanf後面圓括號中包括兩部分內容:一是雙撇號中的內容,它指定輸入的資料按什麼格式輸入。「%d」的含義是十進位制整數形式。二是輸入的資料準備放在**,即賦給哪個變數。現在,scanf函式中指定的是a和b,在a和b的前面各有乙個&,在c語言中「&」是位址符,&a的含義是「變數a的位址」,&b是「變數b的位址」。執行scanf函式,從鍵盤讀入兩個整數,送到變數a和b的位址處,然後把這兩個整數分別賦值給變數a和b。
程式第7行用max(a,b)呼叫max函式,在呼叫時將a和b作為max函式的引數的值分別傳送給max函式中的引數x和y,然後執行max函式的函式體,使max函式中的變數z得到乙個值(即x和y中大者的值),return(z)的作用是把z的值作為max函式值帶回到程式第7行=的右側,取代max(a,b),然後把這個值賦給變數c。
第8行輸出結果。在執行printf函式時,對雙撇號括起來的max=%d\n是這樣處理的:將max=原樣輸出,%d由變數c的值取代之,\n執行換行。
C語言中的三個迴圈
一 while 迴圈 如果我們把while翻譯作 當 那麼乙個while迴圈的意思就是 當條件滿足時,不斷地重複迴圈體內的語句。迴圈執行之前判斷是否繼續迴圈,所以有可能迴圈一次也沒有被執行。條件成立是迴圈繼續的條件。二 do while迴圈 在進入迴圈的時候不做檢查,而是在執行完一輪迴圈體的 之後,...
三個簡單的排序
氣泡排序 從第乙個元素開始,和它右邊的哪個元素比較,如果它比右邊的哪個元素大的話,就交換位置,經過第一次後,最右邊的那個元素,就是最大的哪個元素.第二次同樣,從第一元素開始,但是比較到倒數第二個元素,這樣右邊第二個元素就是第二高的元素.依次這樣下去,每次比較的結束值就是,比上一次小乙個,直到結束的標...
棧的三個簡單應用
根據真題需求,主要再回顧一下棧在括號匹配 表示式求值和共享棧的運用。問題描述 演算法思想 若是左括號,入棧 若是右括號,出棧乙個左括號判 斷是否與之匹配 檢驗到字串尾時,還要檢查棧是否為空,只有棧空,整個字串才是括號匹配的。演算法實現 bool check char str sharestack 棧...