文章教程

全国计算机等级考试二级C语言6.1while语句

8/22/2020 10:24:52 PM 人评论 次浏览

6.1 while语句

考点1 while语句

真考链接

考点1在选择题中是必考内容,主要以读程序的形式出现。此知识点属于重点理解重点掌握的内容。在操作题考试中,主要在修改和编程题中进行考查,用于程序流程的控制。考核概率为40%。

while语句的一般形式如下:

while(表达式)

循环体

说明:

while是C语言的关键字。紧跟其后的表达式可以是C语言中任意合法的表达式,该表达式是循环条件,由它来控制循环体是否执行。循环体只能是一条可执行语句,当多项操作需要多次重复做时,可以使用复合语句。

执行过程:

(1)计算紧跟while后括号中表达式的值。当表达式的值为非0时,则接着执行while语句中的内嵌语句;当表达式值为0 时,则跳过该 while语句,执行该while结构后的其他语句。

(2)执行循环体内嵌语句。

(3)返回去执行步骤(1),直到条件不满足为止,即表达式的值为0时,退出循环,while结构结束。特点:先对表达式进行条件判断,后执行语句。

小提示

由while语句构成的循环结构不同于由if语句构成的选择结构。当if后面的条件表达式的值为非零时,其if子句只执行一次;而当while后面的条件表达式的值为非零时,其后的循环体中的语句将被重复执行。而且在设计循环时,通常应在循环体内改变与条件表达式中有关变量的值,使条件表达式的值最终变成零,以便能及时退出循环。

常见问题

如果while后面的表达式为空语句,那么循环体会如何执行呢?

如果后面的表达式为空语句,则说明让循环体循环下去的任何条件都满足,这样导致的后果就是形成死循环。

真题精选

【例1】在下列选项中,没有构成死循环的是(  )

A.    B.

int i = 100;    for(;;)

while(1)

{ i = i % 100 + 1;

if(i > 100)break;

C.    D.

int k=10000;    int s=36;

do{k++;}while(k>10000);    while(s) --s;

【答案】D

【解析】选项A的循环表达式的条件永远为1,并且小于100的数与100取余不超过99,所以在循环体内表达式i%100+1的值永远不会大于100,break语句永远不会被执行,所以是死循环;选项B的括号内没有能使循环停下来的变量增量,是死循环。选项C中先执行k++,使k=10001,从而使循环陷入死循环

【例2】以下程序的输出结果是(  )

int n=10;

while(n>7)

{ n--;

printf("% d#",n);

A.1098    B.987    C.10987    D.9876

【答案】B

【解析】以上程序段只包含了一个while循环,循环的控制表达式是n>7,只要n的值大于7,循环体就不断执行。在进入循环时,n的值为10。循环体内只有两条语句,每循环一次,首先n的值减1,然后输出n的值;由于n的初值为10,所以执行循环中的n--语句后,n的值依次为9、8、7,并进行输出,printf每执行一次就在最后输出一个空格。当n的值为7时,while的控制表达式n>7的值已为0,因此退出循环。

【例3】以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空

试题程序

#include <stdio.h>

main()

{ float x,amax,amin;

scanf("% f",&x);

amax=x;amin=x;

while(______)

{ if(x>amax)amax=x;

if(______)amin=x;

scanf("% f",&x);

printf("\namax =% f\n amin =% f\n", amax,amin);

【答案】x>=0 x<amin

【解析】阅读以上程序可知,最高成绩放在变量amax中,最低成绩放在amin中。while循环用于不断读入数据放入x中,并通过判断把大于amax的数放入amax中,把小于amin的数放入amin中。因此在第二个横线处应填入x<amin。while后的表达式用以控制读入的成绩是否为负数,若是负数,读入结束并且退出循环,因此在第一个横线处应填入x>=0,即当读入的值大于等于0时,循环继续,小于0时循环结束。

教程类别