1.4 控制流

1.4.1 while语句

#include <iostream>

int main() {

    int sum = 0, val = 1;
    //只要val的值小于等于10,while循环就会持续执行
    while (val <= 10) {
        sum += val;        //将sum+val赋予sum
        val++;            //将val+1
    }

    std::cout << "Sum of 1 to 10 inclusive is " 
              << sum << std::endl;
    return 0;
}

1.4.1 节练习

练习 1.9:编写程序,使用while循环将50到100的整数相加

#include <iostream>

int main() {

    int sum = 0, val = 50;
    //只要val的值小于等于100,while循环就会持续执行
    while (val <= 100) {
        sum += val;        //将sum+val赋予sum
        val++;            //将val+1
    }

    std::cout << "Sum of 50 to 100 inclusive is " 
              << sum << std::endl;
    return 0;
}
View Code

练习 1.10:编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数

#include <iostream>

int main() {

    int val = 10;
    //只要val的值大于等于0,while循环就会打印出val的值
    while (val >= 0) {
        std::cout << val << " ";
        --val;
    }
    std::cout << std::endl;
    return 0;
}
View Code

练习 1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。

#include <iostream>

int main() {

    int a, b;
    std::cout << "请输入两个整数: ";
    std::cin >> a >> b;
    int i = a;
    while (i <= b) {
        std::cout << i << " ";
        ++i;
    }
    std::cout << std::endl;
    return 0;
}
View Code

1.4.2 for语句

编写从1加到10的语句

 1 int main() {
 2 
 3     int sum = 0;
 4     for (int val = 1; val <= 10; ++val) {
 5         sum += val;
 6     }
 7     std::cout << "Sum of 1 to 10 inclusive is "
 8               << sum << std::endl;
 9 
10     return 0;
11 }

简要重述一下for循环的总体执行过程:

  1. 创建变量val,将其初始化为1.
  2. 检测val是否小于等于10.若检测成功,执行for循环体。若失败,退出循环。
  3. 将val的值增加1.
  4. 重复第二步的条件检测,只要条件为真就继续执行剩余步骤。

注意:变量val仅在for循环内部存在,在循环结束之后是不能使用的。

1.4.2 节练习

练习 1.12:下面的for循环完成了什么功能?sum的终值是多少?

int sum = 0;
    for (int i = -100; i <= 100; ++i) {
        sum += i;
    }

完成了从-100加到100,sum的最终值为0。

练习 1.13:使用for循环重做1.4.1 节中的所有练习

编写程序,使用for循环将50到100的整数相加

 1 #include <iostream>
 2 
 3 int main() {
 4 
 5     int sum = 0;
 6     for (int i = 50; i <= 100; ++i) {
 7         sum += i;
 8     }
 9 
10     std::cout << sum << std::endl;
11 
12     return 0;
13 }
View Code

编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数

 1 #include <iostream>
 2 
 3 int main() {
 4 
 5     //int sum = 0;
 6     for (int i = 10; i >= 0; --i) {
 7         std::cout << i << " ";
 8     }
 9 
10     return 0;
11 }
View Code

编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数

 1 #include <iostream>
 2 
 3 int main() {
 4 
 5     std::cout << "Please enter two numbers:";
 6     int a, b;
 7     std::cin >> a >> b;
 8     for (int i = a; i <= b; ++i) {
 9         std::cout << i << " ";
10     }
11     return 0;
12 }
View Code

练习 1.14:对比for循环和while循环,两种形式的优缺点各是什么?

  • for循环:循环控制变量的初始化、循环条件和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况
  • while循环:循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。

练习 1.15:编写程序,包含第14页的“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

1.4.3 读取数量不定的输入数据

实现对用户输入的一组数求和

 1 #include <iostream>
 2 
 3 int main() {
 4 
 5     int sum = 0, value = 0;
 6     while (std::cin >> value) {
 7         sum += value;
 8     }
 9     std::cout << "Sum is: " << sum << std::endl;
10     return 0;
11 }

当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即使流未遇到错误,那么检测成功。

当遇到文件结束符(Ctrl+Z),或遇到一个无效输入时(例如读入的值不是一个整数),istream对象的状态就会变为无效。处于无效状态的istream对象会使条件变为假。

1.4.3 节练习

练习 1.16:编写程序,从cin读取一组数,输出其和。

 1 #include <iostream>
 2 
 3 int main() {
 4 
 5     int sum = 0, value = 0;
 6     while (std::cin >> value) {
 7         sum += value;
 8     }
 9     std::cout << "Sum is: " << sum << std::endl;
10     return 0;
11 }
View Code
原文地址:https://www.cnblogs.com/fuqia/p/8732940.html