#include "stdafx.h"
#include
using namespace std;
int main()
{
int n, a[] = { 0 }, sum=0;
cout << "How many students in your class :";
cin >> n;
for (int i = 0;i < n; i++ )
{
int t;
cout << "Please input grade(" << i << "): ";
cin >> t;
a[i+1] = t;
sum += a[i+1];
}
cout << sum / n<<endl;
return 0;
}
请问为什么报错是RUN TIME CHECK FAILURE #2?
谢谢!!
a[] = { 0 }
a的长度太小。后面你溢出了。
int n, a[] = { 0 }, sum=0;
修改为int n, sum = 0;
int *a;
cin >> n;
后面加上
a = new int[n];
a[i+1] = t;
sum += a[i+1];
修改为
a[i] = t;
sum += a[i];
你不觉得数组范围有点小吗
a[] = { 0 }的话只给a分配了1个int的空间,对未分配内存的地址赋值肯定溢出呀
范围分配过小,其他未分配的造成溢出
a[] = { 0 }只分配了一个空间
数组要在编译前确定大小,而且一旦确定不能更改。你想输入n作为数组的大小,这样子是不行了。如果想用输入的n作为大小,只能使用指针,然后用malloc分配大小
数组在定义的时候尽快分配好内存大小,如果之后需要修改其大小,也可以动态的改。