程式執行過程
1. 編譯形成目標**,
2. 鏈結鏈結函式庫,形成可執行的二進位制機器**
3. 執行在特定機器環境下執行c程式。
注釋兩種方式的注釋 單行注釋 // 多行注釋/* */
作用1.解釋說明 2.遮蔽** 除錯**是臨時將某部分**注釋掉,注釋掉的內容不會編譯到程式中 commond + / 注釋快捷鍵
c語言 第三章
變數賦值是要注意型別一致
變數的本質是記憶體中的儲存單元,任意乙個變數在記憶體中都需要占用一定的記憶體空間並且不同型別的資料變數在記憶體中占用的位元組數不一樣
浮點型不是絕對精確的,所以分為不同的精度
1位元組=8位二進位制資料
乙個int占用4個位元組=32位二進位制資料
short占用 2個位元組
long 不少於int的長度 在64位系統占用8個位元組 在32位系統中占用 4個位元組
float 占用4個位元組 double 占用8個位元組
char 字元型占用乙個位元組 乙個字元變數只能儲存乙個字元。要用單引號引起來
unsigned 無符號 signed有符號 二進位制的第一位表示符號 無符號的變數不能儲存負數
4個位元組 無符號32位 0~2^32 有符號-2^31~2^31-1
數值過大long 型別儲存不了得可以用double ,double 型別的資料是用科學技術儲存的所以存在精度問題。
sizeof 是乙個人運算子,不是函式 計算變數占用的位元組數 返回的是long型別的數 所以佔位符用ld
sizeof 可以計算某個變數,也可以計算某個型別所佔的大小 sizeof(int)
scanf 輸入的時候不能有\n 否則會出現錯誤的值
求最大公約數最小公倍數
第一種方法
求最小公倍數演算法
:最小公倍數
=兩整數的乘積
÷最大公約數
求最大公約數演算法:
(1)輾轉相除法
有兩整數a和
b: ①
a%b得餘數c
②若c=0,則
b即為兩數的最大公約數 ③
若c≠0
,則a=b
,b=c
,再回去執行①
例如求27和15
的最大公約數過程為:
27÷15
餘1215÷12
餘312÷3餘0
因此,3
即為最大公約數
第二種方法相減法
有兩整數a和
b: ①
若a>b
,則a=a-b ②
若a,則
b=b-a ③
若a=b,則a
(或b)即為兩數的最大公約數 ④
若a≠b
,則再回去執行①
例如求27和15
的最大公約數過程為: 27
-15=12( 15>12 )15-12
=3( 12>3 ) 12
-3=9( 9>3 ) 9-3
=6( 6>3 ) 6
-3=3( 3==3 )
因此,3即為最大公約數
窮舉法
有兩整數a和
b: ①
i=1 ②若
a,b能同時被
i整除,則t=
i ③i++ ④
若i <= a(或b)
,則再回去執行 ⑤
若i > a(或b)
,則t即為最大公約數,結束
改進: ①
i= a(或b)
②若a,b
能同時被
i整除,則
i即為最大公約數, 結束
③i--,再回去執行②
有兩整數a和
b: ①
i=1 ②若
a,b能同時被
i整除,則t=
i ③i++ ④
若i <= a(或b)
,則再回去執行②
⑤若i > a(或b)
,則t即為最大公約數,結束
改進: ①
i= a(或b)
②若a,b
能同時被
i整除,則
i即為最大公約數, 結束
③i--,再回去執行②
變數的命名規則: 1.由字母數字下劃線組成;不能由數字開頭
2 .c語言區分大小寫inta和int a 是兩個不同的變數
3.不能以語言的關鍵字作為變數名
變數的命名原則 1。見文知以2.長度不要過長3.多個單詞組成第二個單詞要大寫。
變數的初始化:給變數賦最初的值,1、宣告的同時進行初始化2.先宣告在賦值3.通過使用者輸入進行初始化(字元要用單引號引起來)
變數的值可以隨時修改
常量變數宣告前加const 關鍵字,就變成常量了,常量的值不能修改。const float pi=3.14159
常量已經建立就不能修改了,即使沒有賦值。所以只能在建立的同事賦初值;
printf(「」);輸出引號中的內容,除了輸出格式控制符以外的內容都會直接輸出
輸出變數的值需要用輸出格式控制符
scanf中是需要輸入的內容,除了控制佔位符,其他內容都要按照原樣輸入 所以scanf中一般只寫輸入格式控制符,其他什麼都不寫。
輸入時double型別的格式只有lf
空格也是字元字元變數會被賦值為空格。空格也是這樣
getchar()通過getchar讀取乙個字元可以避免回車被賦值給變數b
列舉型別 把所有可能的取值列舉出來,在選擇時可以直接選擇其中的某一值;
列舉型別屬於構造型別
enum color表示列舉型別,a是列舉變數
enum beijing b=changing; 這樣也是可以的
宣告變數的兩種方法
列舉值的取值是從前往後一次加1的修改乙個列舉值只會影響後邊的值,不會影響前邊的值可以同時給多個列舉元素賦值但是不要把列舉值設定成向同的值
陣列具有相同型別的元素的集合。
int age[100] int 型別的 陣列名為age 有100個元素的陣列
一. 宣告陣列的同時,初始化陣列中的元素int a[3]=; 可以省掉方括號內的數字3。
二. 先宣告再初始化只能乙個元素乙個元素初始化 int b[3] b[0]=1,b[1]=2,b[2]=3 在宣告時沒有初始化的陣列不能省掉方括號內的數字。因為沒有數字就不能確定宣告時要在記憶體上開闢儲存空間的長度。
通過下標去訪問每個陣列中的元素是有順序的,每個元素都對應著乙個位置,這個位置就是元素在陣列中的下標,下標是從0開始一次加1的。
二維陣列 元素是陣列的陣列是二維陣列
int [3][5] 等價於int [5] 只能省掉第乙個方括號裡的數字,第二個不能省
整數相除結果還是整數 結果沒有四捨五入,直接捨去小數;
取餘運算運算元不能是浮點行型資料、
++ 運算分為前置++ 和後置++
前置++ ++a a=a+1 –>c=a 後置++ c=a++ c=a àa++
賦值表示式的結果就是等號右邊的結果 printf(「%d\n」,a=5);
0為假 非0為真。
邏輯運算子
a&&b
全真為真全1
為1a || b 見1
為1表示式為真 值就是1 表示式為假 值就是0
邏輯短路
&&運算:
&&前邊表示式如果為假,後邊的表示式就不再計算。 ||
運算||
前邊的表示式如果為真,就不計算後邊的表示式
關係運算子
> < == <= >= !=;
表示式結果可以表示為真和假的表示式就叫做條件表示式
if(1+2)也可以作為了個條件表示式
if(a=3)賦值表示式結果就是等號右邊的結果,也可以當做表示式
三目運算子 a ?x:y 三目運算子表示式的結果是冒號前後的兩個值?前邊是條件表示式,如果條件表示式的結果為真返回:前邊的值,如果條件表示式為假返回:後邊的值
型別轉換
不同型別變數之間進行運算時要先進行型別轉換
float型別變數賦值給int型別變數需要做型別轉換
型別轉換分為強制型別轉換(顯示型別轉換)和隱式型別轉換
float pi=3.14; int b=(int)pi;
int b=pi; 隱式型別轉換
自動轉換遵循以下規則
1, 不同型別的資料運算首先要轉換成相同型別
2, 低精度轉換為高精度,資料型別位元組說少的轉換為位元組數多的
3, 所有浮點運算都要轉換為雙精度double進行運算
4, char型和short型都要先轉換成intchar型別使用ascll碼運算再運算
5, 賦值運算時直接把右邊的資料型別轉換成左邊的資料型別不用考慮前四點
printf("%.2f\n",5.0/2); 輸出結果保留兩位小數
const
宣告的常量在
vs中可以通過位址修改,但是在
xcode
中不能修改
經典面試題 錯題
10!=9 的值是
非零值
x!=0
就是真
運算子分類 1
.算術運算子
2.自增自減運算子
3.賦值運算子和表示式
4.二元符合運算子
5.一元運算子
sizeof
()操作符
6.關係運算子和邏輯運算子。
C語言知識點(三) 基礎知識
防止該標頭檔案被重複引用 對於 include,編譯器從標準庫路徑開始搜尋 filename.h 對於 include filename.h 編譯器從使用者的工作路徑開始搜尋 filename.h 1 引用本身是變數的別名,對引用的操作就是對變數本身的操作 2 引用必須要被初始化,指標可以不被初始化...
C語言基礎知識點複習
c語言中的資料型別通常有short int long float double char六種型別。在32位的cpu中,各個資料型別所佔的位元組數分別為2,4,4,4,8,1。1.c語言中常用各資料型別及其取值範圍 有符號整數型別 型別名稱 位元組數取值範圍 char 2 2 7 2 7 1 shor...
C 基礎知識點
1.單行注釋 多用於給變數注釋 2.多行注釋 多用於大段文字注釋 3.文件注釋 多用於給類和方法注釋 只能以字母 或者 符號開頭。開頭暫時不要用,它們有自己特殊的意義 後面可以跟任意的字母數字下劃線 命名法 1 camelclass駝峰命名法 變數名首單詞的首字母小寫,其餘的每個單詞的首字母大寫eg...