天天看點

【C語言】第二章-分支和循環語句-1

第1節

什麼是語句

  在C語言中由一個

;

隔開的就是一個語句。例如

printf("Misaki");

1 + 2;

等等。

分支語句

if語句

  分支語句又叫選擇結構,之前為大家示範過的if語句就是一個分支語句,在C語言邏輯中有着大量的使用範疇,是不可或缺的一部分。

  接下來為大家示範if的幾種使用形式。

  形式一:

if (表達式)
	語句;
           

  形式二:

if (表達式)
	語句1;
else 
	語句2;
           

  形式三:

if (表達式)
	語句1;
else if (表達式)
	語句2;
else 
	語句三;
           

  簡單解釋一下,如果if括号中的表達式成立則執行語句1,如果不成立則進入else if表達式進行判斷,如果還不成立直接執行else。而在C語言中可沒有定義真假的變量,是以我們隻好拿整數進行替代。**在C語言中0表示真,非0表示假,**進行條件判斷的表達式的值都會用0和非0進行替代(但是一般多拿1來進行表示真的替代)。

  同時我建議在寫if語句的時候下面條件執行的語句都能用

{}

來将他們括起來,表示這是一個代碼塊,這樣我們不僅可以在代碼塊中寫多個執行語句,也使程式更加可讀。

if (表達式)
{
	語句清單1;
}
else if (表達式)
{
	語句清單2;
}
else
{
	語句清單3;
}
system("pause");
           

  同時有一點需要強調,else永遠與上面離它最近的if進行匹, 大家不要被縮進格式所迷惑。接下來進行幾個執行個體示範。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	int coding = 0;
	printf("你會好好敲代碼每天三小時,一次500行,不敲夠不睡覺,像對待女朋友一樣對待她麼?\n");
	scanf("%d", &coding);
	if (coding == 1)
	{
		printf("加油堅持你會成功!\n");
	}
	else if(coding == 0)
	{
		printf("回家種田吧!\n");
	}
	else
	{
		printf("猶豫不決你在等什麼?\n");
	}
	system("pause");
}
           

  我們的if語句就講到這裡,if語句使用十分簡單卻也十分靈活,但是大家千萬注意盡量少的使用選擇嵌套可以增強代碼可讀性。

switch語句

  switch語句也是一種分支語句,多用于多分支的情況。在某些情況下使用switch往往有着好的效果。

  比如說如果我們要根據使用者輸入的1-7來列印相應的星期,比如說使用者輸入1,我們則列印“星期一“”。在這種多分支的情況下,往往是switch語句的拿手好菜。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	int choice = 0;
	printf("請輸入數字:");
	scanf("%d", &choice);
	switch (choice)
	{
	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;
	default:
		break;
	}
	system("pause");
}
           

  switch的文法很簡練,

switch(整形表達式)

,下方的大括号中是一些case語句,

case 整形常量表達式: 語句;

當case後的常量==switch中的整形表達式的值時,case後的語句就會被執行,而switch語句一般都會配備一個

default: 語句;

這是**在case語句沒有被比對上的時候就會執行default語句中的内容。**大家還可以注意到每一個語句後都跟了個

break;

語句,這個break我們在循環中提到過一些,是跳出循環用的,不過在這裡則是跳出switch用的,如果不加break語句,程式則會跟着比對的case一直往下執行語句知道遇到break或者switch語句結束為止,是以break在這裡不可或缺的,這也是switch一個很大的缺陷。

  switch雖然适用于多分支條件的情況下,但其本身有着極大的缺陷,并且實際上switch能實作的分支if語句也同樣可以實作,有時候反倒會使我們的工作更加簡單,是以我并不推薦在程式裡經常使用switch,其中可讀性低也是很重要的一部分原因。

循環語句

while循環

  while我們在初始C語言的章節已經涉獵,他是非常簡單的一種循環語句,因為使用起來和if十分類似,不同點是if語句隻判斷一次條件,執行完則退出語句,但是while則是在每一輪循環結束後都要重新判斷條件,如果條件依然成立則繼續執行語句。

  列印0 - 9;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\t", i);
		i += 1;
	}
	printf("\n");
	system("pause");
}
           

  我相信大家對while的用法已經非常熟悉了,但是想要靈活使用我們還要在之後的學習中多加練習!

for循環

  for循環語句是一種相比while更為友善的循環語句,他更加便于書寫,可讀性更高。

  同樣是輸出0 - 9我們用for語句再寫一遍。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d\t", i);
	}
	printf("\n");
	system("pause");
}
           

  for語句文法更為精煉,将循環變量的更新條件的判斷,循環變量的初始化融為一體。

for(語句1; 語句2; 語句3)
{
    循環内容;
}
           

  for循環中語句1是循環變量的初始化,永遠隻執行一次,就是在循環剛開始的時候才執行;語句2則是循環條件的判斷,隻有在語句2滿足的情況下才執行循環内容,語句2在每次循環開始前都要執行進行判斷;語句3是循環變量的更新,在while語句中這一條往往是寫在循環體裡的,而for則将它提煉出來,這條語句在每一次循環結束後都會執行。是以for循環語句的執行順序大概是:語句1->語句2(條件成立)->循環内容->語句3->語句2(條件成立)->循環内容->語句3->…->語句3->語句2(條件不成立)->循環結束。

  由此可見for循環語句的文法更為精煉快捷易于書寫,且可讀性更好,這裡指的一提的是,for語句中括号裡的三條語句都可省略不寫,但是分号不可省略,而當語句2省略時則會變成死循環。

  for循環語句還有一些變種,我們之後學習中都會遇到,到時候大家需要小心留意。

do-while語句

  do-while語句是while語句的變種,他們十分相似,唯一不同點是前者執行完一次循環體後才會進行條件判斷, 也就是說其至少執行一次。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	int i = 10;
	do 
	{
		printf("%d", i);
	} while (i > 20);
	printf("\n");
	system("pause");
}
           

  從上面這個代碼就可以看出明明while()中的條件不符合可依然執行了一次循環體,這就是while的獨到之處。

  由于do-while語句使用條件有限,是以使用情況不多,這裡不再深入講解。

繼續閱讀