流程图简单介绍
流程图可以理解为算法的图形化,让人们直接的了解算法执行的过程。
流程图是用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。
作图软件可以选用EdrawMax(本篇使用)
流程图中不同图框代表的含义
圆弧形框:表示开始或结束
矩形框:表示运算步骤
菱形框:表示判断
平行四边形框:表示输入和输出
C语言代码
百人搬百砖问题:100块砖100人搬,男搬4,女搬3,3个小孩抬一砖,问男,女,小孩各若干?
#include<stdio.h>
int main()
{
int i,j,k;
for(i=0;i<=25;i++)
{
for(j=0;j<34;j++)
{
for(k=0;k<100;k++)
{
if(4*i+3*j+k/3==100&&i+j+k==100)
{
printf("男人:%-2d 女人:%-2d 小孩:%d\n",i,j,k);
}
}
}
}
return 0;
}
算法流程图 要求
画算法流程图与翻译文言文类似要求做到“信、达、雅”
信:要求逻辑准确,不偏离源代码,不能产生歧义。
达:不必拘泥源代码顺序,为了通顺可以对步骤顺序进行改变,逻辑正确即可。
雅:流程图需让人一目了然。如果说文言翻译追求古朴典雅美,那流程图就是追求简洁清晰美。
作图方法
1、代码对应的图框在纸上按顺序表示出来
2、在图框中填入代码\伪代码\自然语言
变量赋值步骤和一般运算步骤填入矩形框
条件表达式填入菱形框
3、将图框按照逻辑连接起来
如布尔逻辑
4、提示:逻辑表达式只需判断true or false
作图可能遇到的问题
1、双箭头产生的歧义
如图中i<=25到k<=100之间出现了两次双箭头一定会产生歧义。
本意是:条件表达式i<=25,true则进行下一个条件表达式,false则i++。
解决方法很简单,换用图框上不同的点。
2、箭头折角太多,画面杂乱
如图,虽解决了1当中的问题,但一个箭头折角过多。自己画流程图不像物理电学考试中,给定电池及用电器的位置,让学生来连线。此图大概就是如学生连的电路图。(开个玩笑)
解决方法:将所有图框尽量排成一竖列,并且做到菱形框箭头向下为true,箭头向右为false
最终的流程图
结语
本篇文章中的思路和方法均为本人原创,欢迎大家提出问题,也希望对大家有所帮助。