清华大学出版社 TSINGHUA UNIVERSITY PRESS 可以看出,用这种方法表示的算法具有通用性、灵 活性。S3到S5组成一个循环,在实现算法时,要 反复多次执行S3、S4、S5等步骤,直到某一时刻, 执行$5步骤时经过判断,乘数已超过规定的数值 而不返回S3步骤为止。此时算法结束,变量p的值 就是所求结果。 由于计算机是高速进行运算的自动机器,实现循环 是轻而易举的,所有计算机高级语言中都有实现 循环的语句。因此,上述算法不仅是正确的,而 且是计算机能实现的较好的算法。 请读者仔细分析循环结束的条件,即$5步骤。如果 在求1×2×.×11时,将S5步骤写成 S5:若i<11,返回S3。 这样会有什么问题?会得到什么结果?
可以看出,用这种方法表示的算法具有通用性、灵 活性。S3到S5组成一个循环,在实现算法时,要 反复多次执行S3、S4、S5等步骤,直到某一时刻, 执行S5步骤时经过判断,乘数i已超过规定的数值 而不返回S3步骤为止。此时算法结束,变量p的值 就是所求结果。 由于计算机是高速进行运算的自动机器,实现循环 是轻而易举的,所有计算机高级语言中都有实现 循环的语句。因此,上述算法不仅是正确的,而 且是计算机能实现的较好的算法。 请读者仔细分析循环结束的条件,即S5步骤。如果 在求1×2×.×11时,将S5步骤写成 S5: 若i<11,返回S3。 这样会有什么问题?会得到什么结果?
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例2.2有50个学生,要求将他们之中成绩在80分以上 者打印出来。用n表示学生学号,n1代表第一个学 生学号,i代表第i个学生学号。用g代表学生成绩, g代表第个学生成绩,算法可表示如下。 S1:1=>i S2: 如果g心80,则打印ni和gi,否则不打印 S3: i+1=>i S4:如果≤50,返回S2,继续执行;否则,算法结 束。 本例中,变量作为下标,用它来控制序号(第几个学 生,第几个成绩)。当超过50时,表示已对50个学 生的成绩处理完毕,算法结束
例2.2 有50个学生,要求将他们之中成绩在80分以上 者打印出来。用n表示学生学号,n1代表第一个学 生学号,ni代表第i个学生学号。用g代表学生成绩, gi代表第i个学生成绩,算法可表示如下。 S1:1=>i S2:如果gi≥80,则打印ni和gi,否则不打印 S3:i+1=>i S4:如果i≤50,返回S2,继续执行;否则,算法结 束。 本例中,变量i作为下标,用它来控制序号(第几个学 生,第几个成绩)。当i超过50时,表示已对50个学 生的成绩处理完毕,算法结束
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例2.3判定2000一2500年中的每一年是否闰年,将结 果输出。 闰年的条件是:①能被4整除,但不能被100整除的 年份都是闰年,如1996年,2004年是闰年;②能 被100整除,又能被400整除的年份是闰年。如 1600年、2000年是闰年。不符合这两个条件的年 份不是闰年。 算法可表示如下: 设y为被检测的年份。可采取以下步骤: S1:2000=>y S2:y不能被4整除,则输出y“不是闰年”。然后转 到S6
例2.3 判定2000—2500年中的每一年是否闰年,将结 果输出。 闰年的条件是: ①能被4整除,但不能被100整除的 年份都是闰年,如1996年,2004年是闰年;②能 被100整除,又能被400整除的年份是闰年。如 1600年、2000年是闰年。不符合这两个条件的年 份不是闰年。 算法可表示如下: 设y 为被检测的年份。可采取以下步骤: S1:2000=>y S2: y不能被4整除,则输出y “不是闰年”。然后转 到S6
清华大学出版社 TSINGHUA UNIVERSITY PRESS S3:若y能被4整除,不能被100整除,则输出y“是 闰年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰 年”;否则输出“不是闰年”。然后转到S6 S5:输出y“不是闰年” S6:y+1=>y S7:当y≤2500时,转S2继续执行,如y>2500,算法 停止
S3:若y能被4整除,不能被100整除,则输出y “是 闰年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰 年”;否则输出“不是闰年”。 然后转到S6 S5:输出y “不是闰年” S6:y+1=>y S7:当y≤2500时,转S2继续执行,如y>2500,算法 停止
清华大学出版社 TSINGHUA UNIVERSITY PRESS 在这个算法中,采取了多次判断。先判断y能否被4 整除,如不能,则y必然不是闰年。如y能被4整除, 并不能马上决定它是否闰年,还要看它能否被100 整除。如不能被100整除,则肯定是闰年(例如1996 年)。如能被100整除,还不能判断它是否闰年,还 要被400整除,如果能被400整除,则它是闰年, 否则不是闰年。 在这个算法中,每做一步,都分别分离出一些范围 (日能判定为闰年或非闰年),逐步缩小范围,使被 判断的范围愈来愈小,直至执行$5时,只可能是 非闰年。见图2.1示意
在这个算法中,采取了多次判断。先判断y能否被4 整除,如不能,则y必然不是闰年。如y 能被4整除, 并不能马上决定它是否闰年,还要看它能否被100 整除。如不能被100整除,则肯定是闰年(例如1996 年)。如能被100整除,还不能判断它是否闰年,还 要被400整除,如果能被400整除,则它是闰年, 否则不是闰年。 在这个算法中,每做一步,都分别分离出一些范围 (巳能判定为闰年或非闰年),逐步缩小范围,使被 判断的范围愈来愈小,直至执行S5时,只可能是 非闰年。见图2.1示意