用一个5个元素的数组实现数据的插入 (对没有顺序的数组先冒泡排序,然后再插入, 插入时采用移动位置操作)
劳烦哪位大神帮忙更改一下,当插入的数是数组里面的最大数时,总是实现不了。#include<stdio.h>voidmain(){intnum[6];intx,i,j,te...
劳烦哪位大神帮忙更改一下,当插入的数是数组里面的最大数时,总是实现不了。
#include<stdio.h>
void main()
{
int num[6];
int x,i,j,temp;
printf("请输入5个数:");
for(i=1;i<6;i++)
{
scanf("%d",&num[i]);
}
for(i=1;i<6;i++)
{
for(j=1;j<6-i;j++)
{
if(num[j]>num[j+1])
{
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
printf("请输入要插入的元素:");
scanf("%d",&x);
num[0]=x;
for(i=1;i>6;i++)
{
if(x<num[i])
break;
}
if(i!=1)
{
for(j=0;j<=i;j++)
{
num[j]=num[j+1];
}
num[i]=x;
}
printf("插入元素后的排序为:");
for(i=0;i<6;i++)
printf("%d ",num[i]);
printf("\n");
} 展开
#include<stdio.h>
void main()
{
int num[6];
int x,i,j,temp;
printf("请输入5个数:");
for(i=1;i<6;i++)
{
scanf("%d",&num[i]);
}
for(i=1;i<6;i++)
{
for(j=1;j<6-i;j++)
{
if(num[j]>num[j+1])
{
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
printf("请输入要插入的元素:");
scanf("%d",&x);
num[0]=x;
for(i=1;i>6;i++)
{
if(x<num[i])
break;
}
if(i!=1)
{
for(j=0;j<=i;j++)
{
num[j]=num[j+1];
}
num[i]=x;
}
printf("插入元素后的排序为:");
for(i=0;i<6;i++)
printf("%d ",num[i]);
printf("\n");
} 展开
1个回答
展开全部
你的算法有错误、、插入的时候不能插入最大数也不能插入相同的数,,以下是我的代码,已经编译运行成功了的。。是在你的基础上修改的。。你可以参考一下。。。
#include<stdio.h>
void main()
{
int num[10];
int i,j,temp;
int flag=0;
printf("请输入5个数:");
for(i=1;i<6;i++)
{
scanf("%d",&num[i]);
}
for(i=1;i<6;i++)
{
for(j=1;j<6-i;j++)
{
if(num[j]>num[j+1])
{
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
printf("排序后的数组为:");
for(i=1;i<6;i++)
{
printf("%d ",num[i]);
}
printf("\n请输入要插入的元素:");
scanf("%d",&temp);
if(temp>=num[5]) //大于最后一个元素,直接插入数组最后一位
{
num[6]=temp;
}
else if(temp<=num[1]) //小于数组第一个元素,直接插入数组最前
{
num[0]=temp;
flag++;
}
else
{
for(i=5;i>1;i--)
{
if(temp<num[i] && temp>=num[i-1])
{
for(j=5;j>=i;j--)
{
num[j+1]=num[j];
}
num[i]=temp;
break;
}
}
}
printf("插入元素后的排序为:");
if(flag==1)
{
for(i=0;i<6;i++)
{
printf("%d ",num[i]);
}
}
if(flag==0)
{
for(i=1;i<7;i++)
{
printf("%d ",num[i]);
}
}
printf("\n");
}
#include<stdio.h>
void main()
{
int num[10];
int i,j,temp;
int flag=0;
printf("请输入5个数:");
for(i=1;i<6;i++)
{
scanf("%d",&num[i]);
}
for(i=1;i<6;i++)
{
for(j=1;j<6-i;j++)
{
if(num[j]>num[j+1])
{
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
printf("排序后的数组为:");
for(i=1;i<6;i++)
{
printf("%d ",num[i]);
}
printf("\n请输入要插入的元素:");
scanf("%d",&temp);
if(temp>=num[5]) //大于最后一个元素,直接插入数组最后一位
{
num[6]=temp;
}
else if(temp<=num[1]) //小于数组第一个元素,直接插入数组最前
{
num[0]=temp;
flag++;
}
else
{
for(i=5;i>1;i--)
{
if(temp<num[i] && temp>=num[i-1])
{
for(j=5;j>=i;j--)
{
num[j+1]=num[j];
}
num[i]=temp;
break;
}
}
}
printf("插入元素后的排序为:");
if(flag==1)
{
for(i=0;i<6;i++)
{
printf("%d ",num[i]);
}
}
if(flag==0)
{
for(i=1;i<7;i++)
{
printf("%d ",num[i]);
}
}
printf("\n");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询