1.4.1 while 语句
- while语句形式:
while(condition)
statement
while语句中,如condition为真,持续执行statement,直至condition为假。
例:用while语句求1到10这十个数的和
#include<iostream>
int main()
{
int sum=0,va1=1;
//只要va1的值小于等于10,while循环执行
while(va1<=10)
{
sum+=va1;//将sum+va1赋值给sum
++va1;//将va1加1
}
std::cout<<"Sum of 1 to 10 is"<<sum<<std::endl;
return 0;
}
语句分析
- “<=":小于等于运算符
- ”+=“:复合赋值运算符
sum+=va1;
等价于
sum=sum+va1; - ”++“:前缀运算符
++va1;
等价于
va1=va1+1;
执行完一次while语句后,会重新进入condition进行判断;如满足condition则继续循环;否则终止循环
练习
1.用while循环将50到100的整数相加
#include<iostream>
int main()
{
int sum=0,va1=50;
//只要va1的值小于等于100,while循环执行
while(va1<=100)
{
sum+=va1;//将sum+va1赋值给sum
++va1;//将va1加1
}
std::cout<<"Sum of 50 to 100 is"<<sum<<std::endl;
return 0;
}
2.运用递减运算符(–)打印10到0之间的整数
#include<iostream>
int main()
{
int va1=10;
--va1;
while(va1>0)
{
std::cout<<va1<<std::endl;
--va1;
}
return 0;
}
3.用户输入两个整数,打印这两个整数范围内的所有整数
#include<iostream>
int main()
{
int va1=0,va2=0;
std::cout<<"Enter two numbers:"<<std::endl;
std::cin>>va1>>va2;
while(va1-1>va2)//由于是先判断再输出,为保证输出的数在两数中间,应对较小的数减1
{
std::cout<<++va2<<std::endl;
}
while(va1<va2-1)
{
std::cout<<++va1<<std::endl;
}
return 0;
}
1.4.2 for语句
- for语句由循环头和循环体构成
#include <iostream>
int main()
{
int sum = 0;
for (int va1 = 1; va1 <= 10; va1++)
{
sum += va1;
}
std::cout << "Sum of 1 to 10 is" << sum << std::endl;
return 0;
}
循环头组成部分 | 具体语句 |
---|---|
初始化语句 | int va1 = 1; |
循环条件 | va1 <= 10 |
表达式 | va1 <= 10 |
- 创建变量va1,将其初始化为1。
- 检测 va1 是否小于等于10。若检测成功,执行 foz循环体。若失败,退出循环, 继续执行 for循环体之后的第一条语句。
- 将va1的值增加1. 4.重复第2步中的条件检测,只要条件为真就继续执行剩余步骤。
练习
1.4.3读取数量不定的输入数据
- 根据用户输入数据求和:
#include <iostream>
int main()
{
int sum = 0,value=0;
while(std::cin>>value)
{
sum += value;
}
std::cout << "Sum is" << sum << std::endl;
return 0;
}
语句分析
- while(std::cin>>value)
使用istream作为条件时,如未遇到错误,则继续执行。当遇到文件结束符或遇到无效输入时,isteam对象状态变为无效,判断语句为假
1.4.4 if语句
- 编写程序,输出数字的重复字数
#include <iostream>
int main()
{
int currVal = 0, va1 = 0;
//保证数字的有效输入
if (std::cin >> currVal)
{
int cnt = 1;//记录相同数字出现次数
while (std::cin >> va1)
{
if (currVal == va1)
{
cnt++;
}
else
{
std::cout << currVal << " occurs" << cnt << "times" << std::endl;
currVal = va1;
}
}
}
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021010821391863.png**
练习
1如果上述程序中,输入数字相同,输出结果?
由于数字都相同,则程序不会进入else板块,从而不会输出。