程式設計菜鳥到大佬之路:C語言程式(六)
阿新 • • 發佈:2018-12-13
第六天學習精要
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:”部分的語句組也會被執行。