c++ while循环未开始

C++ while loop not starting

本文关键字:开始 循环 while c++      更新时间:2023-10-16

因此,我们的想法是向用户询问数组的每个元素,但是在为第一个问题(其中它询问元素的数量)输入之后,什么都没有发生。我不知道为什么。

#include <iostream>
int main()
{
        int numGrades;
        tryAgain:
        std::cout << "Enter number of grades" << std::endl;
        std::cin >> numGrades;
            if (numGrades > 30)
                {
                std::cout << "Please enter a valid number of grades" << std::endl;
                goto tryAgain;
                }

        int grades[numGrades - 1];
        int gradeCount = 0;
        while (gradeCount < numGrades);
            {
            std::cout << "Enter grade number" << gradeCount + 1 << ":";
            std::cin >> grades[gradeCount];
            ++ gradeCount;
            }   
        std::cout << grades;
        return 0;   
}

结构while (true);表示while (true) {}(即无限循环)。

所以,当你写

while (gradeCount < numGrades);
{
  // ...
}

你有以下内容:

while (gradeCount < numGrades)
{
}
{
  // ...
}

如果gradeCount < numGrades .

您正在使用

while (gradeCount < numGrades);

在本行末尾加上分号(;),这样下一行将不会执行,因为条件总是为真,因为在各自的变量中没有自增或自减。

总之,去掉(;)

while (gradeCount < numGrades)

请看这段代码,问题很少。一种是while循环&另一个是打印grades &grades的内存分配。内存静态分配必须需要一个常数值。这里添加了一个动态分配,因为分数不是固定的或恒定的。下面是代码:

#include <iostream>
int main()
{
        int numGrades;
        tryAgain:
        std::cout << "Enter number of grades" << std::endl;
        std::cin >> numGrades;
            if (numGrades > 30)
                {
                std::cout << "Please enter a valid number of grades" << std::endl;
                goto tryAgain;
                }

        int *grades = (int *)malloc(numGrades * sizeof(int)); //allocating dynamic memory
        int gradeCount = 0;
        while (gradeCount < numGrades)
            {
            std::cout << "Enter grade number" << gradeCount + 1 << ":";
            std::cin >> grades[gradeCount];
            ++ gradeCount;
            }   

        for(int i =0;i<numGrades;i++)
        {
            std::cout << grades[i] << std::endl;
        }
        free(grades);//releasing memory
        return 0;   
}