首页 百科知识 问题分析与算法描述

问题分析与算法描述

时间:2022-10-23 百科知识 版权反馈
【摘要】:对要求解的问题进行分析是我们要做的第一步,这样就可以清楚地认识到我们的任务。从上小节中介绍的C语言程序的基本组成结构来看,我们是否需要用户自定义函数呢?如果不需要,我们则由主函数来实现程序的功能。当输入了一个合法的三位数之后,才能进一步地对问题进行求解。其次,我们思考程序的输出数据,任何程序都必须有输出,本程序的输出是个位、十位和百位上的数字。基于上述分析,我们就找到了解决该问题的算法。

2.3.1 问题分析与算法描述

对要求解的问题进行分析是我们要做的第一步,这样就可以清楚地认识到我们的任务。程序的需求是求一个三位数的个、十、百位上的数字,那么我们就能确定该程序所处理的整数只能是三位数,也就是说在100~999这个范围内,当用户输入其他整数时,该程序是不能进行处理的。

从上小节中介绍的C语言程序的基本组成结构来看,我们是否需要用户自定义函数呢?如果不需要,我们则由主函数来实现程序的功能。在主函数内部,我们需要对以下问题进行进一步的细化:

(1)首先,我们考虑本例中是否需要输入数据。很显然我们首先必须从键盘输入一个三位数。当输入了一个合法的三位数之后,才能进一步地对问题进行求解。根据前面的例题,我们可以设置一个变量(如n),用来存放从键盘输入的整数。

(2)其次,我们思考程序的输出数据,任何程序都必须有输出,本程序的输出是个位、十位和百位上的数字。为了处理方便,分别用三个变量a、b、c表示,当a、b、c有了具体的数值之后,再进行输出。

(3)最后考虑的是数据处理部分,这也是求解本例的关键步骤。对于一个三位数,如何求解其各位上的数字,这显然又是我们下一步需要讨论的问题。在C语言中提供了多种算术运算符,+、-、*、/,这些都是我们熟悉的,另外,还有取模运算(%),即求余。读者需要注意的是,C语言中进行取模运算(%)的操作数必须是整型数据,另外,当进行除法运算(/)的操作数都为整型数据时,进行的是整除。有了这些运算符就可以快速地进行求解,如当三位数n=123时,我们可以利用赋值表达式a=n%10就可以求得个位的数字3,同样十位上的数字可以利用表达式b=(n/10)%10求解,百位上的数字c=n/100。

基于上述分析,我们就找到了解决该问题的算法。正如前面所说,对于同一个问题,一般有多种解决的方法,请读者自己思考有没有其他方法同样可以求出一个三位数的个、十、百位数。

根据前面的分析,我们可以用结构化流程图(N-S图)来描述以上的解题步骤,如图2.4所示。

img54

图2.4 求解例2.6的N-S图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈