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");
}
-
电脑上怎样申请QQ号
很多人在打开电脑的时候,都会习惯登录QQ跟别人聊天,如果没有QQ账号的话,可以在电脑上免费申请QQ号,或者之前的QQ号是别人给的,自己不喜欢,也可以重新申请一个新的QQ号,在这里,跟大家分享一下在电脑上如何免费申请QQ号的方法。电脑上免费申请QQ号的步骤(01)在电脑上下载和...
-
QQ浏览器如何安装应用插件
QQ浏览器如何安装应用插件,浏览器的应用插件的安装对我们来说是非常方便的。下面以安装护眼导航应用为例,介绍如何安装浏览器应用插件。操作方法(01)打开QQ浏览器,点击右上角的“”+“”如图所示(02)进入了安装应用的首页,如图所示(03)比如安装一个护眼的应用,鼠标停留在...
-
EPSON R230打印机清零软件无法使用的解决方法
当EPSONR230打印机两个红灯闪烁,并提示“打印机的墨管已到它们的使用寿命”时就需要使用清零软件进行处理,可是在我们使用清零软件的过程中,总是出现这样或那样的问题。那么我们在遇到这些问题时该如何解决呢?操作方法(01)首先当打开清零软件可执行文件时,系统会弹出...
-
在Word文档中怎么样进行简繁体转换?
字体有繁体和简体之分,而Word文档主要的功能是记录保存文本文字,可能由于区域不一样,有的喜欢用简体有的喜欢用繁体,为了方便查看,就需要用到简繁体的相互转换了。操作方法(01)方法一:比较常用的,就是用Word文档自带的简繁体转换功能,找到审阅——简转繁——便可将选择的...