您的位置:首页 > 编程语言 > C语言/C++

C语言基础:if语句

2018-03-12 10:44 232 查看
一、if语句        在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:如果条件表达式的值为真:        那么结果为A;否则:        那么结果为B。        其实这是一个我们在生活常常需要处理的一种情形,如果……那么……否则……那么……在C语言中有另外一个条件分支语句来处理这一类问题,我们先来看看if else语句: if (conditional expression)
{
//do something
}
else
{
//do something else
}
         if后面的小括号中需要写入一个条件表达式,if语句会根据这个条件表达式结果的真假,让程序产生不同的结果,也就是程序分支。具体来说,就是当条件表达式的值是真时,程序执行if下面大括号中的语句,而当条件表达式的值是假时,程序执行else下面大括号中的语句。也就是说,if和else后面的程序区块中只有一个会被执行,要么是if后面大括号中的语句,要么是else后面大括号中的语句。所以程序在执行到if语句时就产生了逻辑分支。        下面我们来看一个例子说明if else语句的功能,二月份一共有28天,但当闰年时,二月份就有29天,闰年的计算公式为:能被4整除,不能被100整除的年是闰年,能被400整除的看也是闰年。所以我们可以编写一个用于计算二月份天数的程序: int year = 2016;
int daysOfFebruary;
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
daysOfFebruary = 29;
}
else
{
daysOfFebruary = 28;
}
printf("%d\n", daysOfFebruary);
         上面程序运行的结果为29,因为2016年是闰年;如果我们将变量year修改为2017,那么程序的运行结果则为28;如果我们将变量year修改为2000,那么程序的运行结果为29,因为2000年是闰年。 二、else if语句        有时候,我们需要将条件划分为多个不同的情况,往往是需要多种情况的分支,所以一个if else语句是不能满足我们的需要的。例如:一个学生期末考试的成绩单在100分为A,90分以上时为B,80分以上为C,70分以上为D,60分以上为D,而小于60为F。如果要用if else语句来写需要嵌套很多层if语句: int score = 78;
if (score == 100)
{
printf("A\n");
}
else
{
if (score >= 90)
{
printf("B\n");
}
else
{
if (score >= 80)
{
printf("C\n");
}
else
{
if (score >= 70)
{
printf("D\n");
}
else
{
if (score >= 60)
{
printf("E\n");
}
else
{
printf("F\n");
}
}
}
}
}
        这样写的程序结果是对的,但看起来并不是很美观,C语言中提供了另外一种语句叫作else if来解决这一类问题: int score = 78;
if (score == 100)
{
printf("A\n");
}
else if (score >= 90)
{
printf("B\n");
}
else if (score >= 80)
{
printf("C\n");
}
else if (score >= 70)
{
printf("D\n");
}
else if (score >= 60)
{
printf("E\n");
}
else
{
printf("F\n");
}
         else if语句的作用就是在if判断条件表达式为假之后可以再进行下一步的条件判断,而不需要在else分支里面再写入一个if else判断,这样代码看起来就美观很多,逻辑清晰。        当if else后面的大括号中只有一条语句时,大括号可以省略。但从程序可读性和可扩展性上讲并不推荐省略这些大括号。另外,if else 和 else if语句中大括号里面均可以再嵌套其它的语句,例如嵌套其它的if else语句,或嵌套while循环语句皆可。这是C语言通用的语法,大括号中可以嵌套任意的合法语句,并支持多层级嵌套。欢迎关注公众号:编程外星人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: