C Primer Plus 第7章 C控制语句:分支和跳转 7.1 if语句

独自空忆成欢 提交于 2020-03-02 19:06:31

这个程序读入一系列每日的最低温度(摄氏度),并报告输入的总数,以及最低温度在零度以下的天数的百分率。在一个循环里使用scanf()读入数值,在每一次循环中增加计数器的值来统计输入数值的个数。if语句检测低于零度以下的温度并单独统计这些天的数目。

程序清单7.1  colddays.c

------------------------------------

//colddays.c --求出温度低于零度的天数的百分率
#include <stdio.h>
int main (void)
{
    const 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:%.1f%% were below freezing.\n",
                all_days,100.0*(float)cold_days / all_days);
    if(all_days==0)
        printf("No data entered!\n");
    return 0;
}
/*下面是一个运行示例:
Enter the list of daily low temperatures.
Use Celsius,and enter q to quit.
12 5 -2.5 0 6 8 -3 -10 5 10 q
10 days total:30.0% were below freezing.
*/

用float而不是int来声明temperature,这样程序就既能接受像8那样的输入,也能接受像-2.5这样的输入。

为了避免整数除法,示例程序在计算百分率时使用了类型转换float。使用类型转换可以表明意图,并保护程序免受不完善编译器的影响。

if语句被称为分支语句(branching statement)或选择语句(selection statement),因为它提供了一个交汇点,在此处程序选择两条分支中的一条前进。一般形式如下:

if(expression)

        statement

如果expression为真,就执行statement;否则跳过该语句。和while语句的区别在于在if中,判断和执行只有一次,而在while循环中,判断和执行可以重复多次。

注意,即使if中使用了一个复合语句,整个if结构仍将被看作一个简单的语句。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!