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("hello\n");

}

对比上节的goto我们可以这样认为:

1>do相当于原来的标记,用来表示循环开始的地方,只不过这个是c语言里的关键字不能自己随便起了只能用do,另外do后面也不要加冒号。

2>while(i<10);是循环的判断,相当于goto里的if判断,如果条件为真转到do的位置重复执行,条件为假则循环终止。

3>用大括号括起来的部分是要重复执行的代码,这个大括号不能省略。为了叙述方便以后我们管这部分代码就叫循环体。

4>while(i<10);必须加分号,来表示语句结束。当你看到while的第二种写法时你就会知道如果不加分号那while(i<10)  printf("hello\n");也能构成一个循环,所以为了避免歧义要求第一种写法的循环条件后必须加分号。

我们可以看到对比goto,这样写更简洁明了,结构清晰。

while循环的第二种形式:

此种形式是在第一种形式的基础上进一步简化,省略了do,上面的例子用这种形式写法如下:

int main()

{

int i=0;

printf("一个循环语句的例子\n");

while(i<10)

{

printf("*");

i=i+1;

}

printf("hello\n");

}

要点解析:

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");

}

(0)

相关推荐

  • C#语言入门:for循环语句

    在学习C语言的时候,for循环语句是最基础的知识.下面小编就给大家介绍一下C语言中的for循环应用. 操作方法 01 首先新建一个C语言文件,如下图所示,在头部引入C语言的命名空间 02 然后在主函数 ...

  • 简单vb语言入门做到用电脑说出你想说的话

    简单易懂的vb语言入门,在工作生活中有时一句话要说多遍才能引起注意,既枯燥又影响听者心情,不妨用下面的小方法,使用一个脚本文件在桌面,双击一下就能完成电脑替你说话的想法了.而且用在表白时刻也是不错的选 ...

  • c语言入门:[16]退出循环break

    break这个词你在c语言里可以理解成跳出.退出的意思,它用在循环语句里就是退出循环的意思,这里当然不能理解成遇到break程序就结束而是退出循环,循环后面的代码还是正常执行的,这个词单独构成一条c语 ...

  • C#语言入门:[13]for循环语句

    for循环相较while循环可以说更复杂一点,但是也更直观一点 操作方法 01 for循环的格式为 for(语句1;语句2;语句3) { 做事; } 其中 语句1一般用来定义变量,可以不写,即只写一个 ...

  • C#语言入门:[12]while循环语句

    当你要做很多类事的事情的时候,比如你要输出一百个数字,那是不是要一个个输出呢,多麻烦,C#提供更简单的输出方法,叫做循环 操作方法 01 while循环的格式很简单 while(逻辑值) { 做事. ...

  • C#语言入门:[15]多分支选择switch语句

    当你的程序做条件判断时,可以用if...else... 但是有一个难题,当你的条件很多时,打个比方说,有个程序要求选择语言,语言中有中文,英语,日语,法语,德语,俄语如果你用if...else..., ...

  • 单片机c语言入门教程

    C语言是编程的基础语言,如何使用C语言呢?小编与大家分享自己的. 操作方法 01 具体编程前保存文件,单击 文件菜单,下拉菜单中选择 保存按钮. 02 输入文件名,文件类型选择为.c类型. 03 首先 ...

  • C语言入门到精通

    C语言是一门通用计算机编程语言,应用广泛.设计目标是提供一种能以简易的方式编译,是一门很实用的编程入门语言,很多小伙伴都想学习C语言,却迫于无赖,找不到好的方法,那我就给大家讲讲我的吧,希望我的绵薄之 ...

  • C语言入门基础

    这篇文章简单介绍C语言,以及其入门所需要学习的几个方面.以及一个最简单的入门让你程序. 操作方法 01 1.C语言,属于一种高级计算机语言,按语言分类的话,它区别于机器语言,以及汇编语言. 02 2. ...