c语言入门:[14]while循环
上节我们学习的goto个人认为是初学者最好理解的循环语句,使用起来也很方便,goto语句使用起来非常灵活,但是就是因为太灵活了所以许多有编程的人都觉得goto往往会使程序难于阅读造成逻辑混乱,有的时候写代码多了一会跳转到这一会跳转到那往往会把编程者自己都搞糊涂了更别说别人了,还有一点就是在c基础上发展起来的c#和java编程语言里不支持goto,所以我们还是要学习能够替代goto的其它循环的写法,这节我们来学习while循环,while循环有两种形式下面分别作介绍。
while循环的第一种形式:
上节goto的例子如果用while写就是这样。
int main()
{
int i=0;
printf("一个循环语句的例子n");
do
{
printf("*");
i=i+1;
}while(i<10);//注意这里必须写分号
printf("hellon");
}
对比上节的goto我们可以这样认为:
1>do相当于原来的标记,用来表示循环开始的地方,只不过这个是c语言里的关键字不能自己随便起了只能用do,另外do后面也不要加冒号。
2>while(i<10);是循环的判断,相当于goto里的if判断,如果条件为真转到do的位置重复执行,条件为假则循环终止。
3>用大括号括起来的部分是要重复执行的代码,这个大括号不能省略。为了叙述方便以后我们管这部分代码就叫循环体。
4>while(i<10);必须加分号,来表示语句结束。当你看到while的第二种写法时你就会知道如果不加分号那while(i<10) printf("hellon");也能构成一个循环,所以为了避免歧义要求第一种写法的循环条件后必须加分号。
我们可以看到对比goto,这样写更简洁明了,结构清晰。
while循环的第二种形式:
此种形式是在第一种形式的基础上进一步简化,省略了do,上面的例子用这种形式写法如下:
int main()
{
int i=0;
printf("一个循环语句的例子n");
while(i<10)
{
printf("*");
i=i+1;
}
printf("hellon");
}
要点解析:
1>此种写法就跟if语句的写法类似,大括号可以省略,如果不写大括号那循环体就是while后面的第一条语句,你如果在while(i<10)后面直接加分号也可以,那样循环体就为空。
2>while(i<10)不是判断一次就拉倒,而是循环重复判断,每次判断只要条件为真就执行一次循环体。什么时候判断为假了while语句就结束,循环终止。像这个例子循环体被重复执行了10次而i<10这个条件却判断了11次,正是因为第11次判断结果为假循环才终止了。
while的这两种写法是有区别的
第一种写法是:先执行一遍循环体,然后再判断
第二种写法是:先判断,条件不符合则直接退出,循环体可能一次都不被执行
用第一种写法写的程序都能修改成第二种写法的形式。
通过下面的两个例子来讲解下
例题1:不停地从键盘输入字符直到输入q结束。
char ch;//用来存储每次从键盘输入的字符
scanf("%c",&ch);//重复执行这句话能够实现“不停地从键盘输入字符”的要求,而第一个字符总是要输入的,也就是说这句话至少要执行一遍,适合do while
int main()
{
char ch;
do
{
scanf("%c",&ch);
}while(ch!='q'); //只要输入的不是q就循环,重复执行scanf("%c",&ch);
}
运行这个例子当你从键盘输入字符的时候最好输入一个一回车,如下图。
如果用第二种写法改写,我们就可以给ch一个初始值让第一次循环判断肯定成立,这样scanf("%c",&ch);就至少会执行一次
int main()
{
char ch='a';
while(ch!='q')
{
scanf("%c",&ch);
}
}
第一次判断ch!='q'肯定为真,因为ch里初始存放的是'a'这个字符,所以scanf("%c",&ch);得到执行,ch里的值变成了运行程序的人从键盘上输入的一个字符
第二次判断ch!='q' 结果就不一定了,因为我们也不知道ch里存储的是什么,这要看运行程序的人从键盘输入了什么字符。
很显然这种改写的方式没有第一种写法好懂,而且写起来还费事。
例题2:从键盘输入一个自然数,输入几就输出几个星号。
分析下问题,如果我们输入的是0,那一个星号都不输出,所以我们需要先判断,这种情况就适合用第二种写法。
int main()
{
int i=0;
int n;//表示从键盘输入的整数
printf("请输入一个自然数:");
scanf("%d",&n);
while(i
{
printf("*");
i=i+1;
}
printf("n");
}
-
如何用ppt绘制直尺刻度
老师们在教学到认识刻度时会经常用到画刻度,尤其是出个练习题,画个刻度非常头疼,画不标准或者不规范,今天我来告诉老师们一个非常简单的绘制方法,一学就会。操作方法(01)先画一条水平的直线(大约10多厘米),和一条竖直线段(0.2-0.3厘米)。(02)将竖直的线段复制并粘贴几个(需要...
-
如何把电脑下载的搜狗手机输入法皮肤安装到手机
有时候我们在使用输入法键盘的时候,喜欢吧键盘背景换成自己喜欢的皮肤,今天我来说说怎么把电脑下载好的输入法皮肤安装到手机上,一起来看看吧。操作方法(01)我们在浏览器上面打开搜狗手机输入法的官方网址。()(02)进去官网后,我们找到超级皮肤并且点击它。(03)然后在皮肤布...
-
怎样制作电子版的贺卡?
在这个互联网如此发达的时代,每逢亲朋好友过生日,各种节日的到来之际,我们总想借助互联网送去自己的祝福。往往想给亲朋好友邮寄一张贺卡,然而网络搜索到的贺卡有时不尽人意,或没有创意,或没法表达自己的感情。那么,为什么不尝试亲手制作一张贺卡呢?步骤/方法(01)设置贺...
-
如何使用PPT输入化学式
今天我给大家尤其式学生们介绍一个怎么使用PPT输入化学式的传统方法,希望能帮到你们,一起来看看吧!操作方法(01)首先你需要做的就是打开一个新建的文本,在上方的菜单栏里面选择插入选项卡,看到右边选择绘制横排文本框。(02)线使用鼠标选中文本框,右键单击鼠标,选择跳出选...