編輯
源程式f.c,經過編譯生成目標程式f.obj, 經過連線生成可執行程式f.exe, 執行即得結果。
c語言資料型別:
1.基本型別:
a.整形:基本整數,短整型,無符號型,長整形
b.字元型
c.實數(浮點型):單精度型,雙精度型
d.列舉型別
2.構造型別:
a.陣列型別
b.結構體型別
c.共用體型別
3.指標型別
4.空型別
基本資料型別描述
字 符形式
所對應的資料型別 描述
\n換行(輸出位置移到下一行開頭)
\t橫向跳格(輸出位置移到下乙個輸出區)
\b退格(輸出位置移到前一列)
\r回車(輸出位置移到本行行首)
\\反斜槓字元『\』
\'或\"
單,雙引號
\ddd
八進位制ddd所代表的字元,如'\101'為字元a,'\32'為空格
\xhh
十六進製制hh所代表的字元,如'\x41'為字元a,'\x20'為空格
算術運算子的優先順序與結合級
運算符號
優先順序結合性
+,-(正負運算子),++,--
高自右至左
*,/,%
中自左至右
+,-(加減運算子)
低自左至右
復合賦值運算:
a*=b+3,等效為a=a*(b+3).
逗號運算子:
用逗號將多個表示式連線起來的式子為逗號表示式,運算子中最低的一種,按順序運算。
a=3*5,a*4 最後值為60。
強制型別轉換:
(型別名)(表示式)
(float)(a+b) /*將a+b的值強制轉換為float*/
賦值運算時的型別轉換:
int i;
i=3.24+7%4; /*只保留整數部分,結果為6*/
字母大小寫轉換:
b=a-32; 小寫變大寫
資料的輸入與輸出:
(1)單個字元輸出函式:
char c='a';
putchar('a');
putchar(c);
putchar('\n');
putchar(65); 輸出ascii碼十進位制對應的字母a
putchar('\101'); 輸出ascii碼八進位制對應的字母a
(2)單個字元輸入函式:
char c;
c=getchar(); 輸入
putchar(c); 輸出
(3)printf 函式
printf("格式控制字串",表示式列表)
(4)scanf 函式
scanf("格式控制字串",表示式列表)
例:轉換時間格式
#include
void main()
執行結果:
01:30:32
printf函式的附加說明符及意義
附加 說 明符
意義字母l或l
輸出長整型資料時,加在d,i,o,x,x,u前
字母h或h
輸出短整型資料時,加在d,i,o,x,x,u前
m(正整數)
資料輸出的域寬(列數),當資料實際輸出列數超出m時,則按實際寬度輸出,當少於m時,則在資料前補空格到m列。
n(正整數)
輸出實數時,表示輸出n位小數,自動在n+1位四捨五入
-輸出的資料域內左對齊,右邊補空格
+輸出的數字前帶有正負號
0輸出的資料域內右對齊,左邊補0
#用在0,x,x前,使輸出八進位制或十進位制數時輸出前導0或0x
scanf的附加說明符及意義
附加 說明符
意義字母l或l
加在d,i,o,x,x,u前,表示輸入長整型資料,加在f,e前,表示輸入double型資料
字母h或h
加在d,i,o,x,x,u前,表示輸入短整型資料
m(正整數)
指定輸入資料所佔域寬
*表示對應的輸入項在讀入後不賦給相應的變數,不需要為其指定引數位址
優先順序:
算術運算子》關係運算子》賦值運算子
關係運算子的優先順序:>、<、>=、<=、具有相同的優先順序並且高於相同優先順序的!=、==。
邏輯運算子:ii或,!非,&&與
*c語言中,用括號括起來的語句塊與乙個單語句等價。
if語句實現分支:
if(表示式)
二分支結構 if…else
if(表示式)
語句1;
else
語句2;
if …else巢狀
if(表示式1)
語句1;
else if(表示式2)
語句2;
…… else
語句n;
if(…)
if(…) 語句1;
else (語句2,可以不寫為空);
else
if(…) 語句3;
else (語句4,可以不寫為空);
用switch語句實現多分支的程式結構:
switch(表示式)
*default子結構對於switch結構而言不是必須的。
「case 常量表示式」只相當於乙個語句標號,表示式的值與某標號相等則轉向該標號執行,但不能執行完該語句後跳出來,所以後面的case語句都將一一執行。每一段語句後加break,則能跳出來。
switch(表示式)
條件表示式及其分支結構:
表示式1?表示式2:表示式3;
*求值規則:若1的值為真,則表示式2的值作為該條件表示式的值,否則則取3的值。
例:max=(a>b)?a:b;
條件運算子的優先順序低於關係運算子和算術運算子,但高於賦值符。條件運算子的結合方向為自右至左。
例:a>b?a:c>d?c:d 應理解為 a>b?a:(c>d?c:d)
while迴圈語句
while(表示式) 語句; /*或者花括號裡的一串***/
*只要表示式為非0,就能一直迴圈下去。
do…while迴圈
初始值: do
while(條件);
*這個迴圈和while迴圈的不同在於,它先執行迴圈中的語句,然後再判斷表示式是否正確,如為真則繼續迴圈,否則停止。它至少迴圈一次,而while迴圈可能一次也不執行。
for迴圈語句
for(迴圈變數賦初值;迴圈條件;迴圈變數增量)
變體:
1.無迴圈終止條件的迴圈(沒有break)
for(;;) printf("i will run forever");
2.與while一樣
i=1;
for(;i<100;)
3.for迴圈裡的逗號表示式
for(i=1,j=10;i
printf("i=%d,j=%d\n",i,j);
4.迴圈體為空
for(表示式1;表示式2;表示式3);
例:for(sum=0,i=1;i<=100;sum+=i,i++);
語句標號及goto語句
goto語句成為無條件轉移語句。
一般形式為
goto 標號;
標號:語句
continue語句
意義:結束本次迴圈,即不再執行迴圈體中continue後的語句,轉入下一次迴圈條件的判決與執行,只結束本層的本次迴圈,並不跳出迴圈。
ascii碼表大概內容:
0~31及127(共33個)是控制字元或通訊專用字元(其餘為可顯示字元),如控制符:lf(換行)、cr(回車)、ff(換頁)、del(刪除)、bs(退格)、bel(響鈴)等;通訊專用字元:soh(文頭)、eot(文尾)、ack(確認)等;ascii值為8、9、10 和13 分別轉換為退格、製表、換行和回車字元。它們並沒有特定的圖形顯示,但會依不同的應用程式,而對文字顯示有不同的影響。
32~126(共95個)是字元(32是空格),其中48~57為0到9十個阿拉伯數字。
65~90為26個大寫英文本母,97~122號為26個小寫英文本母,其餘為一些標點符號、運算符號等。
注:本文適合初學者或者對c不熟練的學習者回顧使用,後續還會繼續補充
reference:c語言程式設計案例教程(高國紅等主編)
break
break
注:本文適合初學者或者對c不熟練的學習者回顧使用,後續還會繼續補充
reference:c語言程式設計案例教程(高國紅等主編)
c 語言基礎
三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...
c語言基礎
1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...
C語言基礎
找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...