这里是 C++ 初学者,第一节编程课。我正在尝试编写一个程序来检查你是否有任何数字可以被七整除。我的意思是可以说从 0 到十亿的任何数字。我还需要让程序循环并要求用户在输入无效输入时输入不能被 7 整除的数字时重试。
例子:
废话
这甚至不是一个数字。
100
不能被7整除
1
不能被7整除
你好
这甚至不是一个数字。
105
能被 7 整除
程序结束。
这就是我目前所拥有的。我不太清楚如何让它在输入正确的数字后停止并继续执行其他所有操作。非常感谢任何帮助!!
编辑
好的,我采取了不同的路线并创建了一个嵌套循环。我充分利用它来工作。现在,当数字不能被 7 整除时,它将继续循环,直到我输入一个整除的值。
现在唯一的问题是当我输入“blah”时,它会继续无限循环,即使它正在检查 Divisible 之前的变量,如下面的屏幕截图链接所示。非常感谢任何帮助使该部分正常工作。
https://www.dropbox.com/s/y6tx02nwmq1pdvr/scenario4_results.jpg?dl=0
编辑#2
好吧好吧。我越来越近了。使用我对 cin.clear() 的了解以及我可以研究的内容并将下面的内容放在一起,我得到了无限循环停止,但现在 prog 将无法识别每次触发该循环后输入的数字链接中的屏幕截图。一如既往,非常感谢帮助解决这个问题。
https://www.dropbox.com/s/2zueqy5foijka9s/scenario5_results.jpg?dl=0
#include <iostream>
#include <string>
using namespace std;
int main() {
int num = 0, sum = 0;
unsigned Divisible = (num % 7 == 0);
do {
cout << "Enter an integer: ";
cin >> num;
cout << endl;
while (Divisible){
if (cin.peek() == '\n' && !cin.fail()) break;
cout << "That's not a number, try again: ";
cin.clear();
cin.ignore(INT_MAX, '\n');
}
while
(Divisible) {
if (char(num % 7 != 0))
cout << "It's not divisible by 7, try again." << endl;
break;
}
while
(Divisible) {
if (num % 7 == 0)
cout << "It's divisible by 7." << endl;
break;
}
}
while (num % 7 != 0 || !cin);
}
最佳答案
你想要更像是:
while (true) {
cout << "Enter a positive integer: ";
cin >> num;
bool divisible = !(num % 7);
if (divisible) {
cout << "It's divisible by 7" << endl;
break;
}
else {
cout << "It's not divisible by 7, try again: " << endl;
}
}
关于测试可被 7 整除/倍数的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193574/