三种流程控制的书写方法如下:
while(条件) // 直到条件为假(false) 否则一直循环执行大括号内的代码
{
执行代码
}
for(初始化; 条件; 表达式) // 首先执行一次初始化,然后在条件为真的情况下循环执行大括号内的代码,并在每次执行完代码后执行一次表达式
{
执行代码
}
if(条件) // 从上到下查找每一个条件,直到某个条件为真则执行相应的代码块,其他代码块则跳过
{
执行代码
}
else if(条件)
{
执行代码
}
else
{
执行代码
}
下面来详细的给出几个例子,和编译运行的具体流程,方便理解:
一、 while循环进行累加计算
#include <iostream>
int main()
{
int sum = 0, val = 1;
// 只要val的值小于等于10,while循环就会持续执行
while(val <= 10)
{
sum += val; // 将sum + val 赋予 sum
++val; // 将val加1
}
std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
二、for循环进行累加计算
#include <iostream>
int main()
{
int sum = 0;
// 从1加到10
for(int val = 1; val <= 10; ++val)
{
sum += val; // 等价于 sum = sum + val
}
std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
三、使用循环读取位置数量的数据
#include <iostream>
int main()
{
int sum = 0, val = 0;
// 读取数据直到遇到文件尾,计算所有读入的值的和
while(std::cin >> val)
{
sum += val; // 等价于 sum = sum + val
}
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
代码运行过程中的文件结束符(^Z) 使用键盘CTRL+Z输入,如果在linux或macOS下使用CTRL+D输入
四、计算在输入中任意数字连续出现的次数,直到出现文件结束符号
#include <iostream>
int main()
{
// currVal 是我们在统计的数;我们将读入的新值存入val
int currVal = 0, val = 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;
}
} // while循环在这里结束
// 记住打印文件中最后一个值得个数
std::cout << currVal << " occurs " << cnt << " times" << std::endl;
} // 最外层的if语句在这里结束
return 0;
}
流程控制主要就是以上的三种,当然还有switch,书本以后的内容会提到。
这些流程控制单独讲起来都非常的简单,但是在实际的使用中就会有各种各样的难点。
所以要牢牢掌握基本的规则,才能在以后的运用中做到心中有码。
在这里还有一个问题和大家提及一下,那就是代码风格,从当前的4篇代码中大家可以看出我基本上遵循了同一种缩进的风格。
并且在空格的地方也能做到位置一致。
我在这里说的意思并不是要大家都遵循我的风格,而是应该找到一种自己适合的代码风格,并且一直遵守它。
如果有初学的同学按照我的代码去边已执行了,但是没有成功的,请认真检查代码,然后将编译报错和信息一并发到留言区,我们来讨论解决这个问题。