科大C语言数组大作业.docx
- 文档编号:28312570
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:28
- 大小:19.28KB
科大C语言数组大作业.docx
《科大C语言数组大作业.docx》由会员分享,可在线阅读,更多相关《科大C语言数组大作业.docx(28页珍藏版)》请在冰豆网上搜索。
科大C语言数组大作业
#include
#include
#include
#include
intn=10;
voidsort(intr[],intn);//冒泡排序
voidinsert1(intarr[],intn,intelement,intn0);//插入1:
在指定位置插入,n0是插入的位置
voidinsert2(intarr[],intelement,intn);//插入2:
在有序数列中插入
voidreverse(intarr[],inta,intb);//逆置数组,从a到b
voidzuoxuan(intarr[],intn,intk);//左旋数组
voidyouxuan(intarr[],intn,intk);//右旋数组
voidoutput(intarr[],intn);//打印数组
voidjiaohuanpaixu(intarr[],intn);//交换排序
voiddelect1(intarr[],intn,intn0);//删除指定下标的元素
voiddelect2(intarr[],intn,intn0);//删除指定值
voiddelect3(intarr[],inta,intb,intn);//删除指定下标区间的元素
intjudge1(intarr[],intn);//判断是否是升序,并输出是否升序,其中变量n是记录数组的长度
intjudge2(intarr[],intn);//判断是否是降序排列
voidjudge3(intarr[],intn);//判断数组元素是否都相等
doubleaver(intarr[],intn);//求平均数,返回平均数
intMax(intarr[],intn);//求最大值
intMin(intarr[],intn);//求最小值
doublefangcha(intarr[],intn);//求方差
voidxuanze_paixu(intarr[],intn);//选择排序
voidputongchazhao(intarr[],intn,intn0);//普通查找
voiderfenchazhao(intarr[],intk,intn);//二分查找
voidjosephus(intdie[],intn,intm,ints);//约瑟夫环
voidgoldbach(intn);//验证哥德巴赫猜想
voidshujutianchong1(intarr[],intn,inta);//用小于a的随机数填充数组
voidshujutianchong2(intarr[],intn);//从键盘输入
voidshujutianchong3(intarr[],intn,intn0);//整个数组填同一个值
voidshujutianchong4(intarr[],inta,intb,intn);//等差数列填充数组
doublejunfangcha(intarr[],intn);//求均方差
voidsort(intr[],intn)
{
inti,j,lastExchangeIndex;
inttemp;
i=n;
while(i>0)
{
lastExchangeIndex=0;
for(j=1;j
{
if(r[j-1]>r[j])
{
temp=r[j];
r[j]=r[j-1];
r[j-1]=temp;
lastExchangeIndex=j;
}
}
i=lastExchangeIndex;
}
}
voidinsert1(intarr[],intn,intelement,intn0)//n是长度,n0是插入下标
{
inti=0;
for(i=n;i>n0;i--)
arr[i]=arr[i-1];
arr[n0]=element;
}
voidinsert2(intarr[],intelement,intn)//n是数组的长度,因为有插入函数,所以数组长度定义时候要大些
{
inti,j;
for(i=0;i { if((arr[i]==element)&&(arr[i+1]! =element)) { for(j=n;j>i+1;j--) arr[j]=arr[j-1]; arr[i+1]=element; break; } if(((arr[i] { for(j=n;j>i+1;j--) arr[j]=arr[j-1]; arr[i+1]=element; } if(element>arr[n-1]) arr[n]=element; } } voidreverse(intarr[],inta,intb) { inti,t; intj=b; for(i=a;i { t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } voidzuoxuan(intarr[],intn,intk) { reverse(arr,0,k-1); reverse(arr,k,n-1); reverse(arr,0,n-1); } voidyouxuan(intarr[],intn,intk) { zuoxuan(arr,n,n-k); } voidoutput(intarr[],intn) { inti; for(i=0;i printf("%2d\t",arr[i]); printf("\n"); } voidjiaohuanpaixu(intarr[],intn) { inttemp; inti,j; for(i=0;i for(j=i+1;j if(arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } voiddelect1(intarr[],intn,intn0)//注意数组长度的变化,n0是下标,n是数组长度 { inti; for(i=n0;i arr[i]=arr[i+1]; } voiddelect2(intarr[],intn,intn0) { inti; for(i=0;i { if(arr[i]==n0) delect1(arr,n,i); } } voiddelect3(intarr[],inta,intb,intn) { inti; for(i=a;i arr[i]=arr[i+b-a+1]; } intjudge1(intarr[],intn)//判断是否是升序,并输出是否升序,其中变量n是记录数组的长度 { inti,flag; { for(i=0,flag=0;i if(arr[i]>arr[i+1]) break; } if(flag==n-1) printf("数组是升序排列,可以执行二分查找,有序数列中插入等操作\n"); if(flag printf("数组不是升序排列,不可以进行二分查找,有序数列中插入等操作\n"); returnflag; } intjudge2(intarr[],intn)//判断是否是降序排列 { inti,flag; { for(i=0,flag=0;i if(arr[i] break; } if(flag==n-1) printf("数组是降序排列,可以执行二分查找,有序数列中插入等操作\n"); if(flag printf("数组不是降序排列,不可以进行二分查找,有序数列中插入等操作\n"); returnflag; } voidjudge3(intarr[],intn)//判断数组元素是否都相等 { inti,flag; { for(i=0,flag=0;i if(arr[i]! =arr[i+1]) break; } if(flag==n-1) printf("数组元素全相等\n"); if(flag printf("数组元素不全相等\n"); } doubleaver(intarr[],intn)//求平均数,返回平均数 { inti,sum=0; doubleaver=0; for(i=0;i { sum+=arr[i]; } aver=((double)sum)/n; returnaver; } intMax(intarr[],intn)//求最大值 { inti,max_=arr[0]; for(i=0;i { if(arr[i]>max_) max_=arr[i]; } returnmax_; } intMin(intarr[],intn)//求最小值 { inti,min_=arr[0]; for(i=0;i { if(arr[i] min_=arr[i]; } returnmin_; } doublefangcha(intarr[],intn)//求方差 { doubleaverage=aver(arr,n); doublefangcha_=0; inti; for(i=0;i { fangcha_+=(arr[i]-average)*(arr[i]-average); } fangcha_=fangcha_/n; returnfangcha_; } doublejunfangcha(intarr[],intn)//求均方差 { doublejunfangcha_; junfangcha_=pow(fangcha(arr,n),0.5); returnjunfangcha_; } voidxuanze_paixu(intarr[],intn)//选择排序 { inti,j,temp,min; for(i=0;i { min=i; for(j=i+1;j if(arr[min]>arr[j]) min=j; if(min! =i) { temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; } } } voidputongchazhao(intarr[],intn,intn0) { inti; for(i=0;i { if(arr[i]==n0) break; } if(i printf("找到元素,下标为%d\n",i); if(i==n) { printf("未找到元素\n"); } } voiderfenchazhao(intarr[],intk,intn) { intlow=0,high=n-1; intmid; while(low<=high) { mid=(low+high)/2; if(k>arr[mid]) low=mid+1; elseif(k high=mid-1; elsebreak; } if(low<=high)printf("找到元素,下标为: %d\n",mid); elseprintf("未找到\n"); } voidjosephus(intdie[],intn,intm,ints) { inti,n0; intsum; for(i=0;i die[i]=0; i=sum=0; for(n0=s;sum { if(die[n0]==0) i++; if(i==m) { i=0; sum++; die[n0]=sum; } } } voidgoldbach(intn) { inti,i0,i_,i_0; for(i=3;i<=(n/2);i+=2) { for(i0=2;i0<=sqrt(i)+1;i0++) { if(i%i0==0) break;//验证是否为素数 elseif(i0>sqrt(i)) { i_=n-i; for(i_0=2;i_0<=sqrt(i);i_0++); { if(i_%i_0==0) break; if(i_0>sqrt(i)) printf("n=%d+%d\n",i,i_); } } } } } voidshujutianchong1(intarr[],intn,inta,intb) { inti; srand(time(NULL)); for(i=0;i arr[i]=rand()%(b-a)+a; } voidshujutianchong2(intarr[],intn)//从键盘输入 { inti; printf("请输入%d个数填充数组: ",n); for(i=0;i scanf("%d",&arr[i]); } voidshujutianchong3(intarr[],intn,intn0)//整个数组填同一个值 { inti; for(i=0;i arr[i]=n0; } voidshujutianchong4(intarr[],inta,intb,intn)//等差数列填充数组 { intc=(b-a)/(n-1),i; for(i=0;i arr[i]=a+c*i; } main() { intarr[100]={0}; inti=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__; inti_,m,n,s; intdie[100]={0}; inti0,j,k0,count=0; inta1[100]; intelement; 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) { case0: ;break; case1: { printf("请输入数组大小: "); scanf("%d",&n); }break; case2: { while(i1) { printf("*****生成样本数据*****\n"); printf("*****1.用指定范围的随机数填充数组*****\n"); printf("*****2.键盘输入*****\n"); printf("*****3.整个数组填同一个数*****\n"); printf("*****4.用等差数列填充数组*****\n"); printf("*****0.退出*****\n"); scanf("%d",&i1); switch(i1) { case1: { printf("请输入随机数的下限和上限: "); scanf("%d%d",&a,&b); shujutianchong1(arr,n,a,b); }break; case2: shujutianchong2(arr,n);break; case3: { printf("请输入想填充的数据: "); scanf("%d",&n0); shujutianchong3(arr,n,n0); }break; case4: { printf("请输入等差数列的起始项和最后一项: "); scanf("%d%d",&a0,&b0); shujutianchong4(arr,a0,b0,n); } break; case0: ;break; default: printf("请重新输入"); } } }break; case3: output(arr,n);break; case4: {while(i2) { printf("*****删除*****\n"); printf("*****1.删除指定下标元素*****\n"); printf("*****2.删除指定值的元素*****\n"); printf("*****3.删除指定下标区间的元素*****\n"); printf("*****0.退出*****\n"); scanf("%d",&i2); switch(i2) { case1: { printf("请输入想删除的元素对应下标: "); scanf("%d",&n0); delect1(arr,n,n0); n=n-1; }break; case2: { printf("请输入想删除的元素: "); scanf("%d",&n0); delect2(arr,n,n0); n=n-1; }break; case3: { printf("请输入删除的区间: "); scanf("%d%d",&a,&b); delect3(arr,a,b,n); n=n-(b-a)-1; }break; case0: ;break; default: printf("请重新输入: "); } } } break; case5: { while(i3) { printf("*****插入*****\n"); printf("*****1.指定位置插入*****\n"); printf("*****2.有序数列中插入*****\n"); printf("*****0.退出*****\n"); scanf("%d",&i3); switch(i3) { case1: { printf("请输入插入位置和插入值: "); scanf("%d%d",&n0,&element); insert1(arr,n,element,n0); n=n+1; } break; case2: { if((judge1(arr,n) break; printf("请输入插入的值: "); scanf("%d",&element); insert2(arr,element,n); n=n+1; }break; case0: ;break; default: printf("请重新输入: "); } } }break; case6: { while(i4) { printf("*****统计*****\n"); printf("*****1.最大值*****\n"); printf("*****2.最小值*****\n"); printf("*****3.平均值*****\n"); printf("*****4.方差和均方差*****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数组 作业