#define SIZE 3
void arr(int former[],int n,int now[],int a)
{
int m,t;
int i=0;
while(a>former[i])
i++;
if(a<former[i])
a=now[i+1];
t=n+1;
for(m=n;m>i+1;m--,t--)
former[n-1]=now[n];
}
void main()
{
int a,i;
int former[SIZE];
int now[SIZE+1];
scanf("%d",&a);
for(i=0;i<SIZE;i++)
scanf("%d",&former[i]);
arr(former,SIZE,now,a);
for(i=0;i<=SIZE;i++)
printf("%d",now[i]);
}
希望帮我找一下错误。谢谢!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define SIZE 3
void arr(int former[],int n,int a)
{
int i=0,j;
while(a>former[i])
i++; //用二分法查找更快
for(j=i;j<n;j++)
former[j+1]=former[j]; //往后延一位
former[i]=a;
}
void main()
{
int a,i;
int former[SIZE+1];
scanf("%d",&a);
for(i=0;i<SIZE;i++)
scanf("%d",&former[i]);
arr(former,SIZE,a);
for(i=0;i<=SIZE;i++)
printf("%d",former[i]);
getch();
}
希望帮我找一下错误。谢谢!
----------------解决方案--------------------------------------------------------
for(j=i;j<n;j++)
会被覆盖阿
for(j=n;j>i ; j --)
former[j+1]=former[j]; 我觉得应该是这样 呵呵
----------------解决方案--------------------------------------------------------
嗯,是啊!不好意思。而且应该从j=n-1开始,到j〉=i
[此贴子已经被作者于2006-11-30 14:03:20编辑过]
----------------解决方案--------------------------------------------------------
好像还是RUN不出来。你用的是Microsoft Visual C++ 6.0吗?我用的是这个。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define SIZE 3
void arr(int former[],int n,int a)
{
int i=0,j;
while(a>former[i])
i++;
for(j=n;j>=i ; j --) //*这里一点点变化*//
former[j+1]=former[j];
former[i]=a;
}
void main()
{
int a,i;
int former[SIZE+1];
scanf("%d",&a);
for(i=0;i<SIZE;i++)
scanf("%d",&former[i]);
arr(former,SIZE,a);
for(i=0;i<=SIZE;i++)
printf(" %d",former[i]);
getch();
}
[此贴子已经被作者于2006-11-30 19:54:25编辑过]
----------------解决方案--------------------------------------------------------
我做了简单的修改,我运行了好使的,你可以试试:
#include <stdio.h>
#define SIZE 3
void arr(int former[],int now[],int a)
{
int m;
int i=0;
for(i=0,m=0;a > former[i] && i<SIZE;i++,m++)
now[m] = former[i];
if(i == SIZE)
now[m] = a;
else {
now[m] = a;
while(i<SIZE && m<SIZE+1)
now[++m] = former[i++] ;
}
}
void main()
{
int a,i;
int former[SIZE];
int now[SIZE+1];
printf("请输入一个数:");
scanf("%d",&a);
printf("请输入三个数:");
for(i=0;i<SIZE;i++)
scanf("%d",&former[i]);
printf("\n");
arr(former,now,a);
for(i=0;i<=SIZE;i++)
printf("%d ",now[i]);
}
----------------解决方案--------------------------------------------------------
建议你换一个编译器,可以试一试CFREE4.0,我现在用CFREE4.0挺好用的而且运行起来也很快,
http://www.programarts.com/cfree_ch/download.htm在这个网站可以下到的
----------------解决方案--------------------------------------------------------
谢谢上面的大哥
----------------解决方案--------------------------------------------------------
七楼的兄弟阿:我记得数组是不能用变量的阿。
----------------解决方案--------------------------------------------------------