我有这个:
#include <iostream>
using namespace std;
int main()
{
char ch, max = 0;
int n = 0;
cout << "Enter number of characters! :";
cin >> n;
cout << "Enter the number";
while (n>0)
{
cin >> ch;
if(max<ch)
max = ch;
n=n-1;
}
cout << "max is : " << max;
}
我试图把它变成一个do while循环 - 这就是我所拥有的:
int main()
{
char ch, max = 0;
int n = 0;
cout << "enter character";
cin >> n;
cout << "enter two";
cin >> ch;
do
(max<ch);
while
(max = ch);
(n>0);
n= n - 1;
cout << "max is : " << max;
}
我该如何解决这个问题?
答案 0 :(得分:4)
第一个程序需要在使用提取器后检查EOF或其他故障:
#include <iostream>
using namespace std;
int main()
{
char ch, max = 0;
int n = 0;
cout << "Enter number of characters: ";
cin >> n;
cout << "Enter the number: ";
while (n > 0 && cin)
{
if (cin >> ch && max < ch)
max = ch;
n = n - 1;
}
cout << "max is : " << max << endl;
return 0;
}
我注意到代码中没有任何内容强制执行'它是一个超出提示中提示的数字'。此外,大多数使用户计算计算机可能数的东西的界面都被误导了。
将代码转换为使用do ... while
循环没有什么意义,但如果必须,那么最终看起来像:
#include <iostream>
using namespace std;
int main()
{
char ch, max = 0;
int n = 0;
cout << "Enter number of characters: ";
cin >> n;
cout << "Enter the number: ";
if (n > 0 && cin)
{
do
{
if (cin >> ch && max < ch)
max = ch;
n = n - 1;
} while (n > 0 && cin);
}
cout << "max is : " << max << endl;
return 0;
}
请注意,while
循环顶部显示的条件现在是一个单独的if
条件,并在do ... while (...)
条件下重复。仅此一项就告诉您do ... while
在这里不合适;如果有工作要做,你只想通过循环,但是do ... while
循环会强制你完成一次循环。
答案 1 :(得分:2)
while (test) block;
相当于
if (test) {
do block
while (test);
}
所以你的while循环会变成
if (n>0) {
do {
cin >> ch;
if(max<ch)
max = ch;
n=n-1;
} while (n>0);
}