计算机很擅长于干重复的事情,因为他没有情感,并不会因为重复而感到厌烦。
可以说绝大多数程序都会用到循环!而现在我们就将学习一种循环语句——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摄氏度
我学过这个,还是有一定难度的
华氏度和摄氏度循环转换程序第十二行应该先输出 Celsius再输出Fahrenheit吧,要不然运行后结果是相反的