| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1480 人关注过本帖
标题:[求助]新手求助(在数组中插入一个数,其后的数顺延)
只看楼主 加入收藏
devilorangel
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-11-20
收藏
 问题点数:0 回复次数:13 
[求助]新手求助(在数组中插入一个数,其后的数顺延)
在一个已排列的数组中插入一个数,其后的数顺延。我知道程序错误的地方,却不知怎么改正,望各位指点。
main()
{int a[11]={12,16,19,23,26,29,36,39,45,49,};
int i,j,num;
printf ("please input a number:\n");
scanf ("%d",&num);
for (i=0;i<11;i++)
{ if (a[i]<=num&&num<=a[i+1])
{ a[i+1]=num; (这里丢掉了原始数组中的a[i+1]值,不知怎么修改
for (j=9;j>=i+1;j--)
{ a[j+1]=a[j];
}
}
}
for (i=0;i<11;i++)
printf ("%5d\n",a[i]);
getch();
}

[此贴子已经被作者于2006-12-6 18:04:00编辑过]

搜索更多相关主题的帖子: 顺延 int 
2006-12-05 21:54
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
这样做不对吧.应该是

for(i=10;i>=0;i--)
{
if(a[i]>num)
{
a[i+1]=a[i];//往后移
}
else
{
break;
}
}
a[i]=num;

倚天照海花无数,流水高山心自知。
2006-12-05 22:00
devilorangel
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-11-20
收藏
得分:0 
好像不行啊,输入20,结果是20跑到最后,其他的没变。
2006-12-05 22:15
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 
for....... //多了,不要
k=i
for (j=9;j>=i+1;j--)
a[j+1]=a[j];
a[k]=num;

[此贴子已经被作者于2006-12-5 22:40:18编辑过]


菜鸟~~请多指教~~
2006-12-05 22:27
devilorangel
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-11-20
收藏
得分:0 
以下是引用senyee在2006-12-5 22:27:40的发言:
if (num>=a[i]&&num<=a[i+1])
{k=i
for (j=9;j>=i+1;j--)
a[j+1]=a[j];
a[k]=num;

我试过这种方法,行不通。

2006-12-05 22:35
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 

main()
{int a[11]={12,16,19,23,26,29,36,39,45,49,};
int i,j,num,k;
printf ("please input a number:\n");
scanf ("%d",&num);
for (i=0;i<11;i++)
{ if (a[i]<=num&&num<=a[i+1])
{ k=i+1;
for (j=10;j>i+1;j--)
a[j]=a[j-1];

a[k]=num;
}
}
for (i=0;i<11;i++)
printf ("%5d\n",a[i]);
getch();
}

[此贴子已经被作者于2006-12-5 22:46:39编辑过]


菜鸟~~请多指教~~
2006-12-05 22:42
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
for(i=9;i&gt;=0;i--)

倚天照海花无数,流水高山心自知。
2006-12-05 22:42
devilorangel
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-11-20
收藏
得分:0 
谢谢楼上两位,但是你们的方法还是行不通。
2006-12-06 09:03
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 
main()
{int a[11]={12,16,19,23,26,29,36,39,45,49,};
int i,j,num,k;
printf ("please input a number:\n");
scanf ("%d",&num);
for (i=0;i<11;i++)
{ if (a[i]<=num&&num<=a[i+1])
{ k=i+1;
for (j=10;j>i+1;j--)
a[j]=a[j-1];
a[k]=num;
break;
}
}
for (i=0;i<11;i++)
printf ("%5d\n",a[i]);
getch();
}

菜鸟~~请多指教~~
2006-12-06 15:30
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

#include <stdio.h>
#include <conio.h>
int main()
{int a[11]={12,16,19,23,26,29,36,39,45,49,};
int i,j,num,temp;
printf ("please input a number:");
scanf ("%d",&num);
for (i=0;i<11;i++)
{ if (a[i]<=num&&num<a[i+1])
{temp = i;
for (j=9;j>i+1;j--)
{ a[j+1]=a[j];
}

}
}
a[temp + 1] = num;
for (i=0;i<11;i++)
printf ("%-5d",a[i]);
getch();

return 0;
}


该学习了。。。
2006-12-06 16:54
快速回复:[求助]新手求助(在数组中插入一个数,其后的数顺延)
数据加载中...
 
   



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

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