《C++ Primer》笔记 1.4 控制流

        语句一般是顺序执行的,但程序设计语言提供了多种不同的控制流语句,允许我们写出更复杂的执行路径。

 

1.4.1 while语句

格式:

whlie(condition条件)
    { 
        statement语句
    }

      作用:反复执行一段代码,直至条件为假为止。

例如,我们用while编写从1到10相加的和。

#include<iostream>
int main()
{
	int a=1,sum=0;
	while (a <= 10)
	{
		
		sum = sum + a;
		a++;
    }
	std::cout << "sum=" << sum << std::endl;
}

 可以算出sum=55

在代码中,sum用于保存和,而a当作一个变量,从1开始,每次加1,加到10,来达到递增的效果。

condition条件只有真假之分,计算机中0表示假,非0表示真。

只要condition为真statement就会被执行,执行完statement就会继续检测condition是真还是假,如果是假则停止执行,如果是真那么继续执行,以此类推。

条件condition中,使用了<=,这是一个小于等于运算符

用花括号包括的的我们称为循环体,此循环体是由两条语句组成的语句块。其中

sum = sum + a;可以换成sum+=a

+=  复合赋值运算符        此运算符将其右侧运算对象加到左侧,再将这个结果储存到左侧运算对象中。

a++  中的++是前缀递增运算符,其作用是将运算对象加1

1.4.2 for语句

for语句也是一种循环,其格式是:

for(初始化语句;循环条件;表达式)
{
    循环体
}

for语句包含两个部分,循环头循环体

循环头就是()包着的部分,包含初始化语句、循环条件和表达式。

循环体就是{}包着的部分,有些程序可能没有{}包着。(没有{}包着的循环体就是for下一行,注意只有一行)

示例:要计算出1到20的整数和:

#include<iostream>
using namespace std;
int main()
{
	int sum = 0;

	for (int a = 1; a <= 20; a++)
	{
		sum += a;//(等价于sum=sum+a;)
	}
	cout << sum << endl;

}

 我们可以使用namespace来省去每次些std

在这段代码中

int a = 1 是for的初始化语句变量a只在for循环内存在,循环结束后变量a不能再使用。

a <= 20 循环条件

a++表达式

sum += a;循环体

for循环的总体循环流程就是:

1、初始化。初始化变量a

2、检测。检测循环条件是否成立。如果不成立,则退出循环。

3、执行。如果成立,则执行循环体中的内容,然后执行表达式中的内容。

4、再检测。再次检测循环条件是否成立,重复步骤2、3、4,直到不成立退出循环。

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

在这里指明一下《C++ Primer》第13页的程序的一个错误,输入3 4 5 6并不会让程序输出Sum is:18 以下是实际测试:

 可以看出程序还在运行中,按下enter,程序会跳到下一行,说明程序还没有结束,但我们按下一个不属于int类型的字符再按下enter时,程序才能结束。

 

由于用while判断输入的是否为int类型的数,这可以达到无论你输入多少个数都能准确算出结果来,代码如下:

#include<iostream>
int main()
{
	int  sum = 0,value = 0;
	while(std::cin >> value)
	{
		sum += value;
	}
	std::cout << "Sum is:" << sum <<std:: endl;
	return 0;
}

但是,结束时要按到一个不属于int类型(无效输入)的数才能结束,或者按一个文件结束符。

在Windows平台中,输入文件结束符的方法是:按Ctrl+z,然后按Enter。在Unix或Linux下是按Ctrl+d,无需Enter,当然,由于当你输入Ctrl+d后,它仍然停留在系统的输入缓冲区中,所以你还是需要使用一个Enter使其生效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Evonso

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值