换书c++ primer。。。。。第一章

while语句

while( condition )

        statement

/*1.9*/
#include<iostream>


int main() {
	int sum = 0;
	int val = 50;
	while (val<=100)
	{
		sum += val;//复合赋值运算符(+=)等价于sum = sum + val
		++val;//前缀递增运算符(++)等价于val = val + 1

	}
	std::cout << sum;
}
/*1.10*/
#include<iostream>
int main() {

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

}
/*1.11*/
#include<iostream>
int main() {
	int v1, v2;
	std::cin >> v1 >> v2;
	while (v2 >= v1) {
		std::cout << v1 << std::endl;
		++v1;
	}

}

for语句

        由于while循环在循环条件中检测变量,在循环体中递增变量的模式使用非常频繁,为简化语句,设计了for语句

每个for语句都包含两部分:循环头循环体。

        循环头包括:一个初始化语句(init_statement),一个循环条件(condition),以及一个表达式(expression)。

示例:

//重写从一加到十的程序
/*1.11*/
#include<iostream>
int main() {
	int sum = 0;
	for (int val = 1; val <= 10; ++val) {
		
		sum += val;
	
	}
	std::cout << sum;
	

}

这里要注意,val只在循环体内有效

读取数量不定的输入数据(while)

        我们在预先不知道要对多少数求和,这就需要不断读取数据直至没有新的输入为止。

示例:

读取数据直到遇到文件尾,计算所有读入值的和

int main() {
	int sum = 0, val = 0;
	while (std::cin >> val) {
		
		sum += val;

		
	}
	std::cout << "sum = "
		<< sum
		<< std::endl;

}

分析:

数据的读取操作是在while的循环条件内完成的:while(std::cin >> val),while循环条件的求值就是执行std::cin>>val。

当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流没有遇到错误,那么检测成功,相当于while(true)。当遇到文件结束符(end-of-file),或遇到一个无效输入时(例如读入的值不是一个整数),istream对象的状态会变为无效,此时处于无效状态的istream对象会使条件变为假,while(false)。

 

我第四次输入,输入了一个字母,然后回车的结果如上,输入结束,输出前三次输入的和 

for循环完成

#include<iostream>
int main() {
	int sum = 0;
	for (int val = 0; std::cin >> val; ) {
		
		sum += val;


	}
	std::cout << sum;

}

if语句

引例:c++提供if语句来支持条件执行。我们可以用一个if语句写一个程序,来统计在输入中每个值连续出现多少次:

        

/*if语句例子*/
#include<iostream>
int main() {
	int val = 0; //保存从输入读取的每个数
	int currVal = 0; //记录我们正在统计出现次数的数
	//读取第一个数,并确保确实有数据可以处理
    if (std::cin >> currVal) {
		//保存我们正在处理的当前值的个数
		int cnt = 1;
        //读取剩余的数
		while (std::cin >> val) {
		//如果值相同,那么个数加一
			if (val == currVal) {
			
				++cnt;

			}
			else {
			//否则,如果不相同,打印前一个值的个数
				std::cout << currVal << "occurs"
					<< cnt
					<< "times" << std::endl;
                //记住新值
				currVal = val;
				//重置计数器
                cnt = 1;
			}

		}
		std::cout << currVal << "occurs"
			<< cnt
			<< "times" << std::endl;

	}

}

 

#include<iostream>
int main() {
	int v1, v2;
	int sum = 0;
	std::cin >> v1 >> v2;
	if (v1 >= v2) {
		
		while (v1 >= v2) {
			
			sum += v2;
			++v2;

		}
	

	}
	else {
	
		while (v1 <= v2) {
			sum += v1;
			++v1;
		}
	
	}
	std::cout << sum;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值