大一课程设计

发布 2022-10-04 07:44:28 阅读 4893

华南农业大学理学院。

程序设计与算法语言 )

课程设计。实验时间: 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 每个阶段结束要提交相应的模型 文...