小
// Edit via InPageEdit
SkyEye FAST(讨论 | 贡献) 小 (// Edit via InPageEdit) |
SkyEye FAST(讨论 | 贡献) 小 (// Edit via InPageEdit) |
||
(未显示2个用户的3个中间版本) | |||
第1行:
{{TeX}}
算法有三大基本结构:'''顺序结构''','''分支结构'''与'''循环结构'''。
第14行 ⟶ 第16行:
<syntaxhighlight lang="cpp" line>
#include <
int a, b;
int
{
int main(){▼
scanf("%d%d", &a, &b);
int c = a + b;
printf("%d\n", c);
return 0;
}
第28行 ⟶ 第30行:
与此相类似,给出半径计算圆的周长和面积,输入两个数交换他们的值然后输出,都是最基本的顺序结构应用。
=== 分支结构 ===
[[文件:Case Structure.png|200px|thumb|right|分支结构]]
我们生活中难免遇到选择。计算机生活中也难免遇到选择。选择有简单的{{Heimu|比如淮安中考数学选择题第一题}},也有难的{{Heimu|比如选择这里要举什么事例}}。
人类的选择有时要从感性、理性、人际、市场、期望、实用程度等方面综合评判,计算机的选择则明了得多,只要给出条件它便能自动选择最合适的一条路{{Heimu|当然也可以用随机来让计算机变得多愁善感}}。
还是看一个简单的例子:读入两个整数a和b,输出a和b中的较大值。
这里的条件很明晰:即判断“a是否大于b”,若判断为“是(true)”则输出a,若判断为“否(false)”则输出b。
<syntaxhighlight lang="cpp" line>
#include <cstdio>
int a, b;
{
scanf("%d%d", &a, &b);
if (a > b)
printf("%d\n", a);
else
printf("%d\n", b);
printf("%d\n", c);
return 0;
}
</syntaxhighlight>
可以看到,这个程序中使用了if else语句,这是C++中最基本的分支语句。
类似的,计算机也能处理按成绩打等第、绝对值的计算等问题。
=== 循环结构 ===
[[文件:Cycle structure.png|200px|thumb|right|循环结构]]
大部分人类讨厌循环,因为他们觉得很枯燥。但计算机不会觉得枯燥,<s>因为普通计算机1秒能处理几千万次循环</s>。
计算机做的大部分任务需要重复多次,这时就要用到循环结构。
依然举个例子:计算1+2+3+...+100(或者说得高大上点,<math>\sum_{i=1}^{100} i</math>)。
{{Heimu|因为你没有高斯聪明,所以你不被允许使用公式。{{Note|引用自[https://www.luogu.com.cn/problem/P5722 洛谷P5722]题目描述。|name=a}}}}
这就需要我们从1一直循环到100来计算这一和式的结果。
<syntaxhighlight lang="cpp" line>
#include <cstdio>
int main()
{
int sum = 0;
for (int i = 1; i <= 100; ++i)
sum += i;
printf("%d\n", sum);
return 0;
}
</syntaxhighlight>
这个程序中则使用了for语句,也称“直到”型循环,用来表示有固定上下界的循环。(更复杂的程序中for语句的边界也可能随时改变)
但是如果不知道明确的上下界呢?
比如这个例子:求出<math>2^x\ge 100</math>这个不等式中x的最小整数值。
这样我们就要用到while语句,也称“当”型循环,工作原理是给出一个条件,根据条件的真假来判断是否结束循环。
<syntaxhighlight lang="cpp" line>
#include <cstdio>
int main()
{
int sum = 1, ans = 0;
while (sum < 100)
sum *= 2, ans++;
printf("%d\n", ans);
return 0;
}
</syntaxhighlight>
当“sum < 100”成立的时候,程序就不断增大指数,直到该条件不成立,也即<math>2^x\ge 100</math>时结束循环,这样即可得到x的最小整数值。
=== 注释 ===
{{Notelist}}
{{Study}}
|