我是靠谱客的博主 柔弱咖啡,最近开发中收集的这篇文章主要介绍软件评测师-程序流程图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019年下午真题:

 解析:

 有点眼花缭乱,别急,先来杯82年的乌龙茶,放平心态。

我们一个节点一个节点分析。

1.len>512?512:buf_len;

人家都标好1,2,3了,说明就是3个圆圈。先看看逻辑。

 表达式有2种情况:

1:len>512时,size_t total_bytes=512;

2:len<=512时,size_t total_bytes=buf_len;

画出流程图:

 接着,程序跳转到第一个if:

 看清楚最上面的这2个红色的框框,可以知道第一个if,当buf_len==0时,直接return_code = 0;然后跳转到节点13(return return_code).当buf_len!=0时,则跳转到第1个for循环中,开始执行第2个红色框框的内容。

把我们知道的先画出来:

 这条路径是很清晰的,难就难在打马赛克的部分!不慌,再吃块21年的巧克力补充一下能量。

知己知彼,先来分析一波那一坨东西。

 很乱是不是?没事,简单点~做题的思路简单点~咳咳,不小心唱出来了,我们只看一个for循环。

 可以看到3个小小的红框框,如果执行到

6:i>=total_bytes

8:break

12:break

都会直接跳转到节点13。

把我们想到的先画出来吧:

 问题来了,如果当6:i<total_bytes呢?

这个时候程序要执行的,就是以下内容了:

 我们可以看到会有2条路径走向break。

6→7→8

9→10→11→12

不妨先把想到的画出来:

 好,那么我们的节点全部用上了,那么怎么连接他们?

首先你要知道for循环中至少是要有1个节点给他绕回去的,但是节点6的for循环好像没有绕回去的线啊!我们来重点关注for循环吧。

 怎么办!里面有2个break,碰到它们就回不了节点6了(直接到节点13)!

咦?

 有了!只要里面2个小框框的if,都取相反条件(不满足if的条件),好像就可以跳转到节点6。

试一下,当c[i]!="0",节点7会跳转到节点9,10(先看做整体),然后到节点11,此时1<32,就可以躲开break!那么节点11是可以回到节点6的。

画一下吧:

 9和10也是一坨东西啊!看不懂!

别慌,啥都吃完了,吃手手吧。

重点关注节点9和节点10。

 应该聪明的同学看到这里就明白了,不明白的就把这个当作业吧,咳咳,下课!

最后

以上就是柔弱咖啡为你收集整理的软件评测师-程序流程图的全部内容,希望文章能够帮你解决软件评测师-程序流程图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部