C语言大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院
目录
1 摘要 (3)
1.1设计题目 (3)
1.2设计内容 (3)
1.3开发工具 (3)
1.4应用平台 (3)
2 详细设计 (3)
2.1程序结构 (3)
2.2主要功能 (10)
2.3函数实现 (10)
2.4开发日志 (17)
3 程序调试及运行 (18)
3.1程序运行结果 (18)
3.2程序使用说明 (19)
3.3程序开发总结 (20)
4 附件(源程序) (20)
1 摘要
1.1 设计题目
A题算法型:折半查找算法演示程序
B题空间桁架结构节点位移求解
1.2 设计内容
A题:
本程序是一个演示折半查找算法的演示程序。当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。
B题:
空间桁架结构节点位移求解
1.3 开发工具
Code Blocks 12.11(内置MinGW)
1.4 应用平台
Windows 7 64位
2 详细设计
2.1 程序结构
A题:
程序功能模块:
本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序
退出模块。
工程文件结构:
本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。
六大模块说明:
(1) 程序说明模块:
给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。此部分模块主函数源代码如下:
int a[N];
/*存储要查找的数表,用户输入*/
int i,n,num,count;
/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/
int top,bottom,mid;
char c;
/*存储选择函数中的输入的字符y或n*/
int flag=1;
/*折半法循环标志变量*/
int loc=-1;
/*存储所查找数据位置*/
double k=0;
p_s(76);puts("\n");
/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)
printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");
puts("\n");
/*程序欢迎语*/
p_s(13);
printf("制作者:Haidong Chen***");
/*作者信息*/
p_s(4);
printf("**Email:1562353594@");
/*电子邮件*/
p_s(11);puts("\n");
p_s(76);puts("\n");
/*再次引用p_s函数,程序说明部分结束*/
附:print_star.cpp文件源代码
#include
void p_s(int k)
{
int i;
for(i=1;i<=k;i++)
/*连续输出ka个'*'*/
printf("*");
}
(2) 输入模块:
引导使用者输入要在其中查找数据的数表的数据个数和数表数据。并通过一个judge函数判断输入是否合法,若不合法提醒用户继续输入。此部分模块主函数源代码如下:
printf("请输入你想要在其中查找数据的数据表列的数据个数(1--50):\n");//
scanf("%d",&n);
n=judge(n);
/*引用judge函数,判断n值是否合法*/ (judge函数位于judge.cpp文件,参见下文)printf("请输入你要在其中查找数据的数据表列(%d个数据用空格间隔大小排序不限):\n",n);
/*输入要查找的n 个数据*/
for(i=0;i<=n-1;i++)
scanf("%d",&a[i]);
/*将要查找的n个数据存入数组a*/
sort(a,n);
/*引用sort函数,将数表排序*/
printf("\n输出表列(从小到大排列)\n");
附:judge.cpp文件源代码
#include
int judge(int n2)
/*函数作用:判断n2的值是否在1—50范围内*/
{ int n3;
while(n2<1 || n2>50)
{
printf("你输入的数不正确,请重新输入。\n");
printf("请输入你想要在其中查找数据的数据表列的数据个数(1--50):\n");
/*不合法重新输入并传递给主函数*/
scanf("%d",&n3);
return n3;
}
return n2;
}
(3) 排序模块:
将用户输入数表的按升序排列并输出,为接下来的折半法查找做准备。此部分模块主要通过sort.cpp 文件中的sort函数实现。此部分模块主函数源代码如下:
sort(a,n);
/*引用sort函数,将数表排序*/
printf("\n输出表列(从小到大排列)\n");
putout(a,0,n-1);
/*引用putout函数,输出排序后数表*/
附:sort.cpp 文件源代码
#include
void sort(int A[],int n1)
/*将数组A的元素按从下到大顺序排序*/
{
int x,y,z;
for(x=0;x for(y=0;y { if(A[y]>A[y+1]) /*二重循环将n1个数据由小到大排序*/ { z=A[y]; /*z暂时存储a[y]的值*/ A[y]=A[y+1]; A[y+1]=z; }