我写的程序有错误,就是将一个数插入到一个有序的数组中,并保持数组的有序性。

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:52:00
#include <stdio.h>
#include <stdlib.h>
#define N 10
void main()
{
int i,j;
int n;
int bb[N]={11,21,31,41,51,61,71,79,81,95};
system("cls");
printf("\n Input n \n");
scanf("%d",&n);
printf("\nn=%d",n);
printf("\n******original list*******\n");
for(i=0;i<N;i++)
printf("%4d",bb[i]);
for(i=0;i<N;i++)
{
if(n<=bb[i])
{
for(j=N;j>i;j--)
bb[j]=bb[j-1];
bb[j]=n;
break;
}
}
if(i==N)
bb[i]=n;
printf("\n******new list******\n");
for(i=0;i<N;i++)
printf("%4d",bb[i]);
}

我说的不对?搞笑,自己把我改的程序运行一遍再说
另外你说的只要语句大一行,就要加{} ,没看见人家已经加好了么,还费什么话?
自己运行程序再说话,以为自己脑子是编译器?不给别人改也就算了,还废话

你的错误就是数组有10个元素,还要插入一个元素,那么数组就应该定义为11个,而你却是10个,所以造成了最后一个数出不来
改成11就好了
程序如下
#include <stdio.h>
#include <stdlib.h>
#define N 11
void main()
{
int i,j;
int n;
int bb[N]={11,21,31,41,51,61,71,79,81,95};
system("cls");
printf("\n Input n \n");
scanf("%d",&n);
printf("\nn=%d",n);
printf("\n******original list*******\n");
for(i=0;i<N-1;i++)
printf("%4d",bb[i]);
for(i=0;i<N;i++)
{
if(n<=bb[i])
{
for(j=N;j>i;j--)
bb[j]=bb[j-1];
bb[j]=n;
break;
}
}
if(i==N)
bb[i]=n;
printf("\n******new list******\n");
for(i=0;i<N;i++)
printf("%4d",bb[i]);
}

错误也太多了。不下于10处。

说几处重要的吧: