西南大学C语言综合作业数组的各项基本操作_第1页
西南大学C语言综合作业数组的各项基本操作_第2页
西南大学C语言综合作业数组的各项基本操作_第3页
西南大学C语言综合作业数组的各项基本操作_第4页
西南大学C语言综合作业数组的各项基本操作_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2008级 lxc一、综合设计题目:数组的各项基本操作。二、综合设计分工说明本实验由我一个人完成。 三、问题概述 本实验要求编写出一个程序,它能反复实现数组里的几个基本操作(输入、输出、排序、查找、插入、删除);而且要尽可能的使用模块化的程序设计方法,尽可能的体现c语言的风格。四、问题分析:本实验可先分功能模块完成各个基本操作,再利用函数的调用实现程序的全部功能;各功能模块的编写可在自己编写过的数组的基本操作的程序的基础之上做些修改来实现。五、功能模块描述及功能模块图:数组输入输出排序查找插入删除每个功能模块的功能:输入:输入数组里的各个元素输出:输出数组里的各个元素排序:将数组里的数从小到大

2、或从大到小进行排序查找:判断一个数是否是该数组中的一个数插入:向数组中插入一个数删除:将数组中的一个数删除掉六、每个功能模块的算法描述及其实现 :1. 输入:函数的作用:输入数组中的每一个元素;参数:int a int n;返回值:无;函数名,功能及实现方法:input; 运用for语句实现输入具体函数如下:void input(int a,int n)int i;for(i=0;i<n;i+)scanf("%d",&ai);2. 输出:函数的作用:输出数组中的每一个元素;参数:int a int n;返回值:无;函数名,功能及实现方法:output; 运用f

3、or语句实现输入具体函数如下:void output(int a,int n)int i;for(i=0;i<n;i+)printf("%d ",ai);printf("n"); 3. 排序:(1)函数的作用:将数组里的数从大到小排序参数:int a int n;返回值:无;函数名,功能及实现方法:f; 冒泡排序法具体函数如下:void f(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai<ai+1) t=ai; ai=ai+1; ai+1=t; p

4、rintf("数组中各数从大到小的顺序为: ");output(a,n);(2)函数的作用:将数组里的数从小到大排序参数:int a int n;返回值:无;函数名,功能及实现方法:f1; 冒泡排序法具体函数如下:void f1(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; printf("数组中各数从小到大的顺序为: ");output(a,n);4. 查找:函数的作用:判断一个数x是否是该数

5、组中的一个数参数:int a int n;返回值:无;函数名,功能及实现方法:f2; 折半查找发具体函数如下:void f2(int a,int n)int i,j,k,x,l;f1(a,n);printf("请输入要查找的一个整数: ");scanf("%d",&x);l=0;i=0; j=n-1; while(i<=j&&l=0) k=(i+j)/2; if(x=ak)l=1;break;if(x>ak)i=k+1;if(x<ak)j=k-1; if(l=1)printf("找到n");

6、else printf("没找到n");5. 插入:(1)函数的作用:向数组中插入一个数y(要求插入后数组中的所有数是按从小到大的顺序排列的)参数:int a int n;返回值:无;函数名:f3; 功能及实现方法:查找y在数组中的位置,并标记为k将数组中ak到an-1中的数整体后移一位将y 插入,使得ak=y具体函数如下:void f3(int a,int n)int i,k,y;f1(a,n);printf("请输入要插入的一个整数: ");scanf("%d",&y);if(y>an-1)k=n;for(i=0;i

7、<n;i+)if(y<ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你输入的整数之后,数组中各数为: ");output(a,n);(2)函数的作用:向数组中插入一个数y(要求插入后数组中的所有数是按从大到小的顺序排列的)参数:int a int n;返回值:无;函数名:f4; 功能及实现方法:查找y在数组中的位置,并标记为k将数组中ak到an-1中的数整体后移一位将y 插入,使得ak=y具体函数如下:void f4(int a,int n)int i,k,y;f(a,n);printf(

8、"请输入要插入的一个整数: ");scanf("%d",&y);if(y<=an-1)k=n;for(i=0;i<n;i+)if(y>ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你输入的整数之后,数组中各数为: ");output(a,n);6. 删除:函数的作用:将数组中的一个数z删除掉参数:int a int n;返回值:无;函数名:f5; 功能及实现方法:查找要删除的数z的位置k将数组中ak+1到an-1中的数整体前移一位具体函

9、数如下:void f5(int a,int n)int i,k,z;printf("数组中现有的数是:");for(i=0;i<n;i+) printf("%d ",ai);printf("n");printf("请输入要删除的数: ");scanf("%d",&z);for(i=0;i<n;i+) if(z=ai)k=i;for(i=k;i<n-1;i+) ai=ai+1;n-;printf("删除了你输入的整数之后,数组中各数为: ");outp

10、ut(a,n);7. 主函数:调用各个函数,反复实现数组的几个基本操作;运用while()实现多次循环调用;运用if()、&&等选择执行的操作类型;运用system(“color 7c”);system(“pause”);system(“cls”)以及printf()对输出界面进行美化;具体函数如下:void main()int a500,n,m,r,x,i;system("color 7c");printf("请输入数组中整数的个数:");scanf("%d",&n);printf("请输入数组中的

11、各数的值:");input(a,n);m=1;printf("请选择数组中各数显现的方式(1 为从小到大;2 为从大到小):");scanf("%d",&r);while(m>0)system("cls");printf("n");printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"

12、); printf(" ");printf("n"); printf(" 1 排序 ");printf("n"); printf(" ");printf("n"); printf(" 2 查找 ");printf("n"); printf(" ");printf("n"); printf(" 3 插入 ");printf("n"); printf("

13、; ");printf("n"); printf(" 4 删除 ");printf("n"); printf(" ");printf("n"); printf(" 0 退出 ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf(&qu

14、ot;n"); printf(" ");printf("n"); printf("n"); printf(" 您数组里数有:"); if(r=1)f1(a,n);output(a,n);if(r=2)f(a,n);output(a,n);printf("n"); printf(" 请选择你要执行的操作:"); scanf("%d",&m);printf("n");if(r=1&&m=1)f1(a,n);

15、printf("数组中各数从小到大的顺序为: ");output(a,n);system("pause");system("cls");if(r=1&&m=2)f1(a,n);f2(a,n);system("pause");system("cls");if(r=1&&m=3)f1(a,n);f3(a,n);n+;system("pause");system("cls");if(r=1&&m=4)f1(a,n)

16、;f5(a,n);n-;system("pause");system("cls");if(r=2&&m=1)f(a,n);printf("数组中各数从大到小的顺序为: ");output(a,n);system("pause");system("cls");if(r=2&&m=2)f(a,n);f2(a,n);system("pause");system("cls");if(r=2&&m=3)f(a,n);f

17、4(a,n);n+;system("pause");system("cls");if(r=2&&m=4)f(a,n);f5(a,n);n-;system("pause");system("cls");七、源程序清单:本实验由我一个人完成,程序附最后。八、测试数据及结果:本程序经我反复测试,均能反复实现任意多个数的排序、均能实现反复查找、反复插入、反复删除(包括从大到小和从小到大)。由于测试数据太多,下面只附部分测试数据:执行程序后提示:请输入数组中整数的个数:输入:6(回车)出现提示:请输入数组中各

18、数的值:输入:12 9 33 78 6 125 (回车)出现提示:请选择数组中各数显示的方式(1 为从小到大;2 为从大到小):输入:1 (回车)出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执行的操作:输入:1(回车)出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执行的操作:1数组中各数从小到大的顺序为:6 9 12 33 78 125请按任意键继续按任意键后出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12

19、 33 78 125 请选择你要执行的操作:输入:2(回车)出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执行的操作:2请输入要查找的一个整数:输入:125(回车)出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执行的操作:2请输入要查找的一个整数: 125找到请按任意键继续其它的操作也和上面的类似执行完其它操作后,按任意键会出现如下界面: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执

20、行的操作:输入: 0(回车)出现提示: 1 排序 2 查找 3 插入 4 删除 0 退出 你数组里数有:6 9 12 33 78 125 请选择你要执行的操作:0press any key to continue.此时按任意键退出!九、总结和体会:通过综合实验的设计,我能更好的运用所学知识进行编程了;在这个过程中,我的综合分析、解决问题的能力也得到了提高。在做综合实验的过程中也遇到了很多问题,起初总觉得很难解决,后来通过问同学和老师把很多问题都解决了。这让我明白了:什么问题都不是想象的那么难的,只要你愿意去解决它,你就一定能解决.还有一点值得一提的是:最初时,通过我的反复编写,我编写的程序已能

21、反复的实现排序、查找、插入、删除;但我的程序还是不是很完美,而且我根本没有想到把输出的界面美化一下,后来是老师给了我指点,我很快就对我的程序进行了美化,美化后的输出界面比先得程序好看了很多! 做完简单的美化后,我又进一步的完善了我的程序(实现双向的各种操作)从这个问题中我深刻的明白了一个道理:只要我们愿意开动我们的脑筋,我们什么都可以实现!在那之后,我也有了很多新的想法来让我的程序变的更加完美. 但由于时间原因,我还没能去实现那些想法,我会利用假期的时间去实现,我相信那一定又会是我的思维的一次提高十、源程序 #include"stdio.h"#include"st

22、dlib.h"void input(int a,int n)int i;for(i=0;i<n;i+)scanf("%d",&ai);void output(int a,int n)int i;for(i=0;i<n;i+)printf("%d ",ai);printf("n"); void f(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai<ai+1) t=ai; ai=ai+1; ai+1=t; vo

23、id f1(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; void f2(int a,int n)int i,j,k,x,l;f1(a,n);printf("请输入要查找的一个整数: ");scanf("%d",&x);l=0;i=0; j=n-1; while(i<=j&&l=0) k=(i+j)/2; if(x=ak)l=1;break;if(x>ak)i

24、=k+1;if(x<ak)j=k-1; if(l=1)printf("找到n"); else printf("没找到n");void f3(int a,int n)int i,k,y;f1(a,n);printf("请输入要插入的一个整数: ");scanf("%d",&y);if(y>=an-1)k=n;for(i=0;i<n;i+)if(y<ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你输入的整

25、数之后,数组中各数为: ");output(a,n);void f4(int a,int n)int i,k,y;f(a,n);printf("请输入要插入的一个整数: ");scanf("%d",&y);if(y<=an-1)k=n;for(i=0;i<n;i+)if(y>ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你输入的整数之后,数组中各数为: ");output(a,n);void f5(int a,int n)in

26、t i,k,z;printf("请输入要删除的数: ");scanf("%d",&z);for(i=0;i<n;i+) if(z=ai)k=i;for(i=k;i<n-1;i+) ai=ai+1;n-;printf("删除了你输入的整数之后,数组中各数为: ");output(a,n);void main()int a500,n,m,r,x,i;system("color 7c");printf("请输入数组中整数的个数:");scanf("%d",&am

27、p;n);printf("请输入数组中的各数的值:");input(a,n);m=1;printf("请选择数组中各数显现的方式(1 为从小到大;2 为从大到小):");scanf("%d",&r);while(m>0)system("cls");printf("n");printf(" ");printf("n"); printf(" ");printf("n"); printf(" &qu

28、ot;);printf("n"); printf(" ");printf("n"); printf(" 1 排序 ");printf("n"); printf(" ");printf("n"); printf(" 2 查找 ");printf("n"); printf(" ");printf("n"); printf(" 3 插入 ");printf(&qu

29、ot;n"); printf(" ");printf("n"); printf(" 4 删除 ");printf("n"); printf(" ");printf("n"); printf(" 0 退出 ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf("n&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论