do...while循环
1.基本格式
do
{
语句A;
} while (表达式)
2.代码执行顺序
执行语句A,再判断表达式是否成立,成立则继续执行A,不成立则跳出循环。
3.和while以及for的区别
do...while和while以及for不能想到转换
从执行流程上可以看到:
while以及for是先进行判断再开始循环;
do...while是先循环一交,再进行判断;;
所以do...while循环的语句A,总会被执行一次,而while以及for的语句如果第一次表达式判断就不成立,则一次都不会被执行。
4.do...while的用途
do...while一般被用于人机交互,如根据用户的输入决定是否要再次开始循环;
参考
一元二次方程求解程序:
# include <stdio.h>
# include <math.h>
int main(void)
{
int a = 0,b = 0,c = 0;
float delta=0; //delta存放的是b^2-4*a*c
float x1=0, x2=0; //存放一元二次方程的两个解
char ch;
do
{
printf("求ax^2+bx+c=0的解nn");
printf("请输入a的值:");
scanf("%d", &a);
printf("请输入b的值:");
scanf("%d", &b);
printf("请输入c的值:");
scanf("%d", &c);
delta = b*b - 4*a*c;
if (delta>0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("该一元二次方程有两个解,x1=%f,x2=%fn",x1,x2);
}
else if (delta==0)
{
x1 = (-b)/(2*a);
x2 = x1;
printf("该一元二次方程有一个唯一解,x1=x2=%fn",x1);
}
else
{
printf("无解n");
}
printf("请问您是否要继续(Y/N):");
scanf(" %c", &ch);
/*
%c前一定要加个空格,否则程序执行错误;
在上一个 scanf("%d", &c) 输入的时候,系统接收了一个数字和一个回车换行符,而只把数字给了变量c,说明还有个换行符留在缓冲区中,所以这个空格是接收换行符的,
如果没有空格,系统会直接把换行符赋值给ch;
对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c前有空格,scanf()则读取标准输入流中第一个非空白字符。
*/
printf("n");
} while ('y'==ch || 'Y'==ch);
return 0;
}