C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.1 再探while循环

C语言写出强大而灵活的诀窍是控制程序流。对于计算机科学(是研究计算机,不是用计算机做研究)而言,一门语言应该提供以下
3种形式的程序流:
*执行语句序列;
*如果满足条件就重复执行语句序列(循环)
*通过测试选择执行哪一个语句序列(分支)
C语言中的循环:while循环、for和do while。
第3种形式用于在不同的执行方案之间进行选择,让程序更“智能”,且极大地提高了计算机的用途。
6.1 再探while循环
根据用户从键盘输入的整数进行求和。程序利用了scanf()的返回值之来结束循环。
/* summing.c -- sums integers entered interactively */
#include <stdio.h>
int main(void)
{
    long num;
    long sum = 0L;      /* initialize sum to zero   */
    int status;
    
    printf("Please enter an integer to be summed ");
    printf("(q to quit): ");
    status = scanf("%ld", &num);
    while (status == 1) /* == means "is equal to"   */
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit): ");
        status = scanf("%ld", &num);
    }
    printf("Those integers sum to %ld.\n", sum);

    return 0;

/* 输出:

*/ 

0后面添加L后缀明确告诉编译器把0当做long类型对待。
6.1.1 程序注释
==运算符是C的相等运算符(equality operator)。
scanf()的两个不同特性来完成。首先,使用scanf()读取num的一个新值,然后,检查scanf()的返回值判断是否成功获取值。scanf()返回成功读取项的数量。如果读取不成功,scanf()则会把输入的字符放回输入队列中。
如果scanf()在转换值之前出了问题(例如,检测到文件结尾或遇到硬件问题,会返回一个特殊值EOF(其值通常被定义为-1)。这个值也会引起循环终止。
程序利用scanf()的双重特性避免了在循环中交互输入时的这个棘手的问题。
程序的结构。总结如下:
把sum初始化为0
提示用户输入数据
读取用户输入数据
当输入的数据位整数时,
    输入添加给sum,
    提示用户进行输入,
    然后读取下一行输入
输入完成后,打印sum的值
顺带一提,这叫作伪代码(pseudocode),是一种简单的句子表示程序思路的方法,它与计算机语言的形式相对应。伪代码有助于设计程序的逻辑。确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码。使用伪代码的好处之一是,可以把注意力集中在程序的组织和逻辑上,不用在设计程序时还有分心如何用编程语言来表达自己的想法。
while循环是入口条件循环。
6.1.2 C风格读取循环
可以用这些代码替换:
while( scanf( "%ld", &num ) == 1 ){
    /*循环行为*/ 

第2种形式同时使用scanf()的两种不同的特性。C的语法特性可以让你的程序更简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值