C語言 1 1 1 5學習筆記

2021-10-04 19:12:02 字數 4492 閱讀 6099

#include

main()

在不同作業系統該程式的編譯執行方式有所不同;圖形化作業系統的ide可以一鍵編譯執行,而在linux命令列下先得gcc編譯,再./a.out執行。

筱氚住:編譯執行c語言程式需要提前安裝編譯器。編譯器其實體積小卻擁有很大作用,反而很多時候裝乙個8-10g的ide對初學者能排上用場的地方似乎有點…visual c++6.0 已經被淘汰了,你學校還在用的話。。自己想辦法吧。

1-1 「」;符號必須採用英文輸入法,雙引號內部的字串任意,在其它地方使用中文輸入可能會導致編譯錯誤.

1-2 轉義符對c似乎不起作用,觀察出的結果和去掉轉意字元一樣的結果。

printf

("hello cworld!\n");

printf

("hello \cworld!\n"

);

兩者輸出結果在windows10上並無差別。

#include

main()

}

/* 這是多行注釋*/

用於簡單解釋程式或語句的作用

所有變數必須先宣告後使用,用於說明變數的屬性。

組成: 型別名 + 變數表

int 整數

char 字元(乙個位元組)

short 短整型

long 長整型

float 單精度浮點數(小數)

double 雙精度浮點型

各資料型別的大小取決去具體的計算機型號。

upper = 300;

為變數upper賦值300,語句都是以分號結束。

其含義是將「=」右邊的值賦值給左邊的變數,與我們常規意識的相等並不完全相同。相等在c語言中用 「==」兩個等於號來表示,多用於判斷條件中。

while (fahr <= upper)

首先判斷while後面的條件是否成立,如果條件成立(條件為真)就執行花括號裡的語句,然後再次判斷條件…往復迴圈直到條件不滿足(條件為假)時退出迴圈。

迴圈體while(或者for)後面跟著的單條語句或者花括號括起來的**塊。

while(i<10)

i = 2 * i;

縮排是為了更容易識別程式的邏輯結構,儘管不是強制要求,但是為了程式的可讀性和質量,建議使用合適的縮排表示程式的邏輯結構。

printf("%d\t%d\n", fahr, celsius);

printf標準輸出函式用於向控制台輸出內容。

輸出內容的引數(%d、%f、%c等)必須與對應的引數在數目和型別上匹配,不然會編譯不通過。

%d、%f、%c 分別對應整形、浮點型、字元型變數

%m.nf 可以指定浮點型資料輸出的寬度為整數部分顯示m位,小數部分顯示n位,不足的位數空格補齊,m可不寫

%md 指定整型資料的輸出位數為m位,如果m位不足以顯示完全,則指定無效,即為%d

5/9 //0

5.0/9

5.0/9.0

5/9按整型除法的計算規則,即捨去小數部分的餘數,保留整數部分,沒有四色五入的規則。

5.0/9.0 中的小數點表述該常熟為浮點數,運算規則按照浮點數進行運算。

筱氚備註:

浮點數運算末位會有捨入誤差,進行高精度計算時需自行設計高精度運算規則(大數運算設計)。

有興趣執行一下這個,先思考結果是什麼,執行看看結果和你想的一樣不一樣。

float temp =5/

9;float temp1 =

5.0/9;

float temp2 =

5.0/

9.0;

int tmp =5/

9;printf

("%f\t%f\t%f\t%d\n"

,temp,temp1,temp2,tmp)

;printf

("%.3f\t%.3f\t%d\t%d\n"

, temp, temp1, temp2, tmp)

;printf

("%.3f\t%d\t%.3f\t%d\n"

, temp, temp1, temp2, tmp)

; ```

#include

main()

for語句是對while語句的推廣,兩者都是迴圈語句,for語句有有兩個分號分隔開的三個部分。

fahr = 0

第一部分為初始化部分,可對多個變數進行初始化,僅在進入迴圈前執行一次。

fahr <= 300

第二部分是控制迴圈的測試或條件部分,如果該條件為真,就執行迴圈體,每次執行完迴圈體之後都會執行第三部分,然後重新進行該條件判斷,直到條件為假時退出迴圈體。

筱說:迴圈體為while、for後緊跟的單條語句或者由花括號括起來的語句。

fahr = fahr + 20

第三部分是增長步長部分,用於控制什麼時候結束迴圈。

#include

#define lower 0

//溫度表的下線

#define upper 300

//溫度表的上線

#define step 20

//溫度表的步長

main()

#define 名字 替換文字

使用符號常量進行定義之後,程式**現的所有在#define中定義的變數都將用相應的替換文字替換。

名字的命名規則與普通變數的形式相同,替換可以是數字,也可以是字串行。

符號常量名通常用大寫字母頻寫,方便與小寫字母拼寫的變數區分;需要注意的是 #define命令的末尾是沒有分號的!!!

筱說:c的這個特性在c++中儘管被相容,但是請盡量不要在c++中使用#define,替換為const

getchar()讀取乙個輸入字元

putchar()列印乙個字元

或許你認為printf函式以及夠了,但其實其它輸出輸入函式都是這兩函式的擴充。

#include

main()

}

eof表示「檔案結束指示符」

!=表示「不等於」

在目前的計算機中,儲存的基本單位是位(bit),char就是專門用來儲存這種字元型資料。getchar為了區分有效資料和輸入結束標誌,採取的做法是在沒有輸入時,getchar返回乙個與其它任何實際字元都不同的特殊值,這個值成為eof(end of file,檔案結束)。這個eof的實際值定義在標頭檔案中。

#include

main()

}

優化後的復讀機,由於不等於運算子(!=)的運算優先順序高於賦值運算子(=)的等級,因此務必在getchar函式前後加上小括號表示優先執行getchar函式。否則沒有小括號的該語句實際上等價於

c = ( getchar() != eof )

關於windows下eof實際輸入參見我的部落格

#include

/*本程式對輸入的字元個數進行計數,v1.0*/

main()

++nc;

運算子++的功能是執行加1操作,等價於nc = nc +1

對上面的**進行簡化。

#include

/*本程式對輸入的字元個數進行計數,v2.0*/

main()

#include

main()

==表示相等,而=表示賦值。換行符可用』\n』表示或者其ascii值10表示,現然\n更能容易被程式設計師理解。

#include

#define in 1

/*表示在單詞內*/

#define out 0

/*表示不在單詞內*/

main()

else

if(state == out)

}printf

("行數: %d\n單詞數: %d\n字元數: %d\n"

, n1, nw, nc)

;}

n1 = nw = nc = 0;對三個變數同時進行賦值。賦值結合次序為從右到左

等價於n1 = (nw = (nc = 0));

if( c == ' ' || c == '\n' || c == '\t')||表示邏輯或,&&表示邏輯與

學習筆記 C語言

1.for 1 等價於 while 1 2.程式的區域性變數存在於 堆疊 中,全域性變數存在於 靜態區 中,動態申請資料存在於 堆 中。3.區域性變數能否和全域性變數重名?能,區域性會遮蔽全域性。要用全域性變數,需要使用 4.對於乙個頻繁使用的短小函式,在c語言中應用什麼實現,在c 中應用什麼實現?...

C語言學習筆記

include include void swap int p1,int p2 void swapa int arr,int n void printfa int arr,int n int main int argc,char argv swap i,j printfa array,6 swapa...

c語言指標學習筆記

example 1 int a,b,p,q p a p a p q b p p a 錯誤,因為p實際上是乙個位址,而a是乙個整型值 p q 錯誤,因為這句話的意思是 將位址q指向的單元的值賦給位址p。而實際上p是乙個位址,是不能存值得 p a 錯誤 注意,如果這樣定義了 p,那麼 p表示位址 指標 ...