我在这里发帖是因为我需要你帮助解决这个问题。我一直试图通过自己修复它,但我没有运气。我真的不明白发生了什么。如果你查看我的代码,你会注意到我有以下循环:
for (j = 0; j < total_scores; j++)
{
cout << "P is " << p << endl ;
cout << "Enter score : ";
cin >> scores[p];
p++;
}
好吧,如果我启用这段代码,存储名称的数组已损坏,我获得了一个奇怪的结果,位置0:4 @和一个错误“运行时检查失败#2 - 堆栈周围变量'得分'已损坏。“
我真的不明白为什么,或者如何解决这个问题。没有要求分数的循环,名称的循环保持不变。如果它们是两个独立的元素,我不明白这里发生了什么。
有什么想法吗?我非常感谢你的时间和关注。
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int total_students= 2 ;
const int scores_students = 1 ;
const int total_scores = scores_students*total_students;
string names[total_students];
double scores[total_scores];
double average[scores_students];
double averages=0.0;
int i;
int j = 0 ;
int k;
int l;
int m;
int p = 0 ;
for (i = 0; i < total_students; i++)
{
cout << "I is " << i << endl;
cout << "Enter name : ";
cin >> names[i];
for (j = 0; j < total_scores; j++)
{
cout << "P is " << p << endl ;
cout << "Enter score : ";
cin >> scores[p];
p++;
}
}
for (m = 0 ; m < total_students ; m++)
{
cout << "\nName : " << names[m] << endl << endl ;
//cout << "Average : " << average[m] << endl;
}
system("pause");
system("pause");
}
我需要的是要求姓名的程序,然后是基于“scores_students”的测试结果,然后是第二个名称和下一个分数。等等
我正在寻找的输入示例:
Name Score1
Peter 20
Mark 100
答案 0 :(得分:4)
循环中有一个循环,因此p
最终可以递增到4,因此当数组大小仅为2时,您尝试访问scores[4]
。
基于评论,看起来答案是&#34; j循环&#34;应为for (j = 0; j < scores_student; j++)
而不是total_scores
,这会导致上述溢出。