程序设计与算法语言课程设计

  • 格式:doc
  • 大小:282.00 KB
  • 文档页数:29

( 程序设计与算法语言 )

课程设计

实验时间: 2011学年第二学期

专业年级: 2011级统计 2 班

实验题目:

□ 1、数学问题

□ 2、统计字符出现的频率

□ 3、单词计数

1 目 录

题目1(A) ......................................... 1

需求分析.................................................................................................. 1

概要设计.................................................................................................. 2

详细设计.................................................................................................. 3

测试结果.................................................................................................. 6

题目1(B) ......................................... 7

需求分析.................................................................................................. 7

概要设计.................................................................................................. 9

详细设计.................................................................................................. 9

测试结果................................................................................................ 13

题目3 ............................................. 14

需求分析................................................................................................ 14

概要设计................................................................................................ 16

详细设计................................................................................................ 17

测试结果................................................................................................ 19

课程设计总结 ....................................... 20

参考文献 ............................................ 1

附录:(带注释的源程序) ............................. 2

1 题目1(a)

需求分析

1.输入3个大于0的整数;

2.输出2个整数;

3.程序功能为输入3个大于零的整数并求出它们的最大公约数和最小公倍数,然后输出。

高层数据流图:

低层数据流图: 3个大于0的数 用

户 计算3个数的最大公约数和最小公倍数

户 最

数 最

2

概要设计

细化的程序结构图: 用户

计算3个数的最大公约数 计算3个数的最小公倍数 输入大于0的的3个数

输出最大公约数 输出最小公倍数

用户

3

详细设计

1.程序共分为4个模块,分别为:输入模块,求最大公约数模块,求最小公倍数模块和输出模块。

2.算法方面

求最大公约数:

设置整型变量j,divisor和min

If输入的某个数小于于另外2个数

设置这个数给min

if某个从1开始一直到min的整数可以同时整除输入的3个数

设置这个数给divisor

返回divisor

求最大公约数和最小公倍数的程序

求3个输入数的最大公约数 求3个输入数的最小公倍数 返回数值 返回数值

输出结果 返回数值

4 总体思路为先找出3个数中的最小数,以此作为最大公约数的上限,然后从1开始依次递增1,从1到最小数中找出最大的能同时被这3个数整除的数,所求即为最大公约数。

求最小公倍数:

设置整型变量i,multipler和max

If输入的某个数大于另外2个数

设置这个数给max

if某个从max开始一直到正无穷的整数可以同时被输入的3个数整除

设置这个数给divisor

返回divisor

总体思路为先找出3个数中的最大数,然后以此为基数依次递增1,找到的第一个能同时整除这3个数的整数就是最小公倍数。

流程图:

5

开始

输入3个大于0的结束 求出最大公约数

求出最小公倍数

输出结果

开始

a

b

否 Min=c Min=b 是

c

是 i=1

i整除Min?

i

1

i是最大公约数

i大于等于Min?

输出最大公约数 是 求出最大公约数

6

测试结果

输入正确时的结果:

输入错误时的结果:求最小公倍数

开始

a>b,c?

b>a,c? c>a,b? 是 否

否 Max=c Max=a

Max=b 是

是 i=Max i整除a,b,c? 最小公倍数为i 输出最小公倍数

否 i加1 是

7

输入错误时程序可以通知用户再次输入任何正确的数值。

题目1(b)

需求分析

1. 输入5个整型数字作为数列,输入1个整型数字插入于已输入的数列;

2. 输出6个整型数字;

3. 程序功能为把第一次输入的由5个整型数字组成的数列由小到大排列,并把第二次输入的整数插入到数列中,结果仍由小到大排列,并被打印于屏幕上。

8 高层数据流图:

低层细化的数据流图:

用户

排序的程序

用户

用户

输入5个整数

升序排序这5个数

输入一个整数

使插入这个数后6个整数由小到大排列

用户

9 概要设计

细化的程序结构图:

详细设计

1. 程序共分为4个模块,分别为:输入模块,排列输入5个整数模块,排列后面插入的整数模块和输出模块。

2. 算法方面

设计交换计数器count为0

定义5个数的一维数组 排序程序

输入数据 原始数据

处理数据 排列结果,操作次数

升序排列 打印结果于屏幕 原始数据 排列结果,操作次数

原始数据 排列结果,操作次数

10 输入5个数字于一维数组

For这个列表中从第一个元素到最后一个元素的每个元素

设置最下数值等于当前元素

保存当前元素的索引值

For在这个列表中从当前索引值加1的元素到最后一个元素

If元素【内循环索引值】<最小数值

设置之歌最小数值=元素【内层循环索引值】

EndIf

EndFor

交换当前数值与心得最小数值

交换计数器count加1

EndFor

返回交换计数器count的值

定义新的一维数组

把前面数组的5个数赋给新定义一维数组的前五个数

把再次输入的数赋给新定义一维数组的第六个数

For这个列表中从第一个元素到最后一个元素的每个元素

设置最下数值等于当前元素

保存当前元素的索引值

For在这个列表中从当前索引值加1的元素到最后一个元素

If元素【内循环索引值】<最小数值

设置之歌最小数值=元素【内层循环索引值】