C语言与程序的算法
例如在实例1-4中函数max()
z的值)返回给调用它的main()函数。
(5)有效性
有效性是指算法中的每一个操作步骤都应当有效地执行,并得到确定的结果。例如,若设x=1,a=0,则x/a是不能有效执行的。
1.3.2 算法描述方法
算法的描述方法有用自然语言表示算法、流程图表示算法、N-S盒图表示算法、伪代码表示算法、计算机语言表示算法等。下面重点介绍如何用自然语言、流程图和计算机语言描述算法。对于N-S盒图和伪代码表示算法的问题,请参考相关书籍。
1.用自然语言表示算法
自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表示算法,则算法通俗易懂,但文字冗长,容易出现歧义。自然语言所描述的内容往往不太严格,要根据上下文才能判断其正确含义。在算法分析的初始阶段使用自然语言描述算法是恰当的,尤其对于初学者来说,这是学习程序设计时迈出的第一步。
【实例1-5】 用自然语言描述1+2+3+ +1000的算法。
【分析】 对于此问题,人工计算时有两种方法:第一种方法是先进行1+2,再加3,再加4,一直加到1000,这种方法称为逐个相加法;第二种方法是进行(1+1000)+(2+999)+ (3+998)+ +(500+501)=500*1001=500500。逐个相加法虽然在人工计算时比较慢,但更具有规律性,因此适合计算机进行。在使用逐个相加法进行计算时,如果引入两个变量,一个变量代表要逐个相加的数,另一个变量代表每一次相加的结果。刚开始设前者的值为1,后者的值为0。在第一次将两个变量的值相加时,实际进行0和1相加,得1。然后,将结果1存入到后一个变量中,再将前一个变量的值增加1,进行第二次相加。在第二次将两个变量的值相加时,实际上进行1和2相加,得3。然后将结果3存入到后一个变量中,再将前一个变量的值增加1,再进行第三次相加 依此类推,直到前一个变量的值大于1000时,停止操作。最后,将后一个变量的值输出,所输出的结果就是希望得到的结果。而当计算停止的时候,我们一共重复了1000次相同的操作。
【算法】 现在设前一个变量为i,后一个变量s,在进行每一次重复操作之后增加逻辑判断,判断i的值是否大于1000,如果大于1000,则停止计算,否则重复相同操作。相应算法描述如下:
S1:把1存入变量i中;
S2:把0存入变量s中;
S3:把i的值和s的值相加,相加结果再次存入变量s中;
S4:把变量i的值增加1,相加结果再次存入变量i中;
S5:如果变量i的值不大于1000,则返回到S3,从第S3步起重复进行操作;否则继