9.从零开始学习C语言--do...while循环语句

do...while循环

1.基本格式

do

{

   语句A;

}  while (表达式)

2.代码执行顺序

执行语句A,再判断表达式是否成立,成立则继续执行A,不成立则跳出循环。

3.和while以及for的区别

do...whilewhile以及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;   
}

你可能感兴趣的:(while)