2 lsjyzh575 Lsjyzh575 于 2016.03.22 20:07 提问

初学者关于输入任意数组进行冒泡排序

#include

using namespace std;
int main()
{
int a[10],t,i,j;
cin>>a[10];

for(i=0;i {
for(int j=i+1;j {
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}}
cout<<a[i]<<ends;
}

     return 0;
 }

 为什么编译之后会显示停止工作 我觉得是cin>>a[10]那儿错了  但不知道怎么改

4个回答

Dennis_Zip
Dennis_Zip   2016.03.22 20:50
已采纳

数组a空间大小为10,分别为a[0],a[1],a[2]......a[9], cin>>a[10] 这句的意思是从控制台输入一个值给a[10], 这就造成内存的非法访问了,因为a[10]不属于数组a。
刚学的话建议从基本语法开始学习,否则一个程序的每一句代码都可能是一个疑惑。对于数组如何赋值最简单的就是定义变量的时候直接赋值,例如:
int a[10] = {1,3,2,6,8,4,5,7,10,9};

hwyqw
hwyqw   2016.03.22 21:28

原因分析:
数组的下标从0开始, 数组a,元素有效范围为a[0]~a[9], a[10]下标越界,所以会程序停止工作。

解决办法:
去掉原来的 cin >> a[10]语句,改成下面的for语句
for (int i = 0; i < 10; i++)
{
std::cin >> a[i];
}

huixion
huixion   2016.03.22 21:31

输入那里改为:
for(i=0;i cin>>a[i];

tanjunchen
tanjunchen   2016.03.24 00:22

数组a[10]怎么可以输入,,,内存非法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!