第六章 C控制语句:循环

 一、循环

  1、while和do while循环

  2、for循环

 

 

 一、循环

1、while和do while循环

(1)== 相等运算符

1)判断status 是否等于1,而 status = 1是将1赋给status, 不要搞混;

2)是while循环下去的条件,而且在while循环内不断修改status的值,且scanf_s接受的是ld,如果输入一个字符,则scanf_s将返回失败,返回一个不等于1的值,此时while循环退出;

3)对于 status =scanf_s("%ld",&num),scanf()返回成功读取输入项的数量,如果scanf()成功读取一个整数,把该数存入 num 并返回 1,随后赋给 status,如果用户输入的不是数字,scanf() 会读取失败并返回 0。如果 scanf() 在转换值之前出了问题(例如,检测到文件结尾或遇到硬件问题),会返回一个特殊值EOF (其值通常被定义为-1)。这个值也会引起循环终止。

 1 #include<stdio.h>
 2 int main(void)
 3 {
 4     long num;
 5     long sum = 0;
 6     int status;
 7 
 8     printf("Please enter an integer to be summed");
 9     printf("(q to quit): ");
10     status=scanf_s("%ld", &num);
11     while (status == 1)
12     {
13         sum = num + sum;
14         printf("Please enter next integer to be summed(q to quit): ");
15         status = scanf_s("%ld", &num);
16     }
17     printf("Those integers sum to %ld.\n", sum);
18 
19     return 0;
20 
21 }
FileName.c

(2)while可以没有大括号

如下程序,解析:while这一行就是一条语句,进行不断循环,当while循环为假的时候,才跳出循环,此时,n 为4。

屏幕截图 2025-09-27 193251

(3)fabs函数在while循环中的使用方法

 

 1 #include<math.h>
 2 #include<stdio.h>
 3 int main(void)
 4 {
 5     const double ANSWER = 3.14159;
 6     double response;
 7     
 8     printf("What is the value of pi?\n ");
 9     scanf_s("%lf", &response);
10     while (fabs(response - ANSWER) > 0.0001)
11     {
12         printf("Try again!\n");
13         scanf_s("%lf", &response);
14     }
15     printf("Close enough!");
16 
17     return 0;
18 }
Fabs在while循环中的使用方法.c

 

 

2、for循环

 

 

 

 

 

本章将介绍以下内容:

1、关键字——for、while、do while

2、运算符——<、>、>=、<=、!=、==、+=、*=、-=、/=、%=;

3、函数——fabs();

4、C语言有三种循环——for、while、do while;

5、使用关系运算符构建控制循环的表达式;

6、其他运算符;

7、循环常用的数组;

8、编写有返回值的函数。

一门语言应该提供以下三种形式的程序流:(1)执行语句序列;(2)如果满足某些条件就重复执行语句序列(循环);(3)通过测试选择执行哪一个语句序列(分支)。

  6.1 再探 while 循环

  屏幕截图 2025-09-27 142306

   解析:1、== 是相等运算符,判断status 是否等于1,而 status = 1是将1赋给status, 不要搞混。2、对于 status =scanf_s("%ld",&num)scanf()返回成功读取输入项的数量,如果scanf()成功读取一个整数,把该数存入 num 并返回 1,随后赋给 status,如果用户输入的不是数字,scanf() 会读取失败并返回 0。如果 scanf() 在转换值之前出了问题(例如,检测到文件结尾或遇到硬件问题),会返回一个特殊值EOF (其值通常被定义为-1)。这个值也会引起循环终止。

status = scanf_s("%ld",&num);
while (status == 1)
{
    /* 循环行为 */
    status = scanf_s("%ld",&num);
}
//可以用以下这些代替
while (scanf_s("%ld",&num)
{
    /* 循环体行为 */
}

  6.2 while 语句

 屏幕截图 2025-09-27 193251

  解析:while这一行就是一条语句,进行不断循环,当while循环为假的时候,才跳出循环,此时,n 为4。

  6.3 用关系运算符和表达式比较大小

下面的程序利用 fabs()函数来判断一个数是否接近预期结果

#include<math.h>
#include<stdio.h>
int main(void)
{
    const double ANSWER = 3.14159;
    double response;
    
    printf("What is the value of pi?\n ");
    scanf_s("%lf", &response);
    while (fabs(response - ANSWER) > 0.0001)
    {
        printf("Try again!\n");
        scanf_s("%lf", &response);
    }
    printf("Close enough!");

    return 0;
}

  解析:1、比较浮点数时,尽量只使用<和>。因为浮点数舍入误差会导致在逻辑上应该相等的两数却不相等。2、fabs()函数(声明在math.h 头文件中)可以方便地比较浮点数,该函数返回一个浮点值的绝对值。

  6.3.2其他真值:下面的函数证明  “0为假非0为真”

屏幕截图 2025-09-27 203443

 

posted @ 2025-09-27 14:25  豆豆豆豆沙包  阅读(5)  评论(0)    收藏  举报