C++初学者问题!!有一个已经从小到大排好序的整数数组需要排序

有一个已经从小到大排好序的整数数组:a[30]={6,9,12,15,19,23,45,67,89,98},现输入一个整数x,要求按原来的升序规律将它插入到数组中。#in... 有一个已经从小到大排好序的整数数组:a[30]={6,9,12,15,19,23,45,67,89,98},现输入一个整数 x ,要求按原来的升序规律将它插入到数组中。
#include<iostream>
using namespace std;
void main()
{ int a[30]={6,9,12,15,19,23,45,67,89,98};
int x,max;
cout<<"请一个x的整数:"<<endl;
cin>>x;
for(int i=0;i<30;i++)
{ if(a[i]>=x)
cout<<x;
else
cout<<a[i];
}
}

求解释~~我运行出来 为什么不行~~~
展开
 我来答
雨王的雪鹰
推荐于2018-04-12 · TA获得超过568个赞
知道答主
回答量:45
采纳率:0%
帮助的人:20.6万
展开全部
你是要把x插入到数组,并且按照原有顺序,现在有一个数x,你应该先判断x应该插在哪?语句应为
do
{
int i=1;
if(a[i]<=x)
i++;
}while(a[i]>=x);//先找出x的位置
for(int j=30;j>=i;j--)
{
a[j+1]=a[j];
}//x后面的数整体后移
a[i]=x;//将x插入
ok啦!!!!!!!!!!!!!
海越星空
2011-12-06 · 超过22用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:69.6万
展开全部
正确代码:
#include<iostream>
using namespace std;
void main()
{ int a[30]={6,9,12,15,19,23,45,67,89,98};
int x;
cout<<"原数组列表为:"<<endl;
for(int m=0;m<10;m++)
cout<<a[m]<<"\t";
cout<<endl;
cout<<"请一个x的整数:"<<endl;
cin>>x;
a[10]=x;
int temp;
for(int i=0;i<10;i++)
{for(int j=i+1;j<=10;j++)
if(a[i]>a[j])
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
cout<<endl;
cout<<"最新数组排列:"<<endl;
for(int m=0;m<=10;m++)
cout<<a[m]<<"\t";

}

。。。。。。。。。。。。。。。。。。。
你的代码
for(int i=0;i<30;i++)
{ if(a[i]>=x)
cout<<x;
else
cout<<a[i];
}1.你的if判断:只要数组a[30]中的值大于x就输出x值,那么如果x值小的话(比如0)肯定输出好几个x的值,这与你的目的不相干。2.你的目的是将输入的x值插入数组a[30],可是 你并没有那样做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9308069
2011-12-06 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:2055万
展开全部
C++非常灵活和高级,这道题也有很多种做法。效率最高的应该是构建查找树,这样插入速度最快。但我给个最简单的方法,在小数量级上够用;

#include<iostream>
#include<list>
using namespace std;
int main()
{
int a[]= {6,9,12,15,19,23,45,67,89,98};
list<int> l(a,a+sizeof(a)/sizeof(int));
cout<<"已知数据: ";
for(list<int>::iterator it=l.begin(); it!=l.end(); ++it)
cout<<*it<<" ";
int N,x;
cout<<endl<<"输入插入数量N:";
cin>>N;
for(int i=0; i<N; i++) {
cin>>x;
l.push_back(x);
}
l.sort();
for(list<int>::iterator it=l.begin(); it!=l.end(); ++it)
cout<<*it<<" ";
return 0;
}
=============
已知数据: 6 9 12 15 19 23 45 67 89 98
输入插入数量N:5
11 22 33 44 55
6 9 11 12 15 19 22 23 33 44 45 55 67 89 98
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昔英耀0L
2011-12-06 · TA获得超过289个赞
知道答主
回答量:111
采纳率:0%
帮助的人:71.2万
展开全部
数组下标越界了。。数组里没有30个元素。。所以i<30应改为i<10...
追问
但是题目中数组是a[30]啊??
追答
那只是数组开了30个整形变量的空间。。但是数组里面的元素只有10个。后面的20个都默认为0.
只访问前10个变量就可以了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hhcho
2011-12-06 · 超过21用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:66.5万
展开全部
你这是显示出来一列数字吧 本身的a[] 没有变
你运行出什麼了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式