标题:一组有序数列插入一个数还是有序数列问题
只看楼主
hdshdzh
Rank: 2
等 级:论坛游民
帖 子:77
专家分:11
注 册:2010-5-13
结帖率:92.31%
已结贴  问题点数:10 回复次数:5 
一组有序数列插入一个数还是有序数列问题
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int number,i,j;
printf("original arry is:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("input new number:");
scanf("%d",&number);
for(i=0;i<10;i++)
if(number<a[i]) break;
for(j=9;j>i;j--)
a[j+1]=a[j];
a[i]=number;
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
插入一个数后,没有达到理想,运行是插入20时,输出的结果是20后面的第一个数变了,。。。。20 40 40 100。这样的数,谁能帮我改进这个程序
搜索更多相关主题的帖子: original number 
2010-06-04 17:27
a8979595
Rank: 2
等 级:论坛游民
帖 子:34
专家分:54
注 册:2010-5-31
得分:0 
for(j=9;j>i;j--)
这个判断句好像不对吧,因为你把输入的数插入数组也就意味着后面所有的数都要往后移一位for(j=12-i;j>i,j--)(很可能不对,我就是这样想的不要砸砖就行了)
2010-06-04 18:13
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:8 
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int number,i,j;
printf("original arry is:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("input new number:");
scanf("%d",&number);
for(i=0;i<10;i++)
if(number<a[i]) break;
for(j=9;j>i-1;j--)    改过
a[j+1]=a[j];
a[i]=number;
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
2010-06-04 18:27
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:2 
回复 2楼 a8979595
你的就更不对了,楼主只是少移了一个数,i=7,j=12-i=5,肯定小于i=7啊,那for就不会运行啊
2010-06-04 18:31
kettle99
Rank: 2
等 级:论坛游民
帖 子:52
专家分:54
注 册:2010-5-25
得分:0 
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int number,i,j;
printf("original arry is:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("input new number:");
scanf("%d",&number);
for(i=0;i<10;i++)
if(number<a[i]) break;
for(j=9;j>i-1;j--)
a[j+1]=a[j];
a[i]=number;
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
2010-06-04 22:45
aiyinsitan
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:183
专家分:177
注 册:2010-4-22
得分:0 
#include "stdio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int number,i,j;
printf("original arry is:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("input new number:");
scanf("%d",&number);
for(i=0;i<10;i++)
if(number<a[i]) break;
for(j=10;j>i;j--)
a[j]=a[j-1];
a[i]=number;
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
2010-06-05 09:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309240-1-1.html




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

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