C++ C++;当循环未启动时

C++ C++;当循环未启动时,c++,while-loop,C++,While Loop,因此,我们的想法是向用户询问数组中的每个元素,但在第一个问题给出输入后(其中询问元素的数量),什么都不会发生。不知道为什么 #include <iostream> int main() { int numGrades; tryAgain: std::cout << "Enter number of grades" << std::endl; std::cin >> numGrades

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

#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;   
}
#包括
int main()
{
国际努姆格拉德斯;
tryAgain:
std::cout numGrades;
如果(numGrades>30)
{

std::cout构造
while(true);
表示
while(true){}
(即无限循环)

所以,当你写作的时候

while (gradeCount < numGrades);
{
  // ...
}
while(成绩计数
您具有以下功能:

while (gradeCount < numGrades)
{
}

{
  // ...
}
while(成绩计数

如果
gradeCount
请查看此代码,几乎没有问题。一个是分号打开,而另一个是打印
grades
grades
和内存分配。内存静态分配必须需要一个常量。这里添加了一个动态分配作为t他的分数不是固定不变的……代码如下:

#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;   
}
#包括
int main()
{
国际努姆格拉德斯;
tryAgain:
std::cout numGrades;
如果(numGrades>30)
{
std::cout您正在使用

while (gradeCount < numGrades);
while(成绩计数
在这一行的末尾有一个分号(;),这样下一行就不会执行,因为该条件始终为真,因为各个变量中没有增量或减量

简而言之,只需删除(;)

while(成绩计数使用调试器。在while循环之后,看起来像分号;(在WHER()后面的分号可能是罪魁祸首。检查while(GealEntUnNoCuthes);删除分号<代码> int等级[编号1 ];在标准C++中不允许使用< /C> >,而使用<代码>向量等级(NoMeCube)。
并在执行此操作之前检查数字是否为负数。我建议您阅读有关“可变长度数组”(可能在此处:)。我们不知道编译器使用的是什么CptJohnMiller74,但这段代码可能在他这方面是可编译的。谢谢,是的,它可能因编译器而异。。。
while (gradeCount < numGrades)