if语句
形式:
if(expression)
statement
if语句被称为分支语句或选择语句,因为他相当于一个交叉点,当expression为真时,执行statement,当expression为假时,跳过statement。
同while一样,statement可以为简单语句或复杂语句。
但与while不同的是,if只能测试或执行一次,而while可以执行多次。当然也可以在while添加if语句来执行多次if测试和判断。
例:7.1
该程序读取一列数据,每个数据都表示每日的最低温度,然后打印总天数和最低气温在0度以下的天数占总天数的百分比。程序中判断通过scanf()读入温度值。while循环每迭代一次,就递增计数器增加天数,其中if语句负责判断0度以下的温度并统计天数。
incude<stdio.h>
int main(void)
{
conset int FREEZING = 0;
float temperature;
int cold_days = 0;
int all_days = 0;
printf("Enter the list of daily low temperatures.\n");
printf("Use celsius, and enter q to quit.\n");
while(scanf("%f",&temperature) == 1)
{
all_days++;
if(temperature < FREEZING)
cold_days++;
}
if(all_days != 0)
printf("%d days total:%.f%% were below freezing.\n",all_days,100.0*(float)cold_days / all_days);
if(all_days == 0)
printf("No data entered!\n")
return 0 ;
}
while循环的测试条件利用了scanf()的返回值来结束循环,因为scanf()在读到非数字时会返回0,就会停止while循环
为避免整数除法,示例中把计算后的百分比强制转换为float类型。其实不必强制转换,C中的自动转换规则,乘积会被强制转换成浮点数。但是使用强制类型转换可以明确表达转换类型的意图,提高可读性。