循环结构程序设计
目录
一、while循环语句
二、for循环语句
三、do-while循环语句
四、循环中的特殊语句
1.break
2.continue
五、综合案例
总结
一、while循环语句
在C语言中,while语句是一种最简单的循环语句,它通过循环控制条件,从而控制语句的重复执行,其一般形式为:while(表达式){循环体语句S;},主要含义为:当表达式值为真(非0)时,,则执行循环语句S,然后再次判断表达式的真假,知道表达式为假(0)才会退出。
注意:任何表达式最终都可以转化为真和假(非0和0)。
从这个过程中可以看出,while是一种当型循环结构,即先进行条件判断,若满足则执行循环体,所以while循环语句条件判断次数比循环体执行次数多一次。
案例:要求输入一个正整数n,计算从0到n的所有整数和。
代码实现:
#include<stdio.h>
int main()
{
int i, n;
float sum;
i = 0;//为了体现从零开始,实际可以初始化为1
sum = 0;
scanf("%d", &n);
while (i <= n)
{
sum += i;
i++;
}
printf("sum=%f\n", sum);
return 0;
}
分析:首先输入一个n,接着让i从0开始,每次循环结束时加一,sum每次循环都加一个数,直到i>n,不满足条件,退出循环,最后打印sum,程序退出。
二、for循环语句
for循环的一般形式为for(表达式1;表达式2;表达式3){循环体语句S};
其执行过程为首先执行表达式1,然后执行表达式2,若表达式2为真,则执行循环体语句S,而后执行表达式3;若表达式2为假,跳出for循环。执行完表达式3再次执行表达式2,判断真假,开始第二次循环。
从这个过程可以看出,for循环也是一种当型循环结构(所以for循环语句条件判断次数比循环体执行次数多一次。),先判断,再执行。其中表达式1多用来初始化赋值,表达式2是判断条件,表达式3是循环控制语句,与while语句相比,for循环语句更加简洁明了,但两者是等价的,可以互换。
案例:计算1~100的累加值
代码实现:
#include<stdio.h>
int main()
{
int i;
float sum;
for (i = 1, sum = 0; i <= 100; i++)
{
sum += i;
}
printf("%f", sum);
return 0;
}
三、do-while循环语句
do-while循环语句是一种直到型循环语句,其一般形式为:do{循环体语句S;}while(表达式);
这种循环语句是先执行循环体语句S,再判断条件是否成立。所以do-while循环语句条件判断次数和循环体执行次数是一样多的。
案例:使用do-while语句计算1~100的累加值
代码实现:
#include<stdio.h>
int main()
{
int i;
float sum;
i = 1;
sum = 0;
do
{
sum += i;
i++;
} while (i <= 100);
printf("%f", sum);
return 0;
}
四、循环中的特殊语句
1.break
前面在switch语句中已经介绍了break的功能,就是提前结束switch语句,在循环语句中是一样的功能,当循环体中的break执行时可以提前结束整个循环。
2.continue
break的功能是结束(跳出)循环,而continue的功能是跳过当前循环,注意只是跳过本次循环,并不是退出整个循环,所以执行了continue语句后,应该执行表达式3(循环控制语句),然后再进行判断,进入下一次循环。
五、综合案例
计算机菜单功能
要求:从键盘接收用户的操作选择,若用户输入的菜单项编号不是1~4,则提示“输入有误(合法的操作功能编号为1~4),请重新输入:”并等待用户重新输入,直到用户输入合法的功能菜单编号为止,然后执行用户选择的功能。
分析:根据题意,要求用户输入编号,编号不合法重新输入,直到合法为止,合法则执行用户选择的功能,这符合先执行一次,再判断是否合法的循环特征,所以可以采用do-while循环来实现。
代码实现:
#include<stdio.h>
int main()
{
double x1, x2, y;
int option;
printf("=========简易计算器=========\n");
printf("1.加法运算\n");
printf("2.减法运算\n");
printf("3.乘法运算\n");
printf("4.除法运算\n");
printf("您要执行的运算是(请输入上述菜单项前的编号):");
do
{
scanf("%d", &option); //接收功能选择
if (option < 1 || option>4) //验证所输入的功能选择编号是否合法
printf("输入有误(合法的操作功能编号为1~4),请重新输入:");
else
break;
} while (1); //1为恒真,表示这个循环要一直执行,直到输入合法才能break退出
//输入提示信息和接收操作数
printf("请输入两个小数,以空格作为分隔符:");
scanf("%lf%lf", &x1, &x2);
//根据功能选择编号进行判断和执行相应的运算
switch (option)
{
case 1:
y = x1 + x2;
printf("%.2lf + %.2lf的计算结果为:%.2lf\n", x1, x2, y);
break;
case 2:
y = x1 - x2;
printf("%.2lf - %.2lf的计算结果为:%.2lf\n", x1, x2, y);
break;
case 3:
y = x1 * x2;
printf("%.2lf * %.2lf的计算结果为:%.2lf\n", x1, x2, y);
break;
case 4:
y = x1 / x2;
printf("%.2lf / %.2lf的计算结果为:%.2lf\n", x1, x2, y);
}
return 0;
}
运行结果为:
总结
本节介绍了循环结构程序的设计,包括了三种循环语句及特点(while,for,do-while),break和continue语句,还分析了4个案例。这些在程序设计中都是基本功,随处可见。好了本节到此结束,拜拜!