C++ C++;带有While操作符的控制台应用程序

C++ C++;带有While操作符的控制台应用程序,c++,C++,我需要帮助解决一个问题。我尝试在代码块上运行它,但编译器显示错误(执行“c:\Users\user\Desktop\Test\main.cpp-o c:\Users\user\Desktop\Test\main.o”中的“mingw32-g++.exe-c:\Users\Users\Desktop\Test\main.o”失败),因此我在这里询问一些代码更正(如果需要): < P>创建一个C++控制台应用程序,它输入随机数的值,直到输入0,并显示所有不均匀数字中的最大值[It/P>]。 解决方案

我需要帮助解决一个问题。我尝试在代码块上运行它,但编译器显示错误(执行“c:\Users\user\Desktop\Test\main.cpp-o c:\Users\user\Desktop\Test\main.o”中的“mingw32-g++.exe-c:\Users\Users\Desktop\Test\main.o”失败),因此我在这里询问一些代码更正(如果需要):

< P>创建一个C++控制台应用程序,它输入随机数的值,直到输入0,并显示所有不均匀数字中的最大值[It/P>]。 解决方案必须简单,并且只包括
if
while
。 为了确保您理解,我将举一个例子: 在控制台中输入: 27946100

它显示:9这是一个程序应该如何工作的示例,而不是它在实际中如何与我的代码一起工作 以下是我现在尝试做的事情:

#include <iostream>

using namespace std;

int main()
{
    int a, max;
    cout<<"insert number here:";
    cin>>a; //Inserting first "a" so that I can save max a value of first a and compare it to the next entered values
    if (a%2!=0)max=a;
    while(a!=0)
    {
        cin>>a;
        if(a%2!=0 && a>max)max=a;
    }
    cout<<max;
    return 0;
}
#包括
使用名称空间std;
int main()
{
int a,max;
couta;//插入第一个“a”,这样我可以保存第一个a的最大值,并将其与下一个输入的值进行比较
如果(a%2!=0)max=a;
while(a!=0)
{
cin>>a;
如果(a%2!=0&&a>max)max=a;
}

cout如果输入的第一个数字是偶数,
max
将保持未初始化状态,程序将无法正常工作

有几种方法可以解决此问题:

  • 手动将
    max
    初始化为保证小于所有输入数字的值(例如,如果保证所有数字均为正数,则使用-1初始化
    max

  • 检查布尔标志以了解何时输入奇数 e、 g


  • 你的算法是正确的,你唯一的问题是未初始化的
    max

    是的,Scheff已经提出了第一种方法,但我认为一定有另一种更聪明的方法,它不需要我知道最低的int值或布尔检查(我没有研究过这个,所以我不能在学校使用它)。感谢您的关注并尝试解决此问题。如果您想用另一种方法初始化max,我会很高兴听到它。@DanielHalachev我添加了一种新方法,您可以在开始时输入偶数,请检查帖子如果我理解正确,那么我必须知道我要插入哪些数字?在这种情况下,我们是没有正确地解决问题,因为程序应该处理随机输入和无限计数的数字。如果我以错误的方式解释了您的答案,请随时纠正我。我想我的老师没有坚持使用不同于将max设置为int类型的最低值的方法。谢谢您的帮助。@DanielHalachev不,你不需要知道数字。我的程序就是这样做的:首先,它输入开头的所有偶数,因为你不需要它们。当输入的数字是奇数时,第一个while循环结束。然后用该数字初始化max值,循环现在继续进行mallyol,是的,但是…我太困惑了!它工作了ks非常好…但是…我想你必须给出一个例子,因为我无法获得代码!当然,如果你这么慷慨的话。我想我一定是非常愚蠢的,不理解代码的作用!谢谢!评论不是为了进一步的讨论;这段对话已经结束。
    #include<iostream>
    using namespace std;
    int main()
    {
        bool foundodd = true;
        int max = 0;
        int a = 0;
        while (cin >> a && a != 0)
        {
            if (a % 2)
            {
                if (foundodd)
                {
                    if (a > max)
                    {
                        max = a;
                    }
                }
                else
                {
                    max = a;
                    foundodd = true;
                }
            }
        }
        cout << max;
    }
    
    #include<iostream>
    using namespace std;
    int main()
     {
        int a = 0, max = 0;
        while (cin >> a && a % 2 == 0)
        {
    
        }
        max = a;
        while (a != 0)
        {
            cin >> a;
            if (a % 2 && a > max)
            {
                max = a;
            }
        }  
       cout<<max;
       return 0;
    }