1、while 语句用来实现“当型”循环结构。其一般形式如下:
while(表达式)语句
当表达式为非0值时,执行while语句中的内嵌语句。其流程图见图6.1,其特点是先判断表达式,后执行语句.
图 6.1
图 6.2
例6.2 求
用传统流程图和N-S结构流程图表示算法,见图6.2(a)和图6.2(b)。
根据流程图写出程序:
main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}
需要注意:
(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。如果不加花括弧,则while语句的范围只到while后面第一个分号处。例如,本例中while语句中如无花括弧,则while语句范围只到“sum=sum+i;”。
(2)在循环体中应有使循环趋向于结束的语句。例如,在本例中循环结束的条件是“i>100”,因此在循环体中应该有使i增值以最终导致i>100的语句,今用“i++;”语句来达到此目的。如果无此语句,则i的值始终不改变,循环永不结束.
2、 goto语句为无条件转向语句,它的一般形式为
goto语句标号;
语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成, 其第一个字符必须为字母或下划线。不能用整数来做标号。例如:
goto label_1;
是合法的,而
goto 123;
是不合法的。结构化程序设计方法主张限制使用goto 语句,因为滥用goto 语句将使程序流程无规律、可读性差。但也不是绝对禁止使用goto语句。一般来说,可以有两种用途:
(1)与if语句一起构成循环结构;
(2)从循环体中跳转到循环体外,但在C语言中可以用break 语句和continue语句跳出本层循环和结束本次循环。goto语句的使用机会已大大减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto 语句。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。
例6.1 用if语句和goto 语句构成循环,求。
此问题的算法是比较简单的,可以直接写出程序:
main()
{
int i,sum=0;
i=1;
loop:if(i<=100)
{sum=sum+i;
i++;
goto loop;}
printf("%d\n",sum);
}
运行结果如下:
5050
这里用的是“当型”循环结构,当满足“i<=100”时执行花括弧内的循环体。