主题:C语言
2481236540
[专家分:0] 发布于 2011-11-17 21:39:00
麻烦帮我找出错误,谢了
Description
已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
Input
第一行,原始数列。第二行,需要插入的数字。
Output
排序后的数列
Sample Input
#include<stdio.h>
main()
{
int b,i,j,a[10];
for(i=0;i<0;i++)
scanf("%d",&a[i]);
scanf("%d",&b);
for(i=0;i<9;i++)
{
if(b>=a[i]&&b<=a[i+1])
{
a[i+1]=b;
break;
}
}
for(j=0;j<10;j++)
printf("%d",a[j]);
return 0;
}
回复列表 (共2个回复)
沙发
羽翼灵动 [专家分:80] 发布于 2011-11-18 19:19:00
#include<stdio.h>
main()
{
int b,i,j,a[10];
for(i=0;i<0;i++) //for(i=0;i<9;i++)
scanf("%d",&a[i]);
scanf("%d",&b);
for(i=0;i<9;i++) //插入部分有问题,插入后应该有10个元素了。应该i<10,其
{ 次这段代码有问题,比如原来是1 2 3 4 5 6 7 9 10,你
if(b>=a[i]&&b<=a[i+1]) 想插入数字8,即b==8 if(b>=a[6] && b <=a[7])
{ a[7]=b=8;break; 结束循环,9被“删除” a[i+1]=b;
break;
}
}
for(j=0;j<10;j++)
printf("%d",a[j]);
return 0;
}
自己写的代码,看一下吧:
#include<stdio.h>
int main()
{
int b,i,j,a[10];
for(i=0; i<9; i++) //输入9个元素
scanf("%d",&a[i]);
scanf("%d",&b);
for(i=8; i>=0; i--)//从数组走后一个元素开始判断
{
if(b<=a[i])
{
a[i+1]=a[i];
if(i==0) //若插入的位置是第一个数是用到这句
a[i]=b;
}
else
{
a[i+1]=b;
break;
}
}
for(j=0; j<10; j++)
printf("%d ",a[j]);
return 0;
}
板凳
lgjjeff [专家分:30] 发布于 2011-11-20 21:00:00
根据你的代码改了下,你的代码交换数的原则就错了。
#include<stdio.h>
int main(void)
{
int b,i,j,a[10];
printf("请输入9个从小到大排列的整数:");
for(i=0;i<9;i++)
scanf("%d",&a[i]);
printf("\n你输入的数为:\n");
for(i=0;i<9;i++)
printf("%d\t",a[i]);
printf("\n请输入要插入的数:");
scanf("%d",&b);
for(i=0;i<9;i++)
{
if(b>=a[i]&&b<=a[i+1])
{
for(j=10;j>i;--j)
a[j]=a[j-1];
a[i+1]=b;
break;
}
}
printf("重新排好序的数为:\n");
for(j=0;j<10;j++)
printf("%d\t",a[j]);
printf("\n");
getchar();
getchar();
return 0;
}
我来回复