提问人:WolfHasQuack 提问时间:10/25/2023 最后编辑:WolfHasQuack 更新时间:10/26/2023 访问量:143
如何检查整数?
How to check for a whole number?
问:
我正在学习 C++ 并检查输入是否为质数。我不能有任何复杂的事情,因为这是为初学者课程中的固执老师准备的。每个 if 语句都运行,但第一个语句除外,它检查是否为整数。这是我的程序:userInput
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int userInput;
bool isPrime = true;
while (true){
cout << "Enter a number to check if it is a prime number: ";
cin >> userInput;
if (floor(userInput) != ceil(userInput)){
cout << "Please type a whole number.\n\n";
continue;
} else if (userInput == 1){
cout << "This is not a prime number!\n\n";
continue;
} else if (userInput <= 0){
cout << "Please type a postive integer.\n\n";
continue;
}
for (int i = 2; i <= sqrt(userInput); ++i) {
if (userInput % i == 0) {
isPrime = false;
break;
} else {
isPrime = true;
}
}
if (isPrime){
cout << userInput << " is a prime number.\n\n";
} else {
cout << userInput << " is not a prime number!\n\n";
}
cin.clear(); // clears errors if input generated error flags so the program can successfully wait for user
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // clears the input buffer by ignoring all (max) characters
cout << "Press Enter to continue...";
cin.get(); // gets the key that was pressed
}
return 0;
}
我尝试了以下代码作为该特定 if 语句中的条件,但终端始终只输出“(转换为 int 的双精度)不是质数!
userInput != (int)userInput
floor(userInput) != ceil(userInput)
userInput != (int)userInput
userInput == (double)userInput //prints "Enter a number to check if it is a prime number: Please type a whole number.
userInput != static_cast<int>(userInput) //prints "Enter a number to check if it is a prime number: Please type a whole number.
floor(userInput) != userInput
modf(castedUserInput, &intpart) == 0.0 // declared two double variables earlier: double castedUserInput = (double)userInput; and double intpart; -prints "Enter a number to check if it is a prime number: Please type a whole number
很明显,其中一些应该可以工作,那么我的其余代码有什么问题呢?也偏离了主题,但是如果我仍然希望用户收到“请输入以继续......”的提示,则在if语句中使用错误的关键字是错误的。最后?正如预期的那样,整个循环只是重新启动,但我希望它到达 while 循环的末尾。continue
老师的指示:
- 编写一个程序,要求用户提供整数。
- 读取输入。
- 检查它是否为正整数。继续向用户询问 一个正整数,直到用户给你一个正整数 数。确保你抓住了角色。
- 检查变量是否为质数,用 相应的验证,如示例可执行文件所示。
- 告诉用户按 Enter 键再次运行程序。
- 遵守良好的编程实践和结构 程序。
- 不要忘记评论,停止屏幕,代码间距和 输出,使其释放等。
- 对于程序的标题,请使用“所见即所得” 方法“(多行中只有一个 cout 语句)。
答: 暂无答案
评论
userInput
是一个 .没有“被强制转换为 int 的替身”,也不清楚您对 int 的期望是什么int
floor(userInput) != ceil(userInput)
userInput
std::cin
userInput
userInput
int userInput
if (userInput >= 0)
using namespace std;
floor()
ceil()
float
double