C语言向有序数组中插入一个数使该数组仍保持有序
创新互联公司一直在为企业提供服务,多年的磨炼,使我们在创意设计,全网整合营销推广到技术研发拥有了开发经验。我们擅长倾听企业需求,挖掘用户对产品需求服务价值,为企业制作有用的创意设计体验。核心团队拥有超过10年以上行业经验,涵盖创意,策化,开发等专业领域,公司涉及领域有基础互联网服务成都服务器托管、成都app开发、手机移动建站、网页设计、网络整合营销。
#includestdio.h
int main()
{int n,i,j,t,k;printf("您喜欢的数组长度:\n");
scanf("%d",n);
int a[n],b[n+1];
printf("您喜欢的有序数组:\n");
for(i=0;in;i++)
{scanf("%d",a[i]);}
printf("请输入想插入的数字\n");
scanf("%d",k);
for(i=0;i=n;i++)
{if(i==n) b[i]=k;else b[i]=0;}
for(i=0; in; i++)
{for(j=0; jn; j++)
{b[j]=a[i++];}}
for(j=0;jn;j++)
{for(i=0;in-j;i++)
{if(b[i]b[i+1])
{t=b[i];b[i]=b[i+1];b[i+1]=t;}}}
for(j=0; jn+1; j++)
{printf("%d ",b[j]);}}
void insert( int a[ ], int n, int number )
{
for (int i=0;in;i++)
{
if (a[i]number)
continue;
else
{
for (int j=n;ji;j--)
{
a[j]=a[j-1];
}
a[i]=number;
break;
}
}
if (i==n)
a[i]=number;
}
#include
void
main()
{
int
s[10]={1,2,3,4,5,6,7,8,9};
int
n;
printf("请输入需要插入到数组中的位置:");
scanf("%d",n);
//比如说插入到第三个位置,即s[2]中,则输入3
int
num;
printf("请输入需要插入的数:");
scanf("%d",num);
for
(int
i=10-1;i=n;i--)
{
s[i]=s[i-1];
}
s[i]=num;
printf("插入之后的数组:\n");
for
(i=0;i10;i++)
{
printf("%d
",s[i]);
}
printf("\n");
}
#includestdio.h
int main()
{ int a[4]= {7,9}; //数组不越界,就不会出现“怪毛病”
int flag=0,i,n=2;
a[flag]=8;
for(i=0; i=n; i++) //若i==2,a[2]就越界了
{ if(a[flag]a[i]) //i==1时成立
{ flag=i; //flag=1
break;
}
}
for(i=n-1; i=flag; i--) //i=1;i=1
{ a[i]=a[i+1]; //下标越界了
}
for(i=0; i=n+1; i++) //i从0~3,输出4个数(原数组只有2个元素)?
{ printf("%d\n",a[i]);
}
}
====================
#includestdio.h
int main()
{ int a[4]= {0,7,9};
int flag=0,i,n=2;
a[flag]=8;
for(i=1; i=n; i++)
{ if(a[flag]a[i])
{ flag=i;
break;
}
}
for(i=n; i=flag; i--)
{ a[i+1]=a[i];
}
a[i+1]=a[0];
for(i=1; i=n+1; i++)
{ printf("%d\n",a[i]);
}
}
程序1:这个是输入10个数 先排序 再插入一个数 再排序 数组大小你可以自己更改 #include stdio.h void main() { int i,j,m,temp,a[11]; for(i=0;i10;i++) scanf("%d",a[i]); for(i=0;i10;i++) for(j=i+1;j10;j++) if(a[i]a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0;i10;i++) printf("%d ",a[i]); scanf("%d",m); for(i=0;i10;i++) if(a[i]m) { temp=a[i]; a[i]=m; m=temp; } a[10]=m; for(i=0;i11;i++) printf("%d ",a[i]); printf("\n"); } 程序2:如果题中已给排好序的数组 不必自己输入的话 #include stdio.h void main() {int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1, temp2,number,end,i,j; printf("array a:\n"); for (i=0;i10;i++) printf("%5d",a[i]); printf("\n"); printf("insert date:"); scanf("%d",number); end=a[9]; if(numberend) a[10]=number; else {for(i=0;i10;i++) {if(a[i]number) {temp1=a[i]; a[i]=number; for(j=i+1;j11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } printf("now,array a:\n"); for(i=0;i11;i++) printf("%d ",a[i]); }
已改,看注释
#includestdio.h
#define MAXNUMBER 30
void main()
{
int n=5;
int array[MAXNUMBER]={12,5,7,6,32};
int value;
int location;
int i;
printf("修改前的数组:\n");
for (i=0;in;i++)
printf("%5d",array[i]);
//-------------数组的插入操作------------------
printf("\n 请输入要插入的元素值:");
scanf ("%d",value);
printf("请输入要插入的位置(1..%d): ",n+1);
scanf("%d",location);
if((location1)||(locationn+1))
{
printf("你输入的位置超出范围!!\n");
return;
}
if(n==MAXNUMBER)
{
printf("数组已达到最大长度,再插入将超过超出范围!!\n");
return;
}
n++;
for (i=n - 1;ilocation-1;i--) // 应该改成ilocation
array[i]=array[i-1];
array[location-1]=value;
printf("插入后的数组为:\n");
for(i=0;in;i++)
printf("%5d",array[i]);
}