文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

[top]cpu内存

%Cpu(s): 96.0 us用户进程整理cpu的占比,按整个cpu算。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ......

Danni3
19分钟前
4
0
JavaScript权威指南笔记2

第二章、词法结构 1、字符集 JavaScript程序:Unicode字符集编写 Unicode:ASCII和Latin-1的超集,支持所有在用的语言。 ECMAScript 3要求JavaScript的实现必须支持Unicode 2.1及后续版本 EC...

_Somuns
27分钟前
5
0
数据安全管理:RSA算法,签名验签流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一、RSA算法简介 1、加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用。可以在不直接传递密钥的情况下,完成加解密操...

知了一笑
今天
7
0
Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
今天
6
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部