1、 ( 程序设计与算法语言程序设计与算法语言 ) 课程设计课程设计 实验时间: 2011 学年第二学期 专业年级: 2011 级统计 2 班 实验题目: 1、数学问题 2、统计字符出现的频率 3、单词计数 1 目目 录录 题目题目 1 1(A A) 1 1 需求分析 1 概要设计 2 详细设计 3 测试结果 6 题目题目 1 1(B B) 7 7 需求分析 7 概要设计 9 详细设计 9 测试结果 .13 题目题目 3 3 1414 需求分析 .14 概要设计 .16 详细设计 .17 测试结果 .19 课程设计总结课程设计总结 2020 参考文献参考文献 1 1 附录: (带注释的源程序)附录
2、: (带注释的源程序) 2 2 1 题目题目 1 1(a a) 需求分析需求分析 1.输入 3 个大于 0 的整数; 2.输出 2 个整数; 3.程序功能为输入 3 个大于零的整数并求出它们的最大公约数 和最小公倍数,然后输出。 高层数据流图: 低层数据流图: 3 个大于 0 的数 用 户 计算 3 个数的 最大公约数和 最小公倍数 用 户 最 小 公 倍 数 最 大 公 约 数 2 概要设计概要设计 细化的程序结构图: 用户 计算 3 个数的 最大公约数 计算 3 个数的 最小公倍数 输入大于 0 的的 3 个数 输出最大公约数 输出最小公倍数 用户 3 详细设计详细设计 1.程序共分为 4
3、 个模块, 分别为: 输入模块, 求最大公约数模块, 求最小公倍数模块和输出模块。 2.算法方面 求最大公约数: 设置整型变量 j,divisor 和 min If 输入的某个数小于于另外 2 个数 设置这个数给 min if 某个从 1 开始一直到 min 的整数可以同时整除输入的 3 个数 设置这个数给 divisor 返回 divisor 求最大公约数和 最小公倍数的程 序 求 3 个输入数 的最大公约数 求 3 个输入数 的最小公倍数 返 回 数 值 返 回 数 值 输出结果 返回数 值 4 总体思路为先找出 3 个数中的最小数, 以此作为最大公约数的上 限,然后从 1 开始依次递增
4、1,从 1 到最小数中找出最大的能同时被 这 3 个数整除的数,所求即为最大公约数。 求最小公倍数: 设置整型变量 i,multipler 和 max If 输入的某个数大于另外 2 个数 设置这个数给 max if 某个从 max 开始一直到正无穷的整数可以同时被输入的 3 个 数整除 设置这个数给 divisor 返回 divisor 总体思路为先找出 3 个数中的最大数, 然后以此为基数依次递增 1,找到的第一个能同时整除这 3 个数的整数就是最小公倍数。 流程图: 5 开始 输入 3 个 大于 0 的 结束 求出最大公 约数 求出最小公 倍数 输出结果 开始 aa,c? ca,b? 是
5、 否 否 Max=c Max=a Max=b 是 是 i=Max i 整除 a,b,c? 最 小 公 倍数为i 输出最小公 倍数 否 i 加 1 是 7 输入错误时程序可以通知用户再次输入任何正确的数值。 题目题目 1 1(b b) 需求分析需求分析 1. 输入 5 个整型数字作为数列,输入 1 个整型数字插入于已输入的 数列; 2. 输出 6 个整型数字; 3. 程序功能为把第一次输入的由 5 个整型数字组成的数列由小到大 排列,并把第二次输入的整数插入到数列中,结果仍由小到大排 列,并被打印于屏幕上。 8 高层数据流图: 低层细化的数据流图: 用户 排序的程序 用户 用户 输入 5 个整数
6、 升序排序这 5 个数 输入一个整数 使插入这个数后 6 个整数由小到大排列 用户 9 概要设计概要设计 细化的程序结构图: 详细设计详细设计 1. 程序共分为 4 个模块,分别为:输入模块,排列输入 5 个整 数模块,排列后面插入的整数模块和输出模块。 2. 算法方面 设计交换计数器 count 为 0 定义 5 个数的一维数组 排序程序 输入数据 原始数据 处理数据 排列结果, 操作次数 升序排列 打印结果于屏幕 原始数据 排列结果, 操作次数 原始数据 排列结果,操作次数 10 输入 5 个数字于一维数组 For 这个列表中从第一个元素到最后一个元素的每个元素 设置最下数值等于当前元素 保存当前元素的索引值 For 在这个列表中从当前索引值加 1 的元素到最后一个元素 If 元素【内循环索引值】=a else if(c=a /*找出找出 3 个数中的最大数个数中的最大数*/ for (i=max; ;i+)/*以最大的数为基数以最大的数为基数*/ if (i%a