华南农业大学理学院。
程序设计与算法语言 )
课程设计。实验时间: 2011学年第二学期
专业年级: 2011级统计 2 班
实验题目: 1、数学问题。
2、统计字符出现的频率。
3、单词计数。
学生姓名___欧于政___
学号 __201130980218___
自评成绩___92___
教师评成绩___
指导老师: 罗志坚
课程设计评分表。
目录。题目1(a) 1
需求分析 1
概要设计 2
详细设计 3
测试结果 6
题目1(b) 7
需求分析 7
概要设计 9
详细设计 9
测试结果 13
题目3 14
需求分析 14
概要设计 16
详细设计 17
测试结果 19
课程设计总结 20
参考文献 1
附录:(带注释的源程序) 2
1.输入3个大于0的整数;
2.输出2个整数;
3.程序功能为输入3个大于零的整数并求出它们的最大公约数和最小公倍数,然后输出。
高层数据流图:
低层数据流图:
细化的程序结构图:
1.程序共分为4个模块,分别为:输入模块,求最大公约数模块,求最小公倍数模块和输出模块。
2.算法方面。
求最大公约数:
设置整型变量j,divisor和min
if输入的某个数小于于另外2个数。
设置这个数给min
if某个从1开始一直到min的整数可以同时整除输入的3个数。
设置这个数给divisor
返回divisor
总体思路为先找出3个数中的最小数,以此作为最大公约数的上限,然后从1开始依次递增1,从1到最小数中找出最大的能同时被这3个数整除的数,所求即为最大公约数。
求最小公倍数:
设置整型变量i,multipler和max
if输入的某个数大于另外2个数。
设置这个数给max
if某个从max开始一直到正无穷的整数可以同时被输入的3个数整除。
设置这个数给divisor
返回divisor
总体思路为先找出3个数中的最大数,然后以此为基数依次递增1,找到的第一个能同时整除这3个数的整数就是最小公倍数。
流程图:输入正确时的结果:
输入错误时的结果:
输入错误时程序可以通知用户再次输入任何正确的数值。
1. 输入5个整型数字作为数列,输入1个整型数字插入于已输入的数列;
2. 输出6个整型数字;
3. 程序功能为把第一次输入的由5个整型数字组成的数列由小到大排列,并把第二次输入的整数插入到数列中,结果仍由小到大排列,并被打印于屏幕上。
高层数据流图。
低层细化的数据流图:
细化的程序结构图:
1. 程序共分为4个模块,分别为:输入模块,排列输入5个整数模块,排列后面插入的整数模块和输出模块。
2. 算法方面。
设计交换计数器count为0
定义5个数的一维数组。
输入5个数字于一维数组。
for这个列表中从第一个元素到最后一个元素的每个元素。
设置最下数值等于当前元素。
保存当前元素的索引值。
for在这个列表中从当前索引值加1的元素到最后一个元素。
if元素【内循环索引值】《最小数值。
设置之歌最小数值=元素【内层循环索引值】
endifendfor
交换当前数值与心得最小数值。
交换计数器count加1
endfor
返回交换计数器count的值。
定义新的一维数组。
把前面数组的5个数赋给新定义一维数组的前五个数。
把再次输入的数赋给新定义一维数组的第六个数。
for这个列表中从第一个元素到最后一个元素的每个元素。
设置最下数值等于当前元素。
保存当前元素的索引值。
for在这个列表中从当前索引值加1的元素到最后一个元素。
if元素【内循环索引值】《最小数值。
设置之歌最小数值=元素【内层循环索引值】
endifendfor
交换当前数值与新的最小数值。
流程图:总流程图:
输入测试文本时的结果:
1.输入为打开的一个文件,用户无需在程序中输入,但可自行修改文件内容;
2.输出1个整型数值;
3.程序功能为打开根目录中的一个文件,并计算文件中单词的数量,然后返回一个整数。
高层数据流图:
低层数据流图:
细化的程序结构图:
1. 程序共分为2个模块,分别为:计算单词数量模块和输出模块。
2. 算法方面。
用fopen打开文件并把内容赋给一维数组message
设置一个名为inaword的整数变量给符号常量no
设置单词计数器为0
if当前字符时一个空格,逗号,或实心圆点。
设置inaword给no
else if(inaword ==no)
设定 inaword 给符号常量yes
给单词计数器加1
end if
endfor
返回计数器的数值。
这个算法的关键在于if/else的条件式。如果当前字符是一个空字符或逗号,则inword被设置为no,不管他在前面的字符值是什么。只有在当前字符不是空格或逗号是才检查else中的条件式。
然后,它检查我们是否不在一个单词中。这样,在当前字符不是一个空字符或逗号和我们不在一个单词中时,这个else的条件式将为真,这就意味着我们进行必须从一个空字符或逗号到非空字符的转换。因为只是确定我们在一个单词中的标准,这个单词计数被增加,inaword变量被设置为yes。
流程图: 输入测试文本时的结果:
通过程序的编写,让我懂得了程序的设计与编写,懂得了怎么样去实现一个程序,怎么样将外部文件数据读入到内存中,并存储到数组中,明白了算法的外部引用很方便于程序的编写,进一步熟悉了c语言的运行环境与编写,有利与以后的程序学习,同时也非常感谢再此过程中老师的悉心指导。
标准c语言基础教程。
第四版)a first book of ansi c
fourth edition
美】 gary j. bronson 著。
单先余陈芳张蓉等译。
单兴审校。电子工业出版社。
题目1a*求3个数的最大公约数和最小公倍数*/
#include<>
int main()
int a,b,c,d,e;
int divisor(int,int,int); 声明函数原型*/
int multiple(int,int,int);/声明函数原型*/
printf("please enter 3 numbers:");
scanf("%d%d%d",&a,&b,&c);
if (a<=0||b<=0||c<=0)
d = divisor (a,b,c);
e = multiple (a,b,c);
printf("the greatest common divisor of %d,%d and %d is %d",a,b,c,d);
printf("the least common x of %d,%d and %d is %d",a,b,c,e);
getch();
return 0;
int divisor (int a,int b,int c)
int j,s,min;
if (a<=b&&a<=c)
min=a;
if (b<=a&&b<=c)
min=b;
if (c<=a&&c<=a)
min=c;
*找出3个数中的最小数*/
for(j=1;j<=min;j++)控制范围在1到最小数之间*/
return s;
int multiple(int a,int b,int c)
一课程设计的依据
高雄縣竹後國小生命教育課程設計與教學。生命發揚。服務人群。校長 劉昭雄。召集人 張凱元。研究員 王進興。王菀瑜。吳智惠。林水恩。林雅慧。周雅雯。侯鳳娥。董金玲。劉虹妙。潘毓斌。謝瓊瑤。龔志隆。高雄縣竹後國小生命教育課程設計與實施。目次。壹 課程設計理念與架構228 一 課程設計的依據。二 課程設計的...
2019课程设计 程老师
civil iation university of china 航空发动机强度与振动。课程设计报告。姓名。学号。班级。专业。指导教师。2014年11月。题目及要求。题目基于ansys的叶片 轮盘强度与振动分析。1 模型。图1 叶片 轮盘模型如右图所示,相关参数如下 等厚度轮盘,厚度为0.025m,...
2019课程设计
面向对象 课程设计2011 1 要求 1 分小组完成课程设计,每小组2人,每个小组一个小组长。2 每个小组独立完成课程设计。3 采纳面向对象方法进行分析 设计 编程,用uml建模语言 在rational rose或visio等可视化建模工具进行建模。2 提交内容 1 每个阶段结束要提交相应的模型 文...