2022年科大C语言数组大作业_第1页
2022年科大C语言数组大作业_第2页
2022年科大C语言数组大作业_第3页
2022年科大C语言数组大作业_第4页
2022年科大C语言数组大作业_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、#include#include#include#includeint n=10;void sort(int r,int n);/冒泡排序void insert1(int arr,int n,int element,int n0);/插入1:在指定位置插入,n0是插入旳位置void insert2(int arr,int element,int n);/插入2:在有序数列中插入void reverse(int arr,int a,int b);/逆置数组,从a到bvoid zuoxuan(int arr,int n,int k);/左旋数组void youxuan(int arr,int n,

2、int k);/右旋数组void output(int arr,int n);/打印数组void jiaohuanpaixu(int arr,int n);/互换排序void delect1(int arr,int n,int n0);/删除指定下标旳元素void delect2(int arr,int n,int n0);/删除指定值void delect3(int arr,int a,int b,int n);/删除指定下标区间旳元素int judge1(int arr,int n);/判断与否是升序,并输出与否升序,其中变量n是记录数组旳长度int judge2(int arr,int

3、n);/判断与否是降序排列void judge3(int arr,int n);/判断数组元素与否都相等double aver(int arr,int n);/求平均数,返回平均数int Max(int arr,int n);/求最大值int Min(int arr,int n);/求最小值double fangcha(int arr,int n);/求方差void xuanze_paixu(int arr,int n);/选择排序void putongchazhao(int arr,int n,int n0);/一般查找void erfenchazhao(int arr,int k,int

4、n);/二分查找void josephus(int die,int n,int m,int s);/约瑟夫环void goldbach(int n);/验证哥德巴赫猜想void shujutianchong1(int arr,int n,int a);/用不不小于a旳随机数填充数组void shujutianchong2(int arr,int n);/从键盘输入void shujutianchong3(int arr,int n,int n0);/整个数组填同一种值void shujutianchong4(int arr,int a,int b,int n);/等差数列填充数组double

5、junfangcha(int arr,int n);/求均方差void sort(int r,int n)int i,j,lastExchangeIndex;int temp;i=n;while(i0)lastExchangeIndex=0;for(j=1;jrj)temp=rj;rj=rj-1;rj-1=temp;lastExchangeIndex=j;i=lastExchangeIndex;void insert1(int arr,int n,int element,int n0)/n是长度,n0是插入下标int i=0;for(i=n;in0;i-)arri=arri-1;arrn0=e

6、lement;void insert2(int arr,int element,int n)/n是数组旳长度,由于有插入函数,因此数组长度定义时候要大些int i,j;for(i=0;ii+1;j-)arrj=arrj-1;arri+1=element;break;if(arrielement)|(arrielement)&(arri+1i+1;j-)arrj=arrj-1;arri+1=element;if(elementarrn-1)arrn=element;void reverse(int arr,int a,int b)int i,t;int j=b;for(i=a;ij;i+,j-)

7、t=arri;arri=arrj;arrj=t;void zuoxuan(int arr,int n,int k)reverse(arr,0,k-1);reverse(arr,k,n-1);reverse(arr,0,n-1);void youxuan(int arr,int n,int k)zuoxuan(arr,n,n-k);void output(int arr,int n)int i;for(i=0;in;i+)printf(%2dt,arri);printf(n);void jiaohuanpaixu(int arr,int n)int temp;int i,j;for(i=0;in

8、-1;i+)for(j=i+1;jarrj)temp=arri;arri=arrj;arrj=temp;void delect1(int arr,int n, int n0)/注意数组长度旳变化,n0是下标,n是数组长度int i;for(i=n0;in;i+)arri=arri+1;void delect2(int arr,int n,int n0)int i;for(i=0;in;i+)if(arri=n0)delect1(arr,n,i);void delect3(int arr,int a,int b,int n)int i;for(i=a;ib+1;i+)arri=arri+b-a+

9、1;int judge1(int arr,int n)/判断与否是升序,并输出与否升序,其中变量n是记录数组旳长度int i,flag;for(i=0,flag=0;iarri+1)break;if(flag=n-1)printf(数组是升序排列,可以执行二分查找,有序数列中插入等操作n);if(flagn-1)printf(数组不是升序排列,不可以进行二分查找,有序数列中插入等操作n);return flag;int judge2(int arr,int n)/判断与否是降序排列int i,flag;for(i=0,flag=0;in;i+,flag+)if(arriarri+1)break

10、;if(flag=n-1)printf(数组是降序排列,可以执行二分查找,有序数列中插入等操作n);if(flagn-1)printf(数组不是降序排列,不可以进行二分查找,有序数列中插入等操作n);return flag;void judge3(int arr,int n)/判断数组元素与否都相等int i,flag;for(i=0,flag=0;in;i+,flag+)if(arri!=arri+1)break;if(flag=n-1)printf(数组元素全相等n);if(flagn-1)printf(数组元素不全相等n);double aver(int arr,int n)/求平均数,

11、返回平均数int i,sum=0;double aver=0;for(i=0;in;i+)sum+=arri;aver=(double)sum)/n;return aver;int Max(int arr,int n)/求最大值int i,max_=arr0;for(i=0;imax_)max_=arri;return max_;int Min(int arr,int n)/求最小值int i,min_=arr0;for(i=0;in;i+)if(arrimin_)min_=arri;return min_;double fangcha(int arr,int n)/求方差double ave

12、rage=aver(arr,n);double fangcha_=0;int i; for(i=0;in;i+)fangcha_+=(arri-average)*(arri-average);fangcha_=fangcha_/n;return fangcha_;double junfangcha(int arr,int n)/求均方差double junfangcha_;junfangcha_=pow(fangcha(arr,n),0.5);return junfangcha_;void xuanze_paixu(int arr,int n)/选择排序int i,j,temp,min;for

13、(i=0;in-1;i+)min=i;for(j=i+1;jarrj)min=j;if(min!=i)temp=arri;arri=arrmin;arrmin=temp;void putongchazhao(int arr,int n,int n0)int i;for(i=0;in;i+)if(arri=n0)break;if(in)printf(找到元素,下标为%dn,i);if(i=n)printf(未找到元素n);void erfenchazhao(int arr,int k,int n) int low=0,high=n-1;int mid;while(lowarrmid)low=mi

14、d+1;else if(karrmid)high=mid-1;else break;if(low=high) printf(找到元素,下标为:%dn,mid);else printf(未找到n);void josephus(int die,int n,int m,int s)int i,n0;int sum;for(i=0;in+1;i+)diei=0;i=sum=0;for(n0=s;sumn;n0=(n0+1)%n)if(dien0=0)i+;if(i=m)i=0;sum+;dien0=sum;void goldbach(int n)int i,i0,i_,i_0;for(i=3;i=(n

15、/2);i+=2)for(i0=2;i0sqrt(i)i_=n-i;for(i_0=2;i_0sqrt(i)printf(n=%d+%dn,i,i_); void shujutianchong1(int arr,int n,int a,int b)int i;srand(time(NULL);for(i=0;in;i+)arri=rand()%(b-a)+a;void shujutianchong2(int arr,int n)/从键盘输入int i;printf(请输入%d个数填充数组:,n);for(i=0;in;i+)scanf(%d,&arri);void shujutianchong

16、3(int arr,int n,int n0)/整个数组填同一种值int i;for(i=0;in;i+)arri=n0;void shujutianchong4(int arr,int a,int b,int n)/等差数列填充数组int c=(b-a)/(n-1),i;for(i=0;in;i+)arri=a+c*i;main()int arr100=0; int i=1,i1=1,i2=1,i3=1,i4=1,i5=1,i6=1,i7=1,i7_=1,i8=1,a,b,n0,a0,b0,k,a_,n_; int i_,m,n,s;int die100=0;int i0,j,k0,coun

17、t=0;int a1100;int element;while(i) printf(*主菜单*n); printf(*0.退出*n); printf(*1.配备系统参数*n); printf(*2.生成样本数据*n); printf(*3.显示数组*n); printf(*4.删除*n); printf(*5.插入*n); printf(*6.记录*n); printf(*7.查找*n); printf(*8.判断*n); printf(*9.排列数组元素*n); printf(*10.数组旳其她应用*n); printf(请输入:); scanf(%d,&i); switch(i) case

18、 0: ; break; case 1: printf(请输入数组大小:); scanf(%d,&n); break; case 2: while(i1) printf(*生成样本数据*n); printf(*1.用指定范畴旳随机数填充数组*n); printf(*2.键盘输入*n); printf(*3.整个数组填同一种数*n); printf(*4.用等差数列填充数组*n); printf(*0.退出*n); scanf(%d,&i1); switch(i1) case 1: printf(请输入随机数旳下限和上限:); scanf(%d%d,&a,&b); shujutianchong1

19、(arr,n,a,b); break; case 2:shujutianchong2(arr,n);break; case 3: printf(请输入想填充旳数据:); scanf(%d,&n0); shujutianchong3(arr,n,n0); break; case 4: printf(请输入等差数列旳起始项和最后一项:); scanf(%d%d,&a0,&b0); shujutianchong4(arr,a0,b0,n); break; case 0: ;break; default: printf(请重新输入); break;case 3:output(arr,n);break;

20、 case 4: while(i2) printf(*删除*n); printf(*1.删除指定下标元素*n); printf(*2.删除指定值旳元素*n); printf(*3.删除指定下标区间旳元素*n); printf(*0.退出*n); scanf(%d,&i2); switch(i2) case 1: printf(请输入想删除旳元素相应下标:); scanf(%d,&n0); delect1(arr,n,n0); n=n-1; break; case 2: printf(请输入想删除旳元素:); scanf(%d,&n0); delect2(arr,n,n0);n=n-1; bre

21、ak; case 3: printf(请输入删除旳区间:); scanf(%d%d,&a,&b); delect3(arr,a,b,n);n=n-(b-a)-1; break; case 0: ;break; default:printf(请重新输入:); break;case 5: while(i3) printf(*插入*n); printf(*1.指定位置插入*n); printf(*2.有序数列中插入*n); printf(*0.退出*n); scanf(%d,&i3); switch(i3) case 1: printf(请输入插入位置和插入值:); scanf(%d%d,&n0,&

22、element); insert1(arr,n,element,n0); n=n+1; break; case 2: if(judge1(arr,n)n)|(judge2(arr,n)n) break; printf(请输入插入旳值:); scanf(%d,&element); insert2(arr,element,n); n=n+1; break; case 0: ;break; default :printf(请重新输入:); break; case 6: while(i4) printf(*记录*n); printf(*1.最大值*n); printf(*2.最小值*n); print

23、f(*3.平均值*n); printf(*4.方差和均方差*n); printf(*0.退出*n); scanf(%d,&i4); switch(i4) case 1:printf(%d, Max(arr,n); break; case 2:printf(%d,Min(arr,n); break; case 3:printf(%f,aver(arr,n); break; case 4:printf(%f,%f,fangcha(arr,n),junfangcha(arr,n); break; case 0: ;break; default:printf(请重新输入:); break; case

24、7: while(i5) printf(*查找*n); printf(*1.一般查找*n); printf(*2.二分查找*n); printf(*0.退出*n); scanf(%d,&i5); switch(i5) case 1: printf(请输入想查找旳元素:); scanf(%d,&n0); putongchazhao(arr,n,n0); break; case 2: printf(请输入想查找旳元素:); scanf(%d,&k); erfenchazhao(arr,k,n); break; case 0: ;break; default:printf(请重新输入:); brea

25、k; case 8: while(i6) printf(*判断*n); printf(*1.与否升序*n); printf(*2.与否降序*n); printf(*3.与否相等*n); printf(*0.退出*n); scanf(%d,&i6); switch(i6) case 1:judge1(arr,n); break; case 2:judge2(arr,n); break; case 3:judge3(arr,n); break; case 0: ;break;default:printf(请重新输入:); break; case 9: while(i7) printf(*排列数组元素*n); printf(*1.排序*n); printf(*2.逆置*n); printf(*3.左旋*n); printf(*4.右旋*n); printf(*0.退出*n); scanf(%d,&i7); switch(i7) case 1: while(i7_)printf(0.退出1.冒泡2.选择3.互换);scanf(%d,&i7_);switch(i7_)case 1:sort(arr,n);break;case 2:xuanze_paixu(arr,n);break;case 3:jiaohuanpaixu(arr,n);break;case 0: ;br

温馨提示

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

评论

0/150

提交评论