C++ Primer学习笔记 - 4 - 控制流

主要内容

程序语句一般是顺序执行的,但是控制流可以控制执行路径——说大白话,就是常用的while、for、if等语句

while语句

几个许多语言都有的内容:

  1. while语句的基本模式是: while (condition) statement,在conditon的值为true时运行statement,完成statement的运行后会再检测condition;否则condition的值为false时结束运行。
  2. 几个其他的常见知识:<= 、++ 、+= 在C++中都支持。

习题1.9

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

直接贴代码:

#include <iostream>

int main()
{
    int i = 50;
    int j = 100;
    int result = 0;
    while(i<=j){
        result += i;
        i++;
    };
    
    std::cout << "相加的结果是 " << result << std::endl;
    return 0;
}

结果:
在这里插入图片描述

习题1.10

使用递减运算符在循环中按递减顺序输出10到0之间的整数

#include <iostream>

int main()
{
    int i = 10;
    while(i>=0){
        std::cout << i-- << std::endl;
    }
    
    return 0;
}

在这里插入图片描述

练习1.11

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

要注意判断用户输入的两个整数的大小关系,这里全部从小到大输入。
注意这里没有进行输入数据的有效性判断。

#include <iostream>

int main()
{
    int little  = 0;
    int big = 0;
    std::cout << "请输入两个整数,系统将会为您打印出这两数之间的所有整数" << std::endl;
    std::cout << "请输入第一个数:"<< std::endl;
    std::cin >> little;
    std::cout << "请输入第二个数:"<< std::endl;
    std::cin >> big;

    if(little>big)
    {
        int temp = little;
        little = big;
        big = temp;
    }

    std::cout << "将打印从"<<little<<"到"<<big<<"之间的所有整数"<<std::endl;
    while(little<=big){
        std::cout << little++ << std::endl;
    }
    
    std::cout << "打印完成"<<std::endl;
    
    return 0;
}

运行结果:
在这里插入图片描述

for 语句

与其他语言没有什么大区别,注意格式:

for(init-statement;condition,expression)
	statement

习题1.12

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

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

很简单的问题,从-100加到100,最后等于0。

习题1.13

使用for循环重做while章节中的三个练习

重写1.11吧:

#include <iostream>

int main()
{
    int little  = 0;
    int big = 0;
    std::cout << "请输入两个整数,系统将会为您打印出这两数之间的所有整数" << std::endl;
    std::cout << "请输入第一个数:"<< std::endl;
    std::cin >> little;
    std::cout << "请输入第二个数:"<< std::endl;
    std::cin >> big;

    if(little>big)
    {
        int temp = little;
        little = big;
        big = temp;
    }

    std::cout << "将打印从"<<little<<"到"<<big<<"之间的所有整数"<<std::endl;
    for(int i = little; i <= big; i++)
    {
       std::cout << little++ << std::endl;
    }
       
    std::cout << "打印完成"<<std::endl;
    
    return 0;
}

在这里插入图片描述

练习1.14

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

其实两种形式在一定程度上是等价的,for循环的模块性更强,所有的条件可以方便地写在一起;
在极限情况下,for是可以写得跟while基本一样的:

int a = 0;
for (;a<10;) { }

练习1.15

熟悉编译器的错误信息

并不具有太大的参考性——具体编程时再尝试。

读取不定量的数

std::cin可以放到while的条件中进行判断,遇到错误——不管是输入类型不匹配还是输入文件结束符——会返回一个无效的istream,那么将不能再进入循环。
注意,在windows中条件结束符是Ctrl + z,输入后再按Enter确认。

习题 1.16

编写程序,从cin读取一组数,输出其和

代码:

#include <iostream>
int main()
{
    int res = 0;
    int input = 0;
    while(std::cin >> input){
        res += input;
    }
    std::cout << "输入的和为:" << res ;
    
	std::cout<<std::endl;
}

运行结果
在这里插入图片描述

if 语句

没什么特别的知识点,直接上练习

练习1.17

如果输入的所有值都是相等的,本节程序会输出什么?如果没有重复值,输出又会是怎样的?

这一题 看起来不需要写代码,不过还是先把程序贴出来:

#include <iostream>

int main()
{
    int currVal = 0,val = 0;
    if (std::cin >> currVal) {
        int cnt = 1;
        while(std::cin >> val){
            if (val == currVal) {
                ++cnt;
            }
            else
            {
                std::cout << currVal << " 出现" << cnt << " 次" << std::endl;
                currVal = val;
                cnt = 1;
            }
        }
        std::cout << currVal << " 出现" << cnt << " 次" << std::endl;
    }
    
    
    return 0;
}

  1. 如果所有的值都是相等的,那么会永远输入同一条内容,计数器会不断往上加,但是在结束运行或者出现不同的值之前,不会输入任何内容;
  2. 如果没有重复值,每次输入都会使计数器清空,并且记录新的值,cnt永远为1;

习题 1.18

编译并运行程序,输入全部相等的值;
再次运行程序,输入没有重复的值;

输入相等的值:
在这里插入图片描述

输入不相等的值:

在这里插入图片描述

习题1.19

修改练习1.10编写的程序,使其能处理第一个数比第二个数小的情况。

之前的程序已经实现了这个功能,就不重复写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值