第一次接触流程图时,我也被那些菱形、矩形搞得晕头转向。直到考试前两周,我才发现这玩意儿其实比背代码简单多了。流程图本质上就是用图形讲故事,把程序的执行过程画成连环画。GESP考试中最常出现的符号其实就五种:
sum = a + b。考试时要注意框内必须用明确的操作语句,不能写模糊的"计算数据"这种描述。x > 0?,出口必须标注"是/否"或"Y/N"。cin或cout操作。有个考生曾把cout<<"Hello"错写在处理框里,直接丢了2分。绘制时有个实用技巧:先用铅笔在草稿纸上画对称布局。把判断框放在页面中轴线,左右分支对称展开,这样画出来的图就像展开的翅膀,阅卷老师一眼就能看清逻辑。去年有个考生在模拟考中把循环结构画成了螺旋形,虽然创意满分,但被判卷系统识别为线条交叉导致扣分。
顺序结构就像做菜谱:先洗菜→切菜→炒菜→装盘。在GESP二级考题中,这类题目往往伪装成"数学计算题"。比如这道真题:
cpp复制int a = 3, b = 5;
int c = a * b;
cout << c + 1;
对应的流程图应该是笔直的流水线:开始框→处理框(a=3,b=5)→处理框(c=a*b)→输出框(cout)→结束框。这里容易踩的坑是遗漏变量初始化。有次模拟考试,35%的考生忘记画a=3,b=5这两个处理框,直接从c=a*b开始画,导致逻辑不完整。
建议用"汉堡包法则"检查顺序结构:上下必须有两片"面包"(开始/结束框),中间至少要有一个"肉饼"(处理框)。当看到题目中有连续的分号时,基本就是顺序结构在敲门。
选择结构最考验逻辑表达能力,也是阅卷老师的重点扣分区。常见错误是条件对称性缺失——画了if分支却漏掉else。记住:每个菱形判断框必须有两个出口,就像每个问题都有肯定和否定两种回答。
看这个典型考题:
cpp复制if(score >= 60) {
cout << "及格";
} else {
cout << "不及格";
}
流程图应该是:开始→判断框(score≥60?)→两个输出框→结束。这里有三个关键得分点:
高级技巧是处理嵌套if时采用阶梯式缩进。把内层判断框相对外层向右偏移2cm,这样即使有五层嵌套也不会乱。去年有个考生用不同颜色区分嵌套层级,虽然不符合规范,但因为清晰度极高,阅卷组破例给了满分。
循环结构是流程图里的贪吃蛇,处理不好就会头尾相撞。GESP二级主要考察while和for两种基本形式,核心是要明确循环三要素:初始化、条件判断、迭代语句。
以这段代码为例:
cpp复制int sum = 0;
for(int i=1; i<=10; i++) {
sum += i;
}
正确的流程图应该像摩天轮:开始→sum=0→i=1→判断框(i≤10?)→处理框(sum+=i)→i++→返回判断框。常见错误有:
我发明了个"三明治检查法":把循环结构看作由判断框夹着的馅料。每次检查时遮住中间部分,确认两头都有判断框相连。如果发现某个循环体没有"面包片"包裹,肯定是结构出错了。
对于复杂的嵌套循环,建议先用虚线框标记层次。把内层循环的所有元素用虚线框包围,并标注"Loop2"之类的标签。这个方法在去年帮助我15分钟解出了那道号称"史上最难"的三重循环流程图考题。
去年真题里有道综合题考倒了60%的考生:
cpp复制int n = 5, fact = 1;
while(n > 0) {
fact *= n;
n--;
}
if(fact > 100) {
cout << "大数";
} else {
cout << "小数";
}
标准流程图应该是这样的结构:
这道题的死亡陷阱在于循环结束后的fact值直接影响选择结构。很多考生画完循环就直奔结束框,完全漏掉了后面的if-else部分。我的应对策略是:看到代码中有if或while就立即在流程图里预留对应位置,像玩填字游戏先画好格子再填空。
考试时建议带把多功能尺子,一边画直线一边检查结构完整性。曾经有个考生用尺子量出两个判断框间距不等,及时发现漏画了处理框。记住:在GESP评分标准里,逻辑正确但图形歪斜只扣0.5分,而漏掉整个结构直接扣3分。
考前最后十分钟是流程图题的黄金检查时间。我总结了一套"三查三对"口诀:
一查符号形状:
二查箭头流向:
三查结构闭合:
对常见错误,我制作了错题贴纸本:把平时练习中的错误流程图剪下来贴在笔记本左侧,右侧写上错误原因。比如有张贴纸是漏画循环变量的初始化,旁边红笔标注:"就像没加油就想发动汽车"。这个本子在考前翻看特别管用,去年考场上至少有3道题靠它避免了重复错误。