清华大学出版社 TSINGHUA UNIVERSITY PRESS 例2,2有50个学生,要求将他们之中成绩在80 分以上者打印出来。设n表示学号,n1代表 第一个学生学号,代表第个学生学号。用G 代表学生成绩,g代表第个学生成绩,算法 表示如下: S1:1 S2:如果≥80,则打印和,否则不打印。 S3:i+1→ S4:如果i≤50,返回S2,继续执行。否则算法结束 变量作为下标,用来控制序号第几个学生 ,第几个成绩)。当i超过50时,表示已对50 个学生的成绩处理完毕,算法结束。 「c程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 11 例2.2 有50个学生,要求将他们之中成绩在80 分以上者打印出来。设n表示学号, n1代表 第一个学生学号, 代表第i个学生学号。用G 代表学生成绩 , gi代表第i个学生成绩,算法 表示如下: S1:1 → i S2:如果≥80 S3:i+1 → i S4:如果i≤50,返回S2,继续执行。否则算法结束 变量i作为下标,用来控制序号(第几个学生 ,第几个成绩)。当i超过50时,表示 已对50 个学生的成绩处理完毕,算法结束
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例23判定2000~2500年中的每一年是否闰年 将结果输出。 分析∶闰年的条件是:(①1)能被4整除,但不能被 100整除的年份都是闰年,如1996,2004年是闰 年;(2能被100整除,又能被400整除的年份 是闰年。如1600,2000年是闰年。不符合这两 个条件的年份不是闰年。 变量i作为下标,用来控制序号(第几个学生 第几个成绩)。当超过50时,表示已对50 个学生的成绩处理完毕,算法结束。 C程序设计(第三版) http://ccf.tsinghua.edu.cn 12
C程序设计(第三版) http://ccf.tsinghua.edu.cn 12 例2.3 判定2000~2500年中的每一年是否闰年, 将结果输出。 变量i作为下标,用来控制序号(第几个学生 ,第几个成绩)。当i超过50时,表示 已对50 个学生的成绩处理完毕,算法结束。 分析:闰年的条件是:(1)能被4整除,但不能被 100整除的年份都是闰年,如1996,2004年是闰 年;(2)能被100整除,又能被400整除的年份 是闰年。如1600,2000年是闰年。不符合这两 个条件的年份不是闰年
清华大学出版社 TSINGHUA UNIVERSITY PRESS 设y为被检测的年份,算法可表示如下 S1:2000→y S2:若不能被4整除,则输出y“不是闰年”。然后转 到S6。 S3:若能被4整除,不能被100整除,则输出y“是闰 年”。然后转到S6。 s4:若能被100整除,又能被400整除,输出y“是闰 年”,否则输出“不是闰年”。然后转到S6。 s5:输出y“不是闰年 S6:y+1→y S7:当y≤2500时,转S2继续执行,如y>2500,算 法停止。 C程序设计(第三版) http://ccf.tsinghua.edu.cn 13
C程序设计(第三版) http://ccf.tsinghua.edu.cn 13 设y为被检测的年份,算法可表示如下 : S1:2000 → y S2:若y不能被4整除,则输出y “不是闰年”。然后转 到S6 S3:若y能被4整除,不能被100整除,则输出y “是闰 年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰 年”,否则输出“不是闰年” 。 然后转到S6。 S5: 输出y “不是闰年” 。 S6:y+1 → y S7:当y≤2500时,转S2继续执行,如y>2500,算 法停止
清华大学出版社 以上算法中每做一步 都分别分离出一些 ①y不能被 范围(巳能判定为闰 4整除 年或非闰年),逐步 非闰年 缩小范围,直至执 被100 ②2y被4整除, 行S时,只可能是除以能(但不能被10 非闰年。 整除 闰年 闰年 其它”包括能被4 整除,又能被100整 除,而不能被400整 ④其他 除的那些年份(如 非闰年 1990)是非闰年。 c程设计(第三版) http://ccf.tsinghua.edu.cn 14
C程序设计(第三版) http://ccf.tsinghua.edu.cn 14 以上算法中每做一步 都分别分离出一些 范围(巳能判定为闰 年或非闰年),逐步 缩小范围,直至执 行S5时,只可能是 非闰年。 “其它” 包括能被4 整除,又能被100整 除,而不能被400整 除的那些年份(如 1990) 是非闰年
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例24求1-+ 99100 算法如下 S: sign=1 单词作变量名,以使算 S2: sum=1 法更易于理解: S3. deno=2 sum表示累加和,deno是 S4:sign=(-1)×sign 英文分母( denom inator) s5:term= sign x(1/deno)缩写,sgn代表数值的符 S6. sum=sum+term 号,term代表某一项。 S7. deno=deno+1 S8:若deno≤100返回S4,否则算法结束。 反复执行S4到S8步骤,直到分母大于100为止。 共执行了99次循环,向sum累加入了99个分数 值就星多项 C程序设计(第三版) http://ccf.tsinghuaedu.cn 15
C程序设计(第三版) http://ccf.tsinghua.edu.cn 15 例2.4 求 100 算法如下 : 1 99 1 ...... 4 1 3 1 2 1 1− + − + − + S1:sign=1 S2:sum=1 S3:deno=2 S4:sign=(-1)×sign S5:term=sign×(1/deno) S6:sum=sum+term S7:deno=deno+1 S8:若deno≤100返回S4 单词作变量名,以使算 法更易于理解: sum表示累加和,deno是 英文分母(denom inator) 缩写,sign代表数值的符 号,term代表某一项。 反复执行S4到S8步骤,直到分母大于100为止。 一共执行了99次循环,向sum累加入了99个分数 。sum最后的值就是多项式的值