C語言基礎

2021-08-02 02:21:04 字數 4976 閱讀 8436

編輯

源程式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 樣例說明 使用者第一次輸入的為資料個數...