C++问题(新手)

来源:百度知道 编辑:UC知道 时间:2024/06/23 09:11:12
#include <iostream>
using namespace std;

int main()
{
float a[11];
static float b;
for(int i=0;i<=11;i++)
{
cin>>a[i];
b=b+a[i];
}
cout<<b/12<<endl;
return 0;
}

运行结果
1
2
3
4
5
6
7
8
9
10
11
12
6.5
可是在出现6.5之前,出现了程序遇到问题需要关闭的对话框,这是怎么回事啊?
谢谢大家了

for循环里改为i<11;定义数据a[11],它的下标应该是0-10,当i=11时数组溢出了.

LZ我不认为你能输出你所说的结果
因为你的cout不在for循环内
这样cout语句只能执行一次……
怎么会得到那么多的输出?

因为C系列语言中,默认的开始都是0,所以a[11],其实应该是数组a的第十二个元素,而实际上你并没定义这么大的数组,系统当然就直接访问a[10]后面的内存了,当然,内存就报错了,呵呵,所以写C语言的程序一定要注意,是从零开始!不是1.

你的数组定义有问题,c++的数组定义规则是 float a[11]; 其实是定义了一个11个单元的数组,而你却输入了12个数字,肯定要报错,如果你把定义改成float a[12]; 就可以了。问题就出在这,自己在好好看看。

确实是数组越界了,VC不会检查越界的,呵呵,楼上正解

数组越界