我的while程序溢出了?我做错了什么?



所以q是输入10个数字,并在c++中使用do while循环打印最大的一个。我的程序是-

#include<iostream.h>
#include<conio.h>
void main()
{  
  clrscr();
  int i= 0, max, x;
  while ( i<10) 
    cout<<"enter a no"; 
    cin>>x;
  if (max==x) 
    i++;
  getch();
}

我是初学者,所以请具体一点。我想打印最大的数字。我能做些什么呢?

首先,你的代码无法编译。

逻辑中的错误是,当i小于10时,您提示用户输入,但您从未更改i -因此i将始终小于10。从这里开始。

用你的新代码编辑:

while ( i<10)
  cout<<"enter a no";

i仍然总是小于10,并且,如果没有括号,当i小于10时,while循环将执行它下面的行。你所做的就是一遍又一遍地打印"enter a no",直到程序停止。

你是否复制了别人的代码并遗漏了一些位?

你的问题的关键是

if (max==x) 
    i++;

你不希望i++以if为条件。

这也是错误的if,你没有显示max的声明。所以你测试的代码必须与你发布的不同。但是你问的具体问题是,i++是有条件的,而它应该是无条件的。

您想要诸如

之类的内容
if (max<x)
{
    max=x;
}
i++;

首先,你使用的是一个普通的while循环,而不是do while。

using namespace std;
int main() //main should return an int
{
    //decleare each variable
    int i = 0; 
    int x;
    int max;
    while (i < 10)
    {
        cout << "enter a no";
        cin >> x;
        if (i == 0 || x > max) 
            max = x;
        i++; //increment i in the loop
    }
    cout << max << endl;
    getchar();
    return 0; //return 0 if everything's ok
}

如果你在循环中不增加i或包含break语句,你有一个无限循环

相关内容

  • 没有找到相关文章

最新更新