c语言之whlie循环语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本来说好讲讲除了scanf和printf以外例如gets、puts,petchar、putchar等输入输出函数。但准备了半天东西发现牵扯的知识太多,并且很多东西我自己也没有弄清楚。所以啦,我就打算先讲讲程序中最常见的两种循环语句,分别是while 循环语句和for循环语句。
这个while啊,我们都学过英语都知道有“当....的时候”的意思。对,学c语言时就当这个意思就行。
这个例题也没找到什么好的,就搬来了《c程序设计语言》上的例子,如果看过来就当是复习吧。
请看题:
使用公式℃=(5/9)(℉-32),打印下列华氏温度与摄氏温度的对照表。
0 -17
20 -6
40 4
60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148
我们的答案如下
#include
/*当fahr=0,20,40,...,300时,打印华氏温度与摄氏温度对照表*/
main()
{
int fahr,celsius;
int lower,upper,step;
lower=0; /*华氏温度下限*/
upper=300;/*华氏温度上限*/
step=20;/*步长*/
fahr=lower;
while(fahr<=upper)
{
celsius=5*(fahr-32)/9;
printf("%d\t%d\n",fahr,celsius);
fahr=fahr+step;
}
}
值得高兴的是,我们又遇到了很多没有见过的东西,总是能见到新东西总是让人感到高兴的。
先是fahr、celsius等几个没见过的单词。这个其实不用说也都知道是啥东西,也就是几个可能原来不认识的变量名,并不是函数。
接下来是/**/格式的几个句子
/*当fahr=0,20,40,...,300时,打印华氏温度与摄氏温度对照表*/
/*华氏温度下限*/
/*华氏温度上限*/
/*步长*/
这种在/*和*/之间加东西的东西叫做注释。和它的名字一样,仅作为注释,在程序运行过程就会被编译器忽略,因为编译器只对文章正文感兴趣。
这东西存在的主要价值基本上就是帮助看你程序的人或在你检查自己程序时可以快速理解你写的这一部分是干啥用的。因此注释在每个语句的句尾都可以加,在任何可以跳格也就是可以打空格或制表符的地方也都可以加。
剩下我们可能看不懂的大概也就剩while的循环语句了:while(fahr<=upper)
{
celsius=5*(fahr-32)/9;
printf("%d\t%d\n",fahr,celsius);
fahr=fahr+step;
}
首先我们要注意的是,有没有发现while循环语句的第一句括号后面没有分号?并不是我忘了打,因为这里确实没有分号也能有分号。具体有了会怎样可以自己去试一试。
当然我是个喜欢啰里啰唆的人,所以还是想啰嗦两句为啥不能加分号。原因也很简单,因为我们都知道,分号在c语言中代表一个语句的结束,在这里要注意是一个语句的结束。而对于循环语句来说,构成它的至少应该有两部分:前面的判断条件和后面的循环体(在这里指后面花括号及以内的内容),因此我们要把前面的条件判定部分和后面的循环体当成整体来看待。也就是说它们共同构成了循环语句这一个语句。
如果你在while(fahr<=upper)后面加上了分号,再通过运行的结果对照程序进行思考,一定可以更深刻地理解我这句话的含义。
好吧又扯出两个词,条件判断部分和循环体。条件判断部分就是while后面圆括号即里面的内容啦,也有的人叫条件部分。我为了省事在下面就也叫它条件部分啦。循环体可以由两部分组成,花括号和花括号里面的语句。在这里说可以是因为如果循环语句只有一个语句的话(马上我们就会遇到),就没有必要加花括号了。直接接在while那句的下面就行了。
好像就没啥知识了吧,循环语句的循环过程主要还是要自
己去理解,至于这个while循环语句的执行方式是这样的:首先编译器在读取while函数后(忘了说这玩意还有个名字叫条件函数),会先测试它后面圆括号中的条件部分,如果条件为真(在这里是fahr<=upper),则执行循环体;执行完循环体后,因为是while函数,编译器会返回来再次测试条件部分。。。。。直到某一次当编译器测试条件部分结果为假时(这里体现为fahr>upper),编译器就会结束while函数的循环,然后按正常顺序去进行循环语句后面语句的运行。在本程序中因为while的循环语句是程序的最后一个语句,所以在循环语句结束后整个程序也就执行终止啦。
好吧这个程序还有两个问题。我们一个个的讲。
第一个就是printf语句中\t和\n的作用。(不要跟我说不认识这两个东西啦我以前一定是说过的。)在这个程序里这两个符号是不能省去的。\t用来保持华氏温度和摄氏温度之间的距离,\n用来实现必要的跳行。如果在这里还不用这两个东西,相信我,运行结果出来后你会后悔的。
第二个是摄氏温度的计算方式。公式给的明明是℃
=(5/9)(℉-32),为啥我们非要写成蹩脚的
celsius=5*(fahr-32)/9;?你非要写成
celsius=(5/9)*(fahr-32);我也不反对,系统也不会报错,但你运算出来的结果是不正确滴。
因为先前我们定义的fahr和celsius都是整数形式,而在c语言中整型除法的计算规则,它们相除后是要舍位的,而5/9