关于编程的一个问题~求指导
发布网友
发布时间:2023-10-29 18:25
我来回答
共2个回答
热心网友
时间:2024-03-17 10:03
你是想从小到大排列呢?还是从大到小排列呢?
int i,j,n,x,temp,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
getchar();
printf("输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
getchar();
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(i=0; i<n; i++)
printf("%d\t", a[i]);
printf("\n");
printf("输入要插入的整数:");
scanf("%d",&x);
getchar();
for(i=0;i<n;i++)
{
if(x<a[i])
{
j=n-1;
while(j>=i)
{
a[j+1]=a[j];
j--;
}
a[i]=x;
break;
}
}
if(i==n)
a[n]=x;
for(i=0;i<n+1;i++)
printf("%d",a[i]);
putchar('\n');
如果是从小到大排列改成这样了. 如果是从大到小排列, 你自己把之前的队列排序改改, 还有插入时候的逻辑改改. 出现当前错误原因:if后面的{}忘记, while里是个死循环, 应该是j--;
热心网友
时间:2024-03-17 10:06
//程序稍做修改
void main()
{
int i,j,n,x,k,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("输入要插入的整数:");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(x>a[i])
{
j=n-i-1;
continue;
}
for( k=n;j>=0;k--)
{
a[k]=a[k-1];
j--;
}
a[i]=x;
break;
}
if(i==n)
a[n]=x;
for(i=0;i<n+1;i++)
printf("%d",a[i]);
putchar('\n');
}
这个程序的输出结果可以保持你原先的输入顺序