學習目標
1.【掌握】switch-case結構dom
2.【理解】case語句穿透ide
3.【理解】Xcode斷點調試學習
4.【理解】while循環結構初體驗spa
5.【掌握】while循環結構的應用調試
6.【理解】break和continuecode
1、switch-case結構
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
switch
(表達式
)
{
case常量表達式
1
:
語句
1
;
break
;
case常量表達式
2
:
語句
2
;
.
.
.
break
;
case常量表達式
n
:
語句
n
;
break
;
default
:
語句
n
+
1
;
break
;
}
|
計算表達式的值,並逐個與其後的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執行其後的語句,而後跳出switch語句,繼續執行程序。若是逐個比較都沒有相等的值,則執行default後的代碼,而後跳出switch,繼續執行程序。orm
和if-else的區別:blog
1.可以使用switch-case結構寫的代碼必定可使用if結構寫出來,但可以使用if結構寫出來的代碼,不必定可使用switch-case結構。教程
2.switch-case結構 只能直接作等值判斷,判斷switch後的值是否和給定的case值相等。if結構,不只能夠作等值判斷 還能夠作範圍判斷。ci
3.若是是作範圍判斷推薦使用if語句,若是是作等值判斷則推薦使用switch語句。
switch語句注意事項:
1.表達式的類型(case語句後的值)必須是整型或能夠轉變爲整型的值(byte、short、char和int類型)。
2.值一、值2...值n只能爲常數或常量,不能爲變量。
3.功能代碼部分能夠寫任意多句。
4.break關鍵字的意思是中斷,指結束switch語句,break語句爲可選。
5.case語句能夠有任意多句,能夠不用加括號「{}」。
6.default語句能夠寫在switch語句中的任意位置,功能相似於if語句中的else。
執行流程:在執行的過程當中,若是遇到break語句,則跳出switch語句。若是沒有遇到break語句,則一直執行到switch語句的結束。
7.case後面不能夠直接定義變量,使用定義的這個變量的做用域 8)若是在case後面定義的變量必須加上大括號
2、case語句穿透
case語句執行的過程當中,若是在每個case語句後沒有break,則一旦進入某個分支後就會一直執行到switch結束。break的做用是直接跳出switch語句,固然還有其餘做用,待會整理循環結構筆記的時候再說。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
int
year
=
0
,
month
=
0
;
printf
(
"請輸入年份和月份:"
)
;
scanf
(
"%d%d"
,
&
year
,
&
month
)
;
switch
(
month
)
{
case
1
:
case
3
:
case
5
:
case
7
:
case
8
:
case
10
:
case
12
:
printf
(
"%d年的%d月有31天\n"
,
year
,
month
)
;
break
;
//這裏就是使用了case穿透,1,3,5,7,8,10,12任意分支知足,都會執行他們後面全部代碼,直到遇到break跳出switch
case
4
:
case
6
:
case
9
:
case
11
:
printf
(
"%d年的%d月有30天\n"
,
year
,
month
)
;
break
;
case
2
:
//判斷年份是否爲閏年.
if
(
year
%
400
==
0
||
(
year
%
4
==
0
&&
year
%
100
!=
0
)
)
{
printf
(
"%d年的%d月有29天\n"
,
year
,
month
)
;
}
else
{
printf
(
"%d年的%d月有28天\n"
,
year
,
month
)
;
}
break
;
default
:
printf
(
"你是都教授嗎?\n"
)
;
break
;
}
|
穿透的做用:不一樣case語句執行的代碼相同,就可使用穿透來簡寫代碼。
3、Xcode斷點調試
在程序運行期間,咱們能夠經過Xcode提供的斷點調試監視CPU執行代碼的步驟,變量的值的變化,以便咱們排查BUG。下面圖例就是使用斷點調試功能的圖解,不是很詳細,將就吧。。。整理筆記時間過短了,還得作練習,斷點調試教程我會單獨在【Xcode教程】欄目發佈的。
Xcode如何顯示行號:
在Xcode -》 Preferences -》 Text Editing -》 第一個選項,勾選Lines numbers。
添加斷點:
設置斷點不起做用:
刪除斷點:拖動斷點到空白處,便可完全刪除斷點。
調試程序:Command + R 運行後,若是設置了斷點,則直接進入調試視圖
4、while循環結構初體驗
循環結構能夠將一段代碼重複執行指定次數,C語言中的循環結構有while循環結構、do-while循環結構和for循環結構。固然由goto語句和if判斷也能組成循環,不過全世界人民都不建議使用goto語句。今天咱們要講解的是while循環結構的語法和應用場景。
1
2
3
|
while
(條件表達式
)
{
那段須要被反覆不停執行的代碼
,也叫循環體
;
}
|
執行過程:先判斷while後面小括號裏的表達式是否爲真,爲真則執行大括號裏的循環體,而後再次判斷while後面小括號裏的表達式,爲真再次繼續執行,而後。。。直到while後面的表達式爲假,則當即中止while循環。
關於死循環:
1
2
3
|
while
(
1
)
{
printf
(
"表達式一直爲真。。。因此,死循環!"
)
;
}
|
循環體一直反覆不停的執行,永遠不會結束,這種循環咱們就叫作死循環。咱們在寫循環的時候,要特別注意合理利用死循環。
5、while循環結構的運用
第一種場景:肯定循環體,也肯定循環的次數。
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
int
main
(
)
{
int
i
=
0
;
//將一句話輸出2萬次
while
(
i
<
20000
)
{
printf
(
"歡迎你來六阿哥的博客\n"
)
;
i
++
;
}
return
0
;
}
|
第二種場景:肯定循環體,不肯定循環次數,但肯定循環結束或者繼續的條件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
#include <stdlib.h>
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
int
money
=
arc4random_uniform
(
101
)
;
int
guess
=
-
1
;
while
(
guess
!=
money
)
{
printf
(
"請猜一下我給了你多少錢吧:"
)
;
scanf
(
"%d"
,
&
guess
)
;
if
(
guess
>
money
)
{
printf
(
"你猜得太大了\n"
)
;
}
else
if
(
guess
<
money
)
{
printf
(
"你猜得過小了\n"
)
;
}
}
printf
(
"恭喜你,正確\n"
)
;
return
0
;
}
|
第三種場景:遍歷指定範圍的數,將每1個數據都找出來
1
2
3
4
5
|
int
i
=
100
;
while
(
i
<=
150
)
{
printf
(
"%d\n"
,
i
)
;
i
++
;
}
|
第四種場景:找出指定範圍中符合特定條件的數
1
2
3
4
5
6
7
8
9
10
11
12
|
int
i
=
100
;
while
(
i
<=
999
)
{
int
bai
=
i
/
100
;
int
shi
=
i
%
100
/
10
;
int
ge
=
i
%
10
;
//只取出知足條件的值
if
(
bai *
bai *
bai
+
shi *
shi *
shi
+
ge *
ge *
ge
==
i
)
{
printf
(
"%d\n"
,
i
)
;
}
i
++
;
}
|
第五種場景:求累加和與平均值
1
2
3
4
5
6
7
8
|
int
i
=
1
;
int
sum
=
0
;
while
(
i
<=
5
)
{
sum
+=
i
;
i
++
;
}
printf
(
"sum = %d\n"
,
sum
)
;
|
第六種場景:求最大值和最小值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <stdio.h>
#include <limits.h>
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
int
max
=
INT32_MIN
;
//先聲明1個擂臺變量.用來保存最大值的.
int
i
=
0
;
while
(
i
<
5
)
{
printf
(
"請輸入第%d個數:\n"
,
i
+
1
)
;
int
num
=
0
;
scanf
(
"%d"
,
&
num
)
;
//每循環1次 就拿刀了用戶輸入的1個數據.
//若是輸入的是第1個數據 那麼就直接將這個數據賦值給max。
// if(i == 0)
// {
// max = num;
// }
//拿刀用戶輸入的這個數據 和擂臺上的數據作比較.
if
(
num
>
max
)
{
max
=
num
;
}
i
++
;
}
printf
(
"max = %d\n"
,
max
)
;
return
0
;
}
|
6、break和continue
break關鍵字:
可使用在switch-case結構之中。若是在其中使用了break,就表明結束這個switch-case結構。
還可使用在循環體之中。若是在循環體之中遇到了break,就會當即結束當前循環結構。
1
2
3
4
5
6
7
8
|
int
i
=
0
;
while
(
i
<
5
)
{
printf
(
"我愛大家\n"
)
;
if
(
i
==
2
)
{
break
;
//i等於2的時候直接結束while循環,最終i的值也只停留在2
}
i
++
;
}
|
continue關鍵字:
只能用在循環體之中,若是在循環體之中遇到了continue,會當即結束本次循環。再判斷循環條件,決定是否要繼續下一次循環。
1
2
3
4
5
6
7
8
9
10
|
int
i
=
0
;
while
(
i
<
5
)
{
if
(
i
==
2
)
{
continue
;
//當i等於2的時候,直接結束本次循環
}
i
++
;
//由於i等於2就結束了本次循環,因此i++沒有被執行。最終i的值爲2
printf
(
"%d\n"
,
i
)
;
}
|