编程菜鸟到大佬之路: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:”部分的语句组也会被执行。