问题描述
- 初学者关于输入任意数组进行冒泡排序
-
#includeusing 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]那儿错了 但不知道怎么改
解决方案
数组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};
解决方案二:
原因分析:
数组的下标从0开始, 数组a,元素有效范围为a[0]~a[9], a[10]下标越界,所以会程序停止工作。
解决办法:
去掉原来的 cin >> a[10]语句,改成下面的for语句
for (int i = 0; i < 10; i++)
{
std::cin >> a[i];
}
解决方案三:
输入那里改为:
for(i=0;i
cin>>a[i];
解决方案四:
数组a[10]怎么可以输入,,,内存非法