目錄:
一.選擇語句:
1.if else語句
2.switch語句(附break的使用)
二.循環(huán)語句:
1.for循環(huán)
2.while循環(huán)
3.do while循環(huán)
4.break和continue在循環(huán)語句中的使用
(一)選擇語句
1.if 語句的基本表達為:
if(表達式1)
語句1;
理解起來就是當表達式1為真時,程序執(zhí)行語句1,否則執(zhí)行語句2
我們用代碼來理解一下:
#includeint main() {int i = 2;
if (i=1)
printf("hello");
return 0;
}
按照我們的理解
,
i
賦值為
2
,
但是
i
f
的表達式為
i
=
1
\color{Red}{按照我們的理解,i賦值為2,但是if的表達式為i=1}
按照我們的理解,i賦值為2,但是if的表達式為i=1
所以說這個程序應該什么都不打印,結果真的是這樣嗎?我們看看結果:
這里居然把hello打印出來了,為什么呢?是這樣的,i=1本身為真了,所以就打印hello了.
在if語句里面表達式應該用賦值運算符來看,而不應該用關系運算符(點擊就可以看)
我們盡量寫成
i
f
(
1
=
=
i
)
,
因為當我們寫成
i
f
(
1
=
i
)
時
\color{Purple}{我們盡量寫成if(1==i),因為當我們寫成if(1=i)時}
我們盡量寫成if(1==i),因為當我們寫成if(1=i)時
這個語句編譯器會報錯
,
因為
i
怎么能賦值給
1
呢
?
\color{Purple}{這個語句編譯器會報錯,因為i怎么能賦值給1呢?}
這個語句編譯器會報錯,因為i怎么能賦值給1呢?
所以我們應該寫成下面這樣:
#includeint main() {int i = 2;
if (1==i)
printf("hello");
return 0;
}
這樣就什么都不會打印,如何寫成if(2==i),就會打印hello
1.1 if語句還有多語句的:
if(表達式1) if(表達式1)
語句1; 語句1;
else else if(表達式2)
語句2; 語句2;
else
語句3;
當一個分支語句有多個if else語句時,if 總是和最近else匹配
來個栗子:
#includeint main() {int m = 1;
int n = 2;
if (2==m)//為假了,不會執(zhí)行后面的if else語句了,所以什么都不會打印
if (1==n)
printf("hello");
else
printf("world");
return 0;
}
2. s w i t c h 語句 \color{red}{switch語句} switch語句的基本表達式為:
switch(整型表達式)
{
case 整型常量表達式:
語句;
case 整型常量表達式:
語句;
~~~
}
接下來我們用代碼來感受一下switch的使用:
#includeint main() {int month = 0;
scanf("%d", &month);
switch (month)
{case 1://記住case后面的為整型常量的表達式,如果寫成1.0這種就不行
printf("一月\n");
case 2:
printf("二月\n");
case 3:
printf("三月\n");
case 4:
printf("四月\n");
case 5:
printf("五月\n");
case 6:
printf("六月\n");
case 7:
printf("七月\n");
case 8:
printf("八月\n");
case 9:
printf("九月\n");
case 10:
printf("十月\n");
case 11:
printf("十一月\n");
case 12:
printf("十二月\n");
}
return 0;
}
我們的目的呢?希望輸入數(shù)字幾,就打印幾月出來.但結果時這樣嗎?
當我們輸入1會得到什么呢?
這里month為1,就會從case 1進去,依次打印后面的月份,如果我們要想達到目的,應該在printf后面加上break,
b
r
e
a
k
的作用就是結束
s
w
i
t
c
h
的循環(huán)
,
就是說不在執(zhí)行下面的
c
a
s
e
語句
\color{Red}{break的作用就是結束switch的循環(huán),就是說不在執(zhí)行下面的case語句}
break的作用就是結束switch的循環(huán),就是說不在執(zhí)行下面的case語句,代碼結果如下:
#includeint main() {int month = 0;
scanf("%d", &month);
switch (month)
{case 1:
printf("一月\n");
break;
case 2:
printf("二月\n");
break;
case 3:
printf("三月\n");
break;
case 4:
printf("四月\n");
break;
case 5:
printf("五月\n");
break;
case 6:
printf("六月\n");
break;
case 7:
printf("七月\n");
break;
case 8:
printf("八月\n");
break;
case 9:
printf("九月\n");
break;
case 10:
printf("十月\n");
break;
case 11:
printf("十一月\n");
break;
case 12:
printf("十二月\n");
break;
}
return 0;
}
(二).循環(huán)語句
循環(huán)語句:在不少實際問題中有許多具有規(guī)律性的重復操作,因此在程序中就需要重復執(zhí)行某些語句。一組被重復執(zhí)行的語句稱之為循環(huán)體,能否繼續(xù)重復,決定循環(huán)的終止條件。循環(huán)結構是在一定條件下反復執(zhí)行某段程序的流程結構,被反復執(zhí)行的程序被稱為循環(huán)體。循環(huán)語句是由循環(huán)體及循環(huán)的終止條件兩部分組成的。
1.1
f
o
r
循環(huán)
\color{red}{for循環(huán)}
for循環(huán)的基本表達式
for(表達式1;表達式2;表達式3)
{
語句;
}
注意:
表達式1:一般為賦值表達式,給控制變量賦初值;
表達式2:關系表達式或邏輯表達式,循環(huán)控制條件;
表達式3:一般為賦值表達式,給控制變量增量或減量。
語句:循環(huán)體,當有多條語句時,必須使用復合語句。
表達式的中間用分號隔開,表達式3后面不加分號
這是它的執(zhí)行順序:
1-2-3-4-2-3依次類推,直到i=11時,退出循環(huán),于是打印1到10.
我們來一個題來練練手:
輸入一個數(shù):
輸出這個數(shù)的階乘:
#includeint main() {int i = 1;
int n = 1;
int fact = 1;//不能初始化為0,不然結果也是0
scanf("%d", &n);
for (i = 1;i<=n;i++) {fact = fact * i;
}
printf("%d", fact);
return 0;
}
運行的步驟為:
如果我們輸入5
1.當i=1時,小于5,fact=1*1=1;
2.i++,此時i為2,也小于5,fact=1*2=2;
3.i++,此時i為3,也小于5,fact=2*3=6;
4.i++,此時i為4,也小于5,fact=6*4=24;
5.i++,此時i為5,滿足條件,fact=24*5=120;
6.i++,此時i為6,不滿足條件,退出循環(huán).
1.2 for循環(huán)嵌套if語句中的break和continue
上面已經(jīng)說到了,break就是跳出循環(huán)體,那continue有什么作用呢?
C語言中continue語句的作用是結束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,然后進行下一次是否執(zhí)行循環(huán)的判定。需要注意的是continue語句只結束本次循環(huán),而不是終止整個循環(huán)。
我們用代碼來理解一下它們的用法:
#includeint main() {int i = 0;
for (i = 1; i< 10; i++) {if (5 == i)
break;//當i為5時,跳出循環(huán),不會再打印5了
printf("%d ", i);
}
return 0;
}
如果把break換成continue會發(fā)生什么呢?
#includeint main() {int i = 0;
for (i = 1; i< 10; i++) {if (5 == i)
continue;//當i為5時,continue跳過后面代碼,來到for語句
printf("%d ", i);
}
return 0;
}
應該打印1 2 3 4 6 7 8 9,結果是不是呢?我們來看看:
果然我們理解的,還是對的,我們真棒!
2.
w
h
i
l
e
循環(huán)
\color{red}{ while循環(huán)}
while循環(huán)
whlie(表達式){
語句;
}
while和for本質(zhì)上都是循環(huán),只是表達式放的位置不同,故相同代碼,運行結果可能也會不同
先來一個簡單的代碼,計算1加到100的總和:
#includeint main() {int i = 0;
int sum = 0;
while (i<= 100) {sum = sum + i;
i++;//和for循環(huán)不同,調(diào)整語句不在括號里面
}
printf("sum=%d", sum);
return 0;
}
如果我們用上述for循環(huán)嵌套里面的break,continue來編寫while會怎么樣呢?結果會不會一樣呢?
break代碼:
#includeint main() {int i =1;
while (i< 10) {if (5 == i)
break;
printf("%d ", i);
i++;
}
return 0;
}
這里可以看出,當使用break時,for和while代碼一樣時,運算結果也一樣.
continue代碼:
#includeint main() {int i =1;
while (i< 10) {if (5 == i)
continue;
printf("%d ", i);
i++;
}
return 0;
}
這里可以看出,程序陷入了死循環(huán),因為當i為5時,continue跳過后面的代碼,返回到while的判斷句,5小于10,恒成立,依次類推,程序陷入了死循環(huán).
所以說for和while因為調(diào)整語句的位置不同,兩個循環(huán)還是存在差異的,做題時,根據(jù)自己的喜好來看吧,隨便哪一個都行,或者兩個都可以相互嵌套使用的.
3.
d
o
\color{red}{do}
do
w
h
i
l
e
\color{red}{while}
while循環(huán)
do while 循環(huán)是 while 循環(huán)的變體。在檢查while ()條件是否為真之前,該循環(huán)首先會執(zhí)行一次do 之內(nèi)的語句 ,然后在while()內(nèi)檢查條件是否為真,如果條件為真的話,就會重復do while這個循環(huán),直至while ()為假。 和 while循環(huán)有相似之處,但使用方法完全不同。
do while用的很少,這里就不多說了。
最后,感謝大家的蒞臨。😘
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧