1. 程式人生 > >程式設計菜鳥到大佬之路:C語言程式(六)

程式設計菜鳥到大佬之路:C語言程式(六)

第六天學習精要

if語句

條件分支結構之if 語句

  • 有時,並非所有的程式語句都要被順序執行到,會希望滿足某種條件就執行這部分語句,滿足另一條件就執行另一部分語句,這就需要“條件分支結構”。

  • 依次計算表示式1、表示式2…只要碰到一個表示式i為真,則執行語句組i(前面為假的表示式對應的語句組不會被執行),後面的表示式不再計算,後面的語句組也都不會被執行。若所有表示式都為假,則執行語句組n。

if (表示式1) {
語句組1
}
else if(表示式2) {
語句組2
}
…… //可以有多種個 else if
else if( 表示式n-1) {
語句組n-1
}
else {
語句組n
}
  • if 語句可以沒有 else if,也可以沒有 else,也可以都沒有

  • 如果“語句組”只有一條語句,可以不用{ }。

  • 例題: 寫一個判斷整數奇偶性的程式,要求輸入一個整數,如果是奇數,就輸出“It’s odd.”,如果是偶數,就輸出“It’s even.”。

# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	if( n % 2 == 1)
		printf("It's odd.\n") ;
	else
		printf("It's even.\n") ;
	return 0;
}

if 語句巢狀

  • 在一條if語句的某個分支(語句組)裡,還可以再寫if語句。

  • else總是和離它最近的if配對。

# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
	int a;
	scanf("%d", &a);
	if (a > 0)
	{
		if (a % 2)
			cout << "good";
		else 
			cout << "bad";
	}
	return 0;
}
  • 互相矛盾的多個條件,如果確實只希望執行其中一個分支,應該用if和多個else if,而不要寫多個if。

  • 例題:請寫一個程式,該程式輸入一個年份,根據該年份是否是建國整十週年、建黨整十週年以及是否是閏年給出不同的輸出。

# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
	int year;
	scanf("%d", &year);
	if( year <= 0)
		printf("Illegal year.\n") ;
	else {
		printf("Legal year.\n");
		if( year > 1949 && (year - 1949) % 10 == 0 )
			printf("Luky year.\n");
		else if( year > 1921 && !((year - 1921) % 10))
			printf("Good year.\n");
		// 閏年判斷標準為:能被4整除但不能被100整除或者能被400整除。 
		else if(year%4 == 0 && year % 100 || year % 400 == 0 )
			printf("Leap year\n"); //閏年
		else printf("Common year.\n");
	}
	return 0;
}

switch語句

條件分支結構之switch語句

  • “表示式”的值等於哪個“常量表達式”,就執行相應的語句組。都不相等,則執行default的語句組。也可以沒有default分支,“常量表達式” 裡面不能包含變數!
switch(表示式) { //表示式的值 必須是整數型別(int,char ……)
    case 常量表達式1://常量表達式必須是整數型別的常量(int,char…)
        語句組1
        break;
    case 常量表達式2:
        語句組2
        break;
    ……
    case 常量表達式n:
        語句組n
        break;
    default:
        語句組n+1
}
  • 例題: 請寫一個程式,接受一個整數作為輸入,如果輸入1,則輸出“Monday”,輸入2則輸出“Tuesday” ……輸入7,則輸出“Sunday”,輸入其他數,則輸出“Illegal”。
# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
	int n;
	scanf("%d", &n);
	switch(n)
	{
		case 1:
			printf("Monday");
			break;
		case 2:
			printf("Tuesday");
			break;
		case 3:
			printf("Wednesday");
			break;
		case 4:
			printf("Thursday");
			break;
		case 5:
			printf("Friday");
			break;
		case 6:
			printf("Saturday");
			break;
		case 7:
			printf("Sunday");
			break;
		default:
			printf("Illegal");
	}	
	return 0;
} 
  • switch語句在進入某個case分支後,會一直執行到第一個碰到的“break;”,即使這個“break;”是在後面的case分支裡面。果沒有碰到“break;”,則會向下一直執行到switch語句末尾的“}”,包括“default:”部分的語句組也會被執行。