Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么第一个循环的值不同?_C++ - Fatal编程技术网

C++ 为什么第一个循环的值不同?

C++ 为什么第一个循环的值不同?,c++,C++,因此,我创建了一个程序,用户输入多少学生来计算他们的测验分数,并要求用户提供3个测验分数,然后将其相加。目前,我所有的功能都正常,除了获取测验分数的总和,在第一个循环中,它有一个很大的值。(见下图) 这是我的代码: #include <iostream> #include <conio.h> using namespace std; int main() { int count; string student[100]; c

因此,我创建了一个程序,用户输入多少学生来计算他们的测验分数,并要求用户提供3个测验分数,然后将其相加。目前,我所有的功能都正常,除了获取测验分数的总和,在第一个循环中,它有一个很大的值。(见下图)

这是我的代码:

#include <iostream>
#include <conio.h>

using namespace std;
int main() {
    int count;
    string student[100];
    
    
    cout<<"How many students do you want to calculate for? ";
    cin>>count;
    cin.ignore();
    int grades[count][3];

    for (int i = 0; i<count; i++) {
        cout<<"Enter Student Name: ";
        getline (cin, student[i]);
        cout<<"Enter quiz scores: ";
        for (int a = 0; a<3; a++) {
        cin>>grades[i][a];  
        }
        cin.ignore();
    }
    
    int sum[count], sum2[count];
        
    for (int i = 0; i<count; i++) {
        for (int a = 0; a<3; a++) {
        sum[i] = grades[i][a];
        sum2[i] = sum2[i] + sum[i]; 
        }
    }
    
    cout<<"\n";
    
    for (int i = 0; i<count; i++) {
        cout<<"\nStudent Name: "<<student[i]<<" | Quiz Scores: ";
        for(int a = 0; a<3; a++) {
            cout<<grades[i][a]<<" ";
        }
        cout<<"| Sum of grades: "<<sum2[i];
    }
    
        
}
#包括
#包括
使用名称空间std;
int main(){
整数计数;
弦乐学生[100];
邮政帐户;
cin.ignore();
国际职系[计算][3];;

对于(int i=0;i第一个循环的值很大,因为我没有为
sum2[i]
设置起始值,所以我在第一个for循环上添加了
sum2[i]=0;

    for (int i = 0; i<count; i++) {
    sum2[i] = 0; \\Set the starting value for sum2[i] to 0
        for (int a = 0; a<3; a++) {
        sum[i] = grades[i][a];
        sum2[i] = sum2[i] + sum[i];
        ave[i] = sum2[i]/3;
        }
    } 

for(int i=0;iIf输出是一个文本:请将其复制粘贴到问题中,而不是从中创建图像。除了使用,您没有初始化
sum
sum2
中的值。如果您没有为
sum2[i]=sum2[i]+sum[i]
提供起始值,您希望
sum2[i]=sum2[i]做什么
?噢,谢谢!我现在得到了:)它将有一个intedefine值,读取它将给出程序未定义的行为。您还需要对所有其他
sum2[I]
执行相同的操作,而不仅仅是
sum2[0]
,因为后者只会将问题转移到循环的第二次迭代(不管它是否最终表现出来;这是UB)。你可能会发现初始化所有变量是一个很有用的好习惯。这样,当你看到一个未初始化的变量时,它会感觉像是一种代码气味。