C++ Primer从零开始 —— 开始:控制流

控制流

C++提供了多种不同的控制流语句,允许程序不以顺序执行语句

种类

  • 主要有:while、for、if

while语句

  • 反复执行一段代码,直到给定条件为假

e.g.

#include <iostream>

using namespace std;

int main() {

	int sum = 0, val = 1;
	// 当 val <= 10 时,该语句会一直执行
	while (val <= 10)
	{
		sum += val;
		++val;
	}

	cout << "Sum of 1 to 10 inclusive is " << sum << endl;

	return 0;
}

  • while语句的形式:
while (condition)
{
	statement
}

即使就一行代码,仍建议使用花括号括起来

  • while语句执行过程是交替检测 condition 条件和执行关联语句 statement,直至 condition 为假
  • 条件(condition):是一个产生真或假结果的表达式
  • 语句块(block):用花括号包围的零条或多条语句的序列

习题(编译运行于VS 2019):

int sum = 0, val = 50;

while (val <= 100)
{
    sum += val;
   	++val;
}

cout << "Sum of 50 to 100 inclusive is " << sum << endl;

return 0;
int val = 10;

while (val >= 0)
{
	cout << val << " ";
	--val;
}
return 0;
int v1, v2, value, sum = 0;

cout << "Input 2 numbers as to print the sum from the first to the last" << endl;
cin >> v1 >> v2;
value = v1;

while (v1 <= v2) {
	sum += v1;
	++v1;
}

cout << "Sum of " << value << " to " << v2 << " inclusive is " << sum << endl;

for语句

  • 适用于需要在循环条件中检测变量,在循环体中递增变量的情况

重写上述 e.g.

int sum = 0;

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

cout << "Sum of 0 to 10 inclusive is " << sum << endl;

同样的,即使循环体中仅有一条语句,仍需加花括号括起来便于阅读

  • 一个for循环包含两个部分:循环头和循环体
  • 循环头由三部分构成:初始化语句(init-statement)、循环条件(condition)、表达式(expression)

习题(编译运行于VS 2019):

  1. 下面语句的作用
int sum = 0;

for (int i = -100; i <= 100; ++i)
{
	sum += i;
}
从 -100 加到 100,和为 0
  1. 重写while中的习题
  2. for循环 与 while循环 的优缺点如下:
    1)在for循环中,循环条件的初始化和修改都放在语句头部分,形式较简洁,特别适用于循环次数已知的情况
    2)在while循环中,循环条件的初始化一般放在while语句之前,循环条件的修改一般放在循环体中,形式上不如for语句简洁,但其较适用于循环次数不易预知的情况
    3)功能等价,可以互相转换

读取数量不定的输入数据

e.g.

int sum = 0, value = 0;

while (cin >> value)
{
	sum += value;
}

cout << "sum is " << sum << endl;
  • 只有在输入无效时(如输入的不是一个 int )或遇到文件结束符(end-of-file)时,istream对象才会为假,跳出循环

windows系统中的文件结束符的输入方式是敲 “ Ctrl + Z ”

if语句

int currVal = 0, val = 0;
if (cin >> currVal) {
	int cnt = 1;
	while (cin >> val)
	{
		if (val == currVal) {
			++cnt;
		}
		else
		{
			cout << currVal << " occurs " << cnt << " times" << endl;
			currVal = val;
			cnt = 1;
		}
	}
	// 跳出while循环,打印最后一个输入的值
	cout << currVal << " occurs " << cnt << " times" << endl;
}
  • 括号内的条件为真则执行,为假则跳出或执行 else

习题(编译运行于VS 2019):

  1. 全相等
    输入全部相等
    全不等
    输入全部不相等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值