| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4073 人关注过本帖
标题:[求助] 把一个数插入一个已经从小到大排列好的数列中
只看楼主 加入收藏
kailun
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-11-21
收藏
 问题点数:0 回复次数:13 
[求助] 把一个数插入一个已经从小到大排列好的数列中
#include <stdio.h>
#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]);
}
希望帮我找一下错误。谢谢!
搜索更多相关主题的帖子: 从小到大 排列 
2006-11-29 23:34
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
以下是引用kailun在2006-11-29 23:34:00的发言:
#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();
}
希望帮我找一下错误。谢谢!


只是喜欢编程而已!
2006-11-30 12:15
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 
for(j=i;j<n;j++)

会被覆盖阿
for(j=n;j>i ; j --)
former[j+1]=former[j]; 我觉得应该是这样 呵呵

fighting!from now on!
2006-11-30 12:22
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
嗯,是啊!不好意思。而且应该从j=n-1开始,到j〉=i

[此贴子已经被作者于2006-11-30 14:03:20编辑过]



只是喜欢编程而已!
2006-11-30 14:00
kailun
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-11-21
收藏
得分:0 
回复:(Welton)嗯,是啊!不好意思。而且应该从j=n-...

好像还是RUN不出来。你用的是Microsoft Visual C++ 6.0吗?我用的是这个。


生活需要美丽,美丽不是人生。
2006-11-30 17:15
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
得分: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编辑过]


2006-11-30 19:48
adukakaxi
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-10-18
收藏
得分:0 

我做了简单的修改,我运行了好使的,你可以试试:
#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]);
}


做最好的自己,编最好的程序!
2006-11-30 20:47
adukakaxi
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-10-18
收藏
得分:0 
建议你换一个编译器,可以试一试CFREE4.0,我现在用CFREE4.0挺好用的而且运行起来也很快,
http://www.programarts.com/cfree_ch/download.htm在这个网站可以下到的

做最好的自己,编最好的程序!
2006-11-30 20:52
kailun
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-11-21
收藏
得分:0 

谢谢上面的大哥


生活需要美丽,美丽不是人生。
2006-12-04 18:20
lxx2844
Rank: 1
等 级:新手上路
威 望:2
帖 子:129
专家分:0
注 册:2006-12-5
收藏
得分:0 

七楼的兄弟阿:我记得数组是不能用变量的阿。


www./ Bst Love java!
2006-12-05 13:12
快速回复:[求助] 把一个数插入一个已经从小到大排列好的数列中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041635 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved