3.3、while循环

By | 2015年7月5日

计算机很擅长于干重复的事情,因为他没有情感,并不会因为重复而感到厌烦。

可以说绝大多数程序都会用到循环!而现在我们就将学习一种循环语句——while语句

和上一篇文章类似,我们将尝试着使用新学的知识来编写一个程序

我们将编写一个能打印摄氏度与华氏度换算表的程序。以10为步长,输出从0-100摄氏度的对应的华氏度的程序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("摄氏度\t华氏度:\n");
    return 0;
}

首先是程序的基本框架,因为我们希望让计算机帮我们算出他们的对应关系,而不是我们手工去计算,因此就涉及到循环的知识

C语言当中有三种专门的循环语句,分别是while,do…while,和for

其中while的用法相对于其他几种循环来说稍微简单一些,因此我们便从while开始学习循环

while的结构有些类似if

while (…)
{
//循环的代码
}

和if类似,while的后面并没有分号,同时小括号内的…叫做条件表达式

而大括号括起来的部分则叫做循环体

执行到while时,当小括号内的表达式的值为真时,将会从循环体的第一行,按照相应的逻辑执行

在循环体执行完一次后,将再次判断小括号内的表达式是否为真,如果是真,则重复这一过程

否则就执行循环体后面的语句。

换句话说,除非while语句内的条件表达式为假,否则循环体将被重复运行!

以下面这个程序为例子

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i = 0;
    while (i <= 100)
    {
        printf("%d\n", i);
        i = i + 1;
    }
    return 0;
}

它将在屏幕上打印0 – 100一共101个数字

这个程序应该很好理解,第七行程序执行到while循环,此时i=0,显然表达式为真

因此开始执行循环体,首先打印出i变量的值,然后让i本身加上1

这时i=1,表达式仍然为真,于是程序从循环体的开头继续执行,这次将向屏幕打印数字1

直到最后一次循环,此时1=100,满足条件进入循环后打印数字,并且自增。然后i的值便变成了101,此时条件表达式返回的值变成了假

程序退出循环,来到return语句,程序退出

似乎目前循环看起来很简单,但是不要庆幸,循环的加入才是你噩梦的开始!什么噩梦?我们到时候就知道了

现在再回到上面打印温度换算表的程序上来

我们第一个需要计算的温度是0华氏度,打印到100华氏度时停止,因此我们的while应该是这样的

 while (Fdegree <= 100)
{
}

华氏度转换为摄氏度的公式是:摄氏度=(华氏度-32)/1.8

请参考上面的例子自己将循环体写完


同样的

我们在最后给出一个参考的程序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    double Fahrenheit = 0, Celsius = 0;
    printf("摄氏度\t华氏度:\n");

    while (Fahrenheit <= 100)
    {
        Celsius = (Fahrenheit - 32)/1.8;   //将华氏度换算成摄氏度
        printf("%.2f\t%.2f\n", Fahrenheit, Celsius);
        Fahrenheit = Fahrenheit + 10;
    }
    return 0;
}

作为练习,请尝试着将程序修改为将摄氏度转换为华氏度的功能

同时范围改为0-150摄氏度,步长改为5摄氏度

2 thoughts on “3.3、while循环

  1. 初学者

    华氏度和摄氏度循环转换程序第十二行应该先输出 Celsius再输出Fahrenheit吧,要不然运行后结果是相反的

    回复

发表评论

邮箱地址不会被公开。 必填项已用*标注