第六章 C控制语句:循环
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 }
(2)while可以没有大括号
如下程序,解析:while这一行就是一条语句,进行不断循环,当while循环为假的时候,才跳出循环,此时,n 为4。
(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 }
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 循环
解析: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 语句
解析: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为真”