#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表示位址 指標 ...