這個系列是用來解決學校c語言課程的,並不適用於acm和oi
本系列部落格分為2部分,分別是 c語言程式設計筆記(網課) 和 課堂總結(線下課)
歡迎**ssw02的部落格:
1.常量和變數定義
上一章節末尾留了這麼乙個程式
#include int main()
其中int price = 0
是乙個先前沒有見過的語句
翻譯下:price是變數名稱,int是指price的變數型別 , = 是賦值的意思, 0 則是給price賦的初值
變數代表了乙個儲存單元,其中的值是可以改變的
因為在乙個程式中可能要使用到若干個變數,為了區別不同的變數,必須要給每個變數(儲存單元)取乙個名(變數名),該變數(儲存單元)儲存的值稱為變數的值,變數中能夠儲存值的型別被稱為比變數的型別
變數定義的一般形式為《型別名稱》《變數名稱》
例如: int price float price2 char a
但是變數名稱並不是什麼都可以,我們要避免使用一些特殊的名稱,這個我們後面慢慢說
常量則是乙個值不可改變的儲存單元,在定義時加上const即可
e.gconst int price = 15;
如果在程式中嘗試對已經初始化的常量(下面講解)進行更改,一定會報錯
2.賦值語句
在c和c++中,=
作為賦值運算子,並不表示「等於」的判斷(等於是 == )
賦值語句則是有賦值表示式加上分號構成的表示式語句,一般形式為:變數 = 表示式 ;
, e.g price = 1024
右側的表示式也可以為賦值表示式,既可以連續使用 =
e.g.a=b=c=d=1024;
等效於d=1024;c=d;b=c;a=b;
,這裡要注意順序是從右到左依次賦值。
在進行賦值運算時,如果賦值運算子兩邊的資料型別不同,系統將自動進行資料型別的轉換,在合法的情況下,將賦值運算子右側的資料型別轉換為左側的資料型別。(不合法的話會出現錯誤)
但是剛接觸c,還是盡量保證運算子兩邊的資料型別相同
3.變數初始化
常量一樣同下。
一般形式為:《型別名稱》《變數名稱》=《初始值》
比較一下int price = 5;
和int price;
我們發現後者是沒有初值的,此時的price對應的值是申請變數時對應位置儲存的值,應當是亂碼,即乙個未知的數字。
但是但是,如果我們的price定義為全域性變數,還是會預設為0的初值;只有在定義為區域性變數時才會出現乙個未知的數字
執行一下下面兩個程式就可以知道全域性變數和區域性變數的區別
#include int price;//全域性變數
int main()
#include int main()
習題**:
int price, amount = 100, age;
那麼price的初始值是? c
a.0
b.100
c.不確定
d.-1
4.定義變數和常量的位置
在c99標準下,我們只需要在使用某一變數或者常量之前定義即可。即全域性變數(常量)或者函式內區域性變數(常量)使用位置的上方。
但ansi c標準下,要在開頭先全部申明定義變數(常量)
5.格式化輸入函式scanf
我們先介紹乙個比較常用的讀入函式scanf
f的意思是formatical(格式化),可以先不管格式化什麼意思
還是先舉個例子scanf("%d", &price);
大部分和printf()函式很類似,但一定要注意加上 & ,表示取位址,沒有&會出各種問題
和printf()函式類似,scanf()函式也可以一次讀入多個資料
例如scanf("%d%d",&a,&b);
就是先讀入a再讀入b
常見的scanf()函式的格式符:
d i 用於輸入十進位制整數
u 以無符號十進位制形式輸入十進位制整數
o 用於輸入八進位制整數
x 用於輸入十六進製制整數
c 用於輸入單個字元
s 用於輸入字串(非空格開始,空格結束,字串變數以'\0'結尾)
f e 用於輸入實數(小數或者指數均可)
附加格式 l 用於長整型 , 比如 lld ld lo lx lf
附加格式 h 用於短整型 , 比如 hd ho hx
6.習題答案
以下哪些是有效的變數名? a d
a.main
b.4ever 數字不放前面,ever4就可以
c.monkey-king 減號不合法
d.__int
2
給定:int a,b;
scanf("%d %d", &a, &b);
則以下哪些輸入方式是正確的? a c
a.1 2
b.1,2
c.1(回車)2
d.1、2
3
給定:int a,b;
以下哪些scanf的使用是正確的? a b c
a.scanf("%d", &a);scanf("%d", &b);
b.scanf("%d %d", &a, &b);
c.scanf("%d, %d", &a, &b);
d.scanf("%d %d", a, b);
4
給定以下**段:
int a,b=0;
則a的初始值是0 錯誤
5寫出下式的運算結果:10.0
10/3.0*3
6寫出下式的運算結果: 9.0
10/3*3.0
1.復合賦值
算數運算子 + - * / % 可以和 賦值運算子 = 相結合,形成復合賦值運算子,即 += -= *= /= %=
e.g.price += 5;
和price = price + 5;
兩個語句等效
e.g.price *= amount+2
和price = price*(amount+2)
等效
注意優先順序,先算賦值運算子右側!
2.遞增遞減運算子
單目運算子 ++ 和 --
e.g.a++
和a=a+1
等效a--
和a=a-1
等效
a++
被稱為字尾形式,++a
被稱為字首形式,這兩者有區別!!
a++
的結果是a+1以前的值 而++a
則是a+1以後的值
舉個例子:若a=5; a++也是5,但執行之後a變為了6 ;若a=5; ++a卻是6,執行後a也為6
3.習題答案
寫出以下**執行後,t1和t2的值,以空格隔開:
int a=14;
int t1 = a++;
int t2 = ++a;
答案:14 16
寫出以下表示式的結果,乙個結果一行:
6 + 5 / 4 - 2
2 + 2 * (2 * 2 - 2) % 2 / 3
10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3
1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10
答案:5 2 44 -627
c語言程式設計課程筆記2
first 知識點總結 一 迴圈控制結構 1.while語句 當型迴圈 while 迴圈控制表示式 語句序列 注 迴圈次數未知時使用 2.do while語句 直到型迴圈 do語句序列 while 迴圈控制表示式 3.for語句 for 初始化表示式 迴圈控制表示式 增值表示式 語句序列 注 迴圈次...
C語言程式設計摘抄筆記2
2020 7 16 在c語言中,有三種作用,分別如下 取位址。單目運算子。用來取乙個變數的位址。比如 int i,p p i 這裡的 作用是取變數i的位址。位操作中的與操作運算子。也就是常說的and操作,雙目運算子。計算的時候按位計算,兩邊運算元對應位上全為1時,結果的該位值為1。否則該位值為0 比...
《C 程式語言》學習筆記2
程式語言 c 學習的指導思想 focus on programming techniques,not on language features.2.1 c 設計思想 1 能提供使用者介面 成員函式 2 只有通過使用者介面才能訪問資料 privite 3 初始化 掃尾 重構,虛構函式 4 使用者 與實...