1.4 控制语句
程序的结构有顺序结构和循环结构和选择结构这三种,那么C++也提供了相关的控制结构
一.循环控制语句
1.1 while语句
编写一个求1~10的和的程序(见while_sumsOne_Ten.cpp)
1.1.1 关于while语句
1.1.1.1 while语句由条件和循环体组成,条件必须是能够最终转换为(无论是显式转换还是隐式转换)一个bool表达式的运算
结果,如果条件为真,那么继续执行循环体,否则终止循环
while(条件)
{
//要循环的语句
}
1.1.1.2 还有这种缩排版的while语句(非必要时不要这样子用,一旦循环体内很复杂后,非常影响可读性)
while(条件) {循环体语句}
1.2 for语句
for语句是C++或其他编程语言中最受欢迎的循环方式了,它的好处在于,可以直接在for后面的循环条件里进行循环条件变量的
定义(C++可以,但C语言不行)
编写一个求1~10的和的程序(见for_sumsOne_Ten.cpp)
1.2.1
for(循环变量初始化语句;循环条件;循环变量每次循环后的操作)
{
//要循环的语句
}
注意:循环体条件的定义语句只会执行一次,然后之后只会在循环条件和对循环变量的每次操作之间反复执行
二.练习
Exercise
1.9:
下列循环做什么?sum 的最终值是多少?
int sum = 0;
for (int i = -100; i <= 100; ++i)
sum += i;
//求出-100到100的累加的和,最终值是0
Exercise
1.10:
用 for 循环编程,求从 50 到 100 的所有自然数的和。
然后用 while 循环重写该程序。
//见for_e1.cpp和while_e1.cpp
Exercise
1.11:
用 while 循环编程,输出 10 到 0 递减的自然数。然后
用 for 循环重写该程序。
//见while_e2.cpp和for_e2.cpp
Exercise
1.12:
对比前面两个习题中所写的循环。两种形式各有何优缺
点?
//while语句的特点是比较简洁易懂,但循环条件不能直接现场定义使用,必须要提前定义好才能使用;而for语句就恰好解决了这个
问题,另外for循环可以对循环条件变量进行重新赋值(一般在C语言中使用),还可以现场直接定义循环体变量(C++中支持这样子做)
三.选择语句
3.1 if语句
我们刚刚的例子只是求1到10之间的数的和,那么如果延伸到求a~b这个范围内的数的和,虽然我们应该知道应该如何去实现
但是,如果用户输入的a比b大,那么肯定是得不到正确的结果的,这时,我们可以借助if语句来做这个a和b之间谁大谁小的问题
见for_rangeSums.cpp
3.2 练习
Exercise
1.14:
如果输入值相等,本节展示的程序将产生什么问题?
//如果输入的值相等,那么范围的和就是这个数,因为for循环的循环条件先被满足了,然后执行累加,然后执行累加和;再次执行时
循环条件不满足,直接得出结果
Exercise
1.15:
用两个相等的值作为输入编译并运行本节中的程序。将实
际输出与你在上一习题中所做的预测相比较,解释实际结
果和你预计的结果间的不相符之处。
Exercise
1.16:
编写程序,输出用户输入的两个数中的较大者。
//见e_max.cpp
Exercise
1.17:
编写程序,要求用户输入一组数。输出信息说明其中有多
少个负数。
//见e_lessThanZero.cpp
四.对输入流对象cin的一些使用技巧的补充
对于用户输入的内容,不会立即送入到程序中去,而是先放到一个叫做键盘缓冲区的东西里面,比如我们连续在终端上输入
1 2 3 4 5不动,在此时输入缓冲区中就会有这5个数,只有当我们按下回车时,这些数据才会被送入到程序中,键盘缓冲区的
大小是有限的,如果我们一次性填满键盘的输入缓冲区,那么往程序中进行送入时就会出现缓冲区溢出,就会有一部分数据没有被
送入,这时候,我们就需要调用cin.flush()函数来刷新缓冲区,否则我们程序得到的结构就不一定正确
五.练习
Exercise
1.18:
编写程序,提示用户输入两个数并将这两个数范围内的每
个数写到标准输出。
//见e_showRangeNumber.cpp
Exercise
1.19:
如果上题给定数 1000 和 2000,程序将产生什么结果?
//程序会在终端上不断的输出直到2000为止
修改程序,使每一行输出不超过 10 个数。
//见e_showRangeNumber.cpp
Exercise
1.20:
编写程序,求用户指定范围内的数的和,省略设置上界和
下界的 if 测试。假定输入数是 7 和 3,按照这个顺序,
预测程序运行结果。然后按照给定的数是 7 和 3 运行程
序,看结果是否与你预测的相符。如果不相符,反复研究
关于 for 和 while 循环的讨论直到弄清楚其中的原因。
//见e_rangeSums.cpp
本节代码:https://files.cnblogs.com/files/blogs/792763/1.4.zip?t=1763279620&download=true

浙公网安备 33010602011771号