所以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语句,你有一个无限循环