1.4.控制流
1.4.1while语句反复执行一段代码,直至给定条件为假为止。
#include<iostream>
int main()
{//求1-10这10个数的和
int sum = 0, val = 1;
while (val <= 10) {
sum += val;
++val;
}
std::cout << "sum of1 to 10 inclusive is" << sum << std::endl;
return 0;
}
+=:复合赋值运算符;此运算符将其右侧的运算对象加到左侧运算对象上,将结果保存到左侧对象中
Sum+=val;相当于sum=sum+val;
++:前缀递增运算符;递增运算符将运算对象的值增加1。++val等价于val=val+1
练习1.9
#include<iostream>
int main()
{//使用while循环将50到100的整数相加
int sum = 0,val = 50;
while(val<=100){
sum += val;
++val;
}
std::cout << "使用while循环将50到100的整数相加的结果是" << sum << std::endl;
return 0;
}
练习1.10
#include<iostream>
int main()
{//按照递减顺序打印出10到0之间的整数
int val= 10;
while (val >= 0) {
std::cout << val << std::endl;
--val;
}
}
练习1.11
#include<iostream>
int main()
{//编写一个程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数
int val1 = 0, val2 = 0;
std::cin >> val1 >> val2;
while (val1 < val2) {
++val1;
std::cout << val1 << std::endl;
}
while (val1 > val2) {
++val2;
std::cout << val2 << std::endl;
}
return 0;
}
也可以用这种代码:
#include<iostream>
int main()
{
int i = 0,j,k,m,n;//m、n是为了找到输入任意数字的大小关系。
std::cout << "Please input two numbers:";
std::cin >> j >> k;
std::cout << std::endl;
m = std::max(j, k);//max函数,取大
n = std::min(j, k);//取小
i = n;
while ( i<=m & i >=n) {
std::cout << i << std::endl;
++i;
}
return 0;
}
学习心得:可以利用m = std::max(j, k) 的方式比较j和k,选出最大值再把该最大值存给m。
1.4.2 for语句
#include<iostream>
int main()
{
int sum = 0;//从1加到10
for (int val = 1; val <= 10; ++val)
sum += val;
std::cout << "Sum of 1 to 10 inclusive is" << sum << std::endl;
return 0;
}
注意:val仅在for循环内部存在,在循环结束后是不能使用的。
初始化语句:int val=1只在for循环入口处执行一次。
循环条件:val<=10; 表达式:++val;
For语句运行顺序:比较val与10的大小关系(循环体每次执行前都会先检查循环条件)。只要val小于等于10,就会执行for循环体。表达式在for循环之后执行。
1.4.2节练习
练习1.12
完成了从-100加到100的过程,sum结果是0.
练习1.13
中的1.9
#include<iostream>
int main()
{
int sum = 0;
for (int val = 50; val <= 100; ++val)
sum += val;
std::cout << "Sum of 50 to 100 inclusive is" << sum << std::endl;
return 0;
}
1.10
#include<iostream>
int main()
{
for (int val = 10; val >= 0; --val)
std::cout << val << std::endl;
return 0;
}
1.11
#include<iostream>
int main()
{
std::cout << "请输入两个数字" << std::endl;
int val1=0, val2=0,m=0,n=0;
std::cin >> val1 >> val2;
m = std::max(val1, val2);
n = std::min(val1, val2);
for (int j = 0; n <= m; ++n)
std::cout << n << std::endl;
return 0;
}
练习1.14
在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。两种形式各有优点,但它们在功能上是等价的,可以相互转换。(此处转载别人的)