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