C语言基础

    返回首页    发表留言
本文作者:李德强
          第二节 if语句
 
 

一、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语言通用的语法,大括号中可以嵌套任意的合法语句,并支持多层级嵌套。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号