教材:C语言程序设计教程(第二版)
主编:王敬华、林萍、张清国编著
本章主要有两个很重要的小节:
第一小节主要是介绍循环语句和配套使用的函数
第二小节主要是介绍循环结构类型的选择和转换
1.循环结构的含义:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件成为循环条件,反复执行的程序段成为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。
2.while语句:
while语句是当型循环控制语句,一般形式为:
while(表达式)
语句;
其中,表达式是循环条件,语句是循环体,如果是多条语句,要用符合语句。表达式可以是任意类型的表达式
while循环的流程图如图所示,当表达是为真时,执行循环语句,继续判断,直到表达式为假,退出循环。
重要例题:求两个正整数的最大公因子
求最大公因子是用欧几里得算法求得的
(1)输入m和n
(2)r=m%n,m=n,n=r;
(3)如果n=0;那么m就是最大公因子,否则继续执行(2)
代码:
#include
void main()
{
int m,n,r;
scanf("%d%d",&m,&n);
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
printf("%d",m);
}
3.do-while循环
do-while循环是直到型循环,它的一般形式为:
do
语句;
while(表达式);
while最后面的分号一定不能省。
do-while语句流程图如图所示,先执行一次循环体,再判断循环条件,表达式的值为真时,继续执行语句,继续判断循环体,直到表达式的值为假,退出循环。
do-while语句与while语句的区别在于do-while是先执行后判断,,至少执行一次循环体,而while是先判断后执行,如果条件不满足,很有可能一次也不执行。
4.for语句or语句是循环控制结构中使用较广泛的一种循环控制语句,特别适合于已经知道循环次数的情况,一般形式为:
for(表达式1;表达式2;表达式3)
语句;
其中表达式2是循环条件,表达式1是给循环变量赋初始值,表达式3给循环控制变量增量或减量;表达式之间用分号隔开。
表达式1、表达式2和表达式3可以为任意类型的表达式,包括逗号表达式,并且都是任选项,可以省略其中的一个、两个或者全部,但是分号不可以省略噢;
如果表达式2为空,则相当于表达式2恒为真,循环是个死循环
循环体也可以是空语句
for循环流程图如图所示,首先执行表达式1的值,再执行表达式2的值进行判断,如果表达式2的值正确,接着开始执行循环语句,再执行表达式3的值,直到表达式2的值为假,则退出循环。
重要例题:计算12+34+56+78+910+……99*100
代码:
#include
void main()
{
int i;
long sum=0;
for(i=0;i<=99;i+=2)
sum+=i*(i+1);
printf("%ld",sum);
}
5.循环嵌套:
循环嵌套是一个循环体中有另外一个循环叫循环嵌套,需要注意内外两层循环不重名
6.break语句
break语句有两个用途:
(1)在switch语句中,case子句完成后,能够通过break语句,立刻跳出switch结构
(2)在循环语句中,break语句能够立刻跳出该层循环,执行该层循环的后一条语句
重要例题:将用户输入的小写字母转换成大写字母,直到输入非小写字母字符
代码:
#include
void main()
{
char ch;
while(1)
{
ch=getchar();
if(ch>='a'&&ch<='z')
{
ch=ch-'a'+'A';
putchar(ch);
}
else break;
}
}
7.continue语句
continue语句是结束本次循环,继续开始下一次循环;
continue语句只能用于while、do-while和for语句构成的循环结构中,只对最内层的循环体语句起作用。
重要例题:将用户输入的所有小写字母转换成大写字母
代码:
#include
void main()
{
char ch;
while(1)
{
ch=getchar();
if(ch>='a'&&ch<='z')
{
ch=ch-'a'+'A';
putchar(ch);
}
else continue; //如果输入的不是小写字母,则开始下一次的重新输入
}
}
8.goto语句
goto语句也称无条件转移语句,有两个用途
(1)与条件语句一起作用,构成循环
(2)能够跳出一层或者多层循环
但是一般不太允许使用goto语句,避免造成程序的混乱
经典例题:求1-100的累计求和
#include
void main()
{
int i=1,sum=0;
loop:sum+=i++;
if(i<=100)
goto loop;
printf("%d",sum);
}
9.exit()函数
exit()函数是C语言的标准库函数,它不是程序控制语句,但是它和break、continue、goto等流程语句的作用类似,可以用于控制系统的流程。
exit()函数的作用是终止整个程序的执行,强制返回到操作系统,当程序执行时的必要条件不满足时,常用到exit()函数,但是记得调用头文件
经典例题:输入三角形的三条边长,求三角形的面积
面积公式 :sqrt(s(s-a)(s-b)(s-c)) 其中a、b、c是三角形三条边,s是(a+b+c)/2
代码:
#include
#include
#include
void main()
{
float a,b,c,s;
scanf("%f%f%f",&a,&b,&c);
if(a<=0||b<=0||c<=0||a+b<=c||b+c<=a||c+a<=b)
exit(-1);
s=(a+b+c)/2;
printf("%f",sqrt(s*(s-a)*(s-b)*(s-c)));
}