一、c簡介
1、c語言簡介
c語言是一門語法 精簡的語言,它的關鍵字僅有32個,c語言以main函式為主函式,程式編譯執行後後,執行的就是main函式的內容,因此,縱觀很多c語言程式,形成了一道有趣的風景線:標頭檔案和許多c**檔案以main函式為中心和起始點構造,在main函式中呼叫了這些檔案中編寫的**,引用標頭檔案。c語言程式實質就是在程式中呼叫 c標準庫提供的函式、其它c庫提供的函式、作業系統提供的api介面、自己定義的函式,同時應用適當的資料結構和演算法來完成工作。
c語言雖然精簡,但卻很強大,它不但能完成比它更複雜的程式語言所做的事情,而且還能做其他語言不擅長的工作,比如作業系統,linux、unix的核心、gnome桌面等等都是c語言的傑作,尤其在系統核心的設計與研發領域,它的「兄弟」c++也不是對手(至今為止,沒有出現一款用c++製作的桌面系統或嵌入式系統的核心)。
2、c語言的關鍵字
auto :宣告自動變數
short :宣告短整型變數或函式
int: 宣告整型變數或函式
long :宣告長整型變數或函式
float:宣告浮點型變數或函式
double :宣告雙精度變數或函式
char :宣告字元型變數或函式
struct:宣告結構體變數或函式
union:宣告共用資料型別
enum :宣告列舉型別
typedef:用以給資料型別取別名
const :宣告唯讀變數
unsigned:宣告無符號型別變數或函式
signed:宣告有符號型別變數或函式
extern:宣告變數是在其他檔案正宣告
register:宣告暫存器變數
static :宣告靜態變數
volatile:說明變數在程式執行中可被隱含地改變
void :宣告函式無返回值或無引數,宣告無型別指標
if:條件語句
else :條件語句否定分支(與 if 連用)
switch :用於開關語句 case:開關語句分支
for:一種迴圈語句
do :迴圈語句的迴圈體
while :迴圈語句的迴圈條件
goto:無條件跳轉語句
continue:結束當前迴圈,開始下一輪迴圈
break:跳出當前迴圈
default:開關語句中的「其他」分支
sizeof:計算資料型別長度
return :子程式返回語句(可以帶引數,也可不帶引數)迴圈條件
猜數字:
我們來一步步打造乙個猜數字的遊戲
遊戲的大意是:輸入乙個1-500以內的正整數,程式根據玩家輸入的數字,提示數字比正確答案之前大,或者數字比正確答案之間小,比如要猜的數字是85,玩家第一次輸入90,提示比要猜的數字大,第二次輸入80,提示比要猜的數字小,第二次輸入85,提示猜中了。
下面來一步步打造這個遊戲,幫助大家快速複習c語言基礎知識。
(1)編寫輸入數字的**,並編譯執行。
dp@dp:~/cquick % cat guessnum.c
#include int main()
接著在終端編譯執行:
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:55
你輸入的數字是:55
dp@dp:~/cquick %
縱觀上面程式及其執行結果,可發現,c語言中可使用printf函式完成螢幕輸出,可使用scanf函式接受指定格式的資料錄入,此外,」\n」表示換行符,」%d」表示整數格式。
(2)限制輸入數字的範圍
遊戲的要求是1-500以內的整數
但是如果我們在上述程式中輸入900、-10等不符合要求的數字,仍然能通過,
你好,請輸入乙個數字:900
你輸入的數字是:900
你好,請輸入乙個數字:-10
你輸入的數字是:-10
系統沒有提示錯誤。因此,需要修改程式限制玩家輸入數字的範圍
#include int main()
else
}
執行程式:
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:200
你輸入的數字是:200
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:900
數字僅限於1-500之間,請重新執行本程式!
dp@dp:~/cquick %
上面程式使用了c語言的if…else…語句塊,這是乙個很多語言都有的機制(包括一些函式語言,比如haskell的if…then…else…),該語句塊分2個部分,第1個部分if語句段,表示如果if後面跟的條件滿足的話,執行if語句段,第2個部分是else語句段,如果if後的條件不滿足執行,什麼是條件滿足與不滿足,c語言可理解為如果條件的返回值非0表示條件滿足,如果是0則表示條件不滿足。
可以將多個條件組合成乙個綜合條件做為該語句塊的條件,方式是使用||(表示或者)或&&(表示並且),比如上面程式中的條件:mynum>500 ||mynum<1
但是c語言中有乙個關鍵字null,在c語言中,條件語句**現的null和0的值是一樣的,但null常用於指標和物件,0常用於int等整型數。這意味著,如果出現了下面類似的語句塊,就意味著是對含有指標變數(指標變數通常用於指向其它變數的記憶體位址,比如下面**中的mypoint1和mypoint2)的條件進行判斷了:
if (mypoint1!=null)while (條件)
通過迴圈,在玩家輸入錯誤數字的情況下,給玩家重新輸入的機會,而不是直接退出程式。
dp@dp:~/cquick % cat guessnum.c
#include int main()
else
}}
編譯並執行:
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:1234
數字僅限於1-500之間,請重新執行本程式!
你好,請輸入乙個數字:-12
數字僅限於1-500之間,請重新執行本程式!
你好,請輸入乙個數字:88
你輸入的數字是:88
上述程式中的while的條件中使用了「!」,它表示邏輯非。
上述程式中的while的條件中使用了「!」,它表示邏輯非。
也可以用do...while來實現它:
#include int main()
else
} while (!ispass);
}
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:8889
數字僅限於1-500之間,請重新執行本程式!
你好,請輸入乙個數字:12
你輸入的數字是:12
觀察上面2個程式可看出,使用了ispass這個變數做為是否退出迴圈的依據,也可以不使用ispass,直接通過break語句退出迴圈(注意,只能退出break語句本身所在的那層迴圈),
#include int main()
else
} }
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入乙個數字:8788
數字僅限於1-500之間,請重新執行本程式!
你好,請輸入乙個數字:66
你輸入的數字是:66
dp@dp:~/cquick %
經驗36 C 無名(大事,物 )
有時候,方便 它會使用匿名的東西。1 匿名事件 args.cookiegot s,e 不用專門再去寫方法,當然這樣的方式簡單介紹的時候使用。2 匿名物件 var ohlist ohmanager.getlist select x new 使用者介面或前後臺互動,指定某些字段,且新的物件,不用再去建實...
36 C 賦值 運算子過載
賦值符常常初學者的混淆。這是毫無疑問的,因為 在程式設計中是最基本的運算子,可以進行賦值操作,也能引起拷貝建構函式的呼叫。class person public person int id,int age 過載賦值運算子 person operator const person person pri...
C 快速入門
1.1 呼叫 gnu編譯器的預設命令是 g g prog.cc o prog unix 的 shell視窗 cc prog.cc 標準的輸入與輸出物件 處理輸入時使用的命令 cin cin為 istream型別物件 處理輸出時使用的命令 cout cout為 ostream型別物件 標準庫的另外兩個...