文档章节

C Primer Plus 第6章 C控制语句:循环 6.5 for循环

idreamo
 idreamo
发布于 2016/05/31 05:42
字数 1187
阅读 23
收藏 0

for 循环把所有这三种动作(初始化、测试、更新)都放在一起。通过使用for循环,您可以用程序清单6.11中的程序来代替前一个程序 。

程序清单6.11 sweetie2.c

//sweetie2.c -- 一个使用for循环的例子
#include 
int main (void)
{
    const NUMBER = 22;

    for (count=1;count<=NUMBER;count++)
        printf("Be my valentine!\n);
    return 0;
}

在关键字for之后的圆括号中包含了由两个分号分开的三个表达式。

第一个表达式进行初始化, 它在for循环开始的时候执行一次。第二个表达式是判断条件,在每次执行循环之前都要对它进行求值。当表达式为假时,循环就结束了。第三个表达式进行改变或称为更新,它在每次循环结束时进行计算。

三个控制表达式中的每一个都是完整的表达式,所以任意一个控制表达式的任何副作用(例如把一个变更的值递增)都在程序求下一个表达式的值之前生效。

程序清单6.12 for_cube.c

/*for_cube.c--使用一个for循环产生一个立方表*/
#include 
int main (void)
{
    int num;
    
    printf("    n    n cubed\n");
    for (num=1;num<=6;num++)
        printf("%5d %5d\n",num,num*num*num);
    return 0;
}

for 循环的第一行告诉我们关于循环参数的所有信息:num的初始值,num的最终值以及num在每次循环的增量。

利用for循环的灵活性

for循环还有更多其他的可能性,下面是其中的9种:

1、您可以使用减量运算符来减小计数器而不是增加它。

/*for_down.c*/
#include 
int main (void)
{
    int secs;
    
    for (secs = 5;secs > 0;secs--)
        printf("%d seconds!\n",secs);
    printf("We have ignition!\n");
    return 0;
}
/*下面是它的输出
5 seconds!
4 seconds!
3 seconds!
2 seconds!
1 seconds!
We have ignition!
*/

2、如果您需要,您可以让计数器依次加2、加10,等等:

/*for_13s.c*/
#include 
int main (void)
{
    int n;
    for (n=2;n<60;n=n+13)
        printf("%d \n",n);
    return 0;
}

/*打印输出如下:
2
15
28
41
54
*/

3.您也可以用字符代替数字来进行计数

/*for_char.c*/
#include <stdio.h>
int main (void)
{
    char ch;
    
    for(ch='a';ch<='z';ch++)
        printf("The ASCII value for %c is %d.\n",ch,ch);
    return 0;
}
/*部分输出如下:
The ASCII value for a is 97.
The ASCII value for b is 98.
.
.
.
The ASCII value for z is 122.
*/

这段程序可以工作,因为字符是以整数形式进行存储的,所以这个循环实际上仍然是用整数来计数的。

4、您可以判断迭代次数之外的条件。在for_cube程序中,您可以将

for (num=1;num<=6;num++)

用for (num=1;num*num*num<=216;num++)来代替

如果与限制循环相比,您更关心限制立方的大小,就可以使用这种判断条件。

5、您也可以让数量几何增加而不是算术增加;也就是不是每次加一个固定的数,而是乘上一个固定的数。

6、在第三个表达式中,您可以使用任何合法的表达式。无论您使用的是什么,在每次循环中都会得到更新。

7、您甚至可以让一个或多个表达式为空(但是不要遗漏分号)。只须确保在循环中包含了一些能使循环最终结束的语句。

8、第一个表达式不必初始化一个变量,它也可以是某种类型的printf()语句。要记住第一个表达式只在执行循环的其他部分之前被求值或执行一次。

/*for_show.c*/
#include <stdio.h>
int main()
{
    int num=0;
    
    for (printf("keep entering numbers!\n");num!=6;)
         scanf("%d",&num);
    printf("That's the ont I want!\n");
    return 0;
}
/*这段程序只把第一条消息打印一次,然后在您输入6之前不断地接收数字:
keep entering numbers!
3
5
8
6
That's the one I want!
*/

9、循环中的动作可以改变循环表达式的参数。例如,假定您有一个这样的循环:

for (n=1;n<1000;n=n+delta)

在交互式的程序中,delta的值可以在循环运行时由用户进行改变。这种调节有一点危险,例如把delta设置为0会使您(和循环)停止不前。

简言之,因为您有选择for循环的控制表达式的自由,这使得您在执行固定次数的循环之外还可以做更多的事情。

总结:for语句是一个入口条件循环,即是否再次执行循环的决定是在循环执行之前做出的。

© 著作权归作者所有

idreamo
粉丝 18
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
C Primer Plus 第11章 11.7 ctype.h字符函数和字符串

第7章“C控制语句 分支和跳转”介绍了ctype.h系列字符相关的函数。这些函数不能被 应用于整个字符串,但是可以被应用于字符串中的个别字符。程序清单11.26定义了一个函数,它把toupper( )函数...

idreamo
2016/08/27
52
0
C Primer Plus 第6章 C控制语句:循环 6.2 while语句

6.2.1 终止while循环 这是对while循环至关重要的一点:当您构造一个while循环时,循环中必须包含能改变判断表达式的值来使表达式的值最终为假。否则循环永远不会终止。 6.2.2 循环何时终止 ...

idreamo
2016/05/26
51
0
C Primer Plus 第9章 函数 9.11 编程练习答案

1、设计函数min(x,y)返回两个double数值中较小的数值,同时用一个驱动程序测试该函数。 2、 设计函数chline(ch,i,j),实现指定字符在i列到j列的输出,同时用一个驱动程序测试该函数。 3、编写...

idreamo
2016/07/19
355
0
C Primer Plus 第6章 C控制语句:循环 6.1 再探while循环

程序清单6.1 summing.c 6.11 程序注释 这个循环的判断表达式是:status==1;==运算符是C的相等运算符。当status的值不为1时终止循环。 要使程序正确运行,在每次循环中应该为num获取一个新值,...

idreamo
2016/05/26
59
0
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

tony关东升
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何倒放视频

很多视频通过倒放制作,可以到达不可思议的视觉效果。那这些神奇的倒放视频上如何制作的呢?其实制作方法非常的简单,下面就一起来看看如何倒放视频吧! 具体步骤如下: 第一步: 首先打开手...

白米稀饭2019
29分钟前
2
0
可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! **导读:**InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Ja...

阿里巴巴云原生
29分钟前
3
0
Mybatis 配置详解

完整配置 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.......

xiaolyuh
30分钟前
2
0
与Windows用户共享Mac文件

与 Windows 用户共享 Mac 文件 若要允许用户从 Windows 电脑连接到您的 Mac,请打开文件共享和启用 SMB 共享。 在 Mac 上设置文件共享 在 Mac 上,选取苹果菜单 >“系统偏好设置”,然后点按...

W_Lu
37分钟前
6
0
CaaS: 内容是新的基础设施 Content-as-a-Service

内容是每家企业的必争之地,根据 CMI 的数据报告,88% 的 B2B 企业每天至少产生一篇内容。内容正在成为新的基础设施,Content as a Service 可以被简单理解为一种 CMS(Content Management ...

Authing
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部