C語言程式設計筆記2

2022-09-21 20:57:15 字數 4196 閱讀 3444

這個系列是用來解決學校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

我們先介紹乙個比較常用的讀入函式scanff的意思是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+2price = 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 使用者 與實...