科大C语言数组大作业.docx

上传人:b****5 文档编号:28312570 上传时间:2023-07-10 格式:DOCX 页数:28 大小:19.28KB
下载 相关 举报
科大C语言数组大作业.docx_第1页
第1页 / 共28页
科大C语言数组大作业.docx_第2页
第2页 / 共28页
科大C语言数组大作业.docx_第3页
第3页 / 共28页
科大C语言数组大作业.docx_第4页
第4页 / 共28页
科大C语言数组大作业.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

科大C语言数组大作业.docx

《科大C语言数组大作业.docx》由会员分享,可在线阅读,更多相关《科大C语言数组大作业.docx(28页珍藏版)》请在冰豆网上搜索。

科大C语言数组大作业.docx

科大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]element))||((arr[i]>element)&&(arr[i+1]

{

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.方差和均方差*****

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1