程式設計入門 C語言筆記 第0周 第3周

2021-07-15 17:55:24 字數 3967 閱讀 6925

本科時期學過一些c++,現在自學資料結構演算法的時候感覺需要重新補一下c語言。

所用ide: dev-c++ 5.11

#include 

int main()

//在學習函式之前,**均在此框架,往後省略框架。

printf("hello world!\n")

//雙引號內為字串。

//\n 表示換行。

printf("23+43=%d\n",23+43)

// %d 說明有乙個整數要在此位置上輸出。

c語言意義+

加法-減法*

乘法/除法%

取餘數

int a=0; 

//定義變數並初始化,a為名字,即識別符號,可由數字、字母、下劃線組成,第乙個位置不能出現數字。定義a=0的過程為初始化,即給a賦值

int b=0;

constant int amount=100;// 定義乙個常量,不能修改。

printf("請輸入兩個整數:");

scanf("%d

%d", &a, &b);

// 讀取輸入的兩個整數,並賦值給a和b,如果讀取到的不是整數,則取整(使用捨去小數部分)。

printf("%d + %d = %d\n", a, b, a + b);

e.g. 計算時間差

int hour1, minute1;

int hour2, minute2;

scanf("%d

%d", &hour1, &minute1);

scanf("%d

%d", &hour2, &minute2);

int t1 = hour1 * 60 + minute1;

int t2 = hour2 * 60 + minute2;

int t = t2-t1;

printf("時間差是%d小時%d分。", t/60, t%60);

// 將小時全部轉化為分鐘來計算, t/60為小時,t%60為分鐘。

e.g. 求平均值

int a,b;

scanf("%d

%d", &a, &b);

double c = (a+b)/2.0;

//2.0的意義在於,整數與整數之間的運算只會產生整數,因此需要2.0,乙個浮點數來精確平均數。 如果使用2,則會平均後取整再將其變成浮點數。例如:(10+11)/2=10.000000

printf("%d和%d的平均值=%f\n", a, b, c);

優先順序

運算子運算

結合關係舉例1

+單目不變

自右向左

a*+b1-

單目取負

自右向左

a*-b2*

乘自左向右

a*b2/除

自左向右

a/b2%取餘

自左向右

a%b3+加

自左向右

a+b3_減

自左向右

a-b4=賦值

自右向左

a=b

在c語言中,賦值也是一種運算,也有結果

a=b=6

// a= (b=6),其中b=6為賦值,但其也有結果為6,故a=6。

total*=sum+12

// 等同於 total=total*(sum+12)。

「++」,」–」為單目運算子,且配合運算的運算元必須為變數。作用即為給這個變數加1或者減1,等同於

a++;

a+=1;

a=a+1;

字首與字尾

表示式運算

表示式a的值

a=count++

給count加1

count的原值

a=++count

給count加1

count+1後的值

a=count——

給count減1

count的原值

a=–count

給count減1

count-1後的值

第1周課後練習

輸入乙個三位數,倒序輸出這個數。

#include 

int main()

if(條件成立)

else

條件

運算子意義

== 相等!=

不相等>

大於>=

大於等於

<

小於<=

小於等於

關係運算的結果

printf("the answer is %d",5>3)

//關係符合運算子的期望時,輸出1,否則輸出0。

-關係運算子的優先順序比算術運算的優先順序低,但比賦值運算的優先順序高。

-判斷==和!=的優先順序比其他關係運算子低,而且關係運算是從左向右的。

另一種形式

if(total>amount)

total+=amount+10;

//if語句後面沒有分號,後面的賦值語句縮排並帶有分號,這表明它是if語句中的一部分。

巢狀的判斷

if(code==ready)

if(count<20)

printf("everything is ok\n");

else

printf("keep waiting\n")

if(code==ready)

else

printf("keep waiting\n")

// else總是會和最近的那個if匹配,所以有特殊需要時候,需要括弧,只靠縮排是不能暗示else與哪個if匹配的。

if(n<1)

if(n==0)

printf("hello\n");

//雖然輸出語句沒有縮排,但仍然為巢狀的判斷的一部分,只有同時滿足兩個條件才會輸出。

在每乙個if與else後面都使用括弧以確保不出錯

if(exp1)

else

if(exp2)

else

if語句中容易出錯的點

有多個語句執行的時候忘了大括號

if(age>60)

salary=salary*1.2;

bonus=bonus*2;

//缺少括弧的話,bonus運算語句則在條件結束後執行。

switch ( month )

\\switch 括號內的為控制表示式,只能為整數

int i=1;

switch ( i%3 )

//答案為onetwo,因為沒有break語句,則一直執行到尋找乙個break語句,或者switch結束。

while迴圈語句
while(x>0)

// 迴圈來計位。

測試程式常使用特殊的資料個位數,0,負數,有效範圍內的邊界數

x=x/10;

n++;

while(x>0)

// 改進:針對x=0的情況。

do

while(n>0)

// 與while的區別:至少會做一次迴圈再判斷。

random()%n

//給出乙個在0~n-1之間的隨機數。

程式設計入門 C語言 翁愷 第3周程式設計練習

你的程式要讀入一系列正整數資料,輸入 1表示輸入結束,1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。一系列正整數,整數的範圍是 0,100000 如果輸入 1則表示輸入結束。兩個整數,第乙個整數表示讀入資料中的奇數的個數,第二個整數表示讀入資料中的偶數的個數。兩個整數之間以空格分隔。...

第3周程式設計作業

13 1列印3個相鄰字母 20分 題目內容 當使用者輸入乙個英文本母後,程式能夠按照字母表的順序列印出3個相鄰的字母,其中使用者輸入的字母在中間。程式執行結果如下 dcde 這裡假設字母表首尾兩個字母是相連的。若輸入字母z,則程式輸出yza。輸入格式 乙個字母字元,可能為大寫,也可能為小寫。輸出格式...

程式設計入門 C語言 翁愷 第2周程式設計練習

乙個整數,表示bjt的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分 如果小時是0,則沒有百位部分 如果小時不是0而分小於10分,需要保留十位上的0 如果小時是0而分小於10分的,則不需要保留十位上的0。乙個整數,表示utc的時和分。整數的個位和十位表示分,百位...