我的任务是修复一个充满C ++编程类错误的示例代码。该程序的设计使得输入两个数字作为输入 - 第一个数字随后除以第二个数字 - 输出是余数。我已经解决了几乎所有的错误,但是我遇到了一个剩余错误(我可以收集)的问题,我似乎无法弄明白。
#include <iostream>
using namespace std;
int main()
{
int firstNumber;
double secondNumber;
cout << "Please enter two whole numbers: ";
cin >> firstNumber >> secondNumber;
cout << firstNumber << " divided by " << secondNumber
<< " is " << (firstNumber / secondNumber) << endl
<< "with a remainder of " << (firstNumber % secondNumber)
<< endl;
}
我得到的错误在第13行......“类型'int'和'double'到二进制'运算符%'的操作数无效。
有关如何解决此问题的任何建议......?
答案 0 :(得分:1)
很多人都在谈论C ++中的mod运算符(%)如何只对整数有效。有些人建议将secondNumber
转换为int,而其他人则提到了对fmod
等浮点数有效的mod操作。
解决此问题的更好方法是在程序开头将secondNumber
声明为整数。处理整数除法(商余数)时,没有理由使用浮点数。您的问题定义似乎只为整数定义,因此我们应该只使用整数。
#include <iostream>
using namespace std;
int main() {
int firstNumber, secondNumber;
cout << "Please enter two whole numbers: ";
cin >> firstNumber >> secondNumber;
cout << firstNumber << " divided by " << secondNumber
<< " is " << (firstNumber / secondNumber) << endl
<< "with a remainder of " << (firstNumber % secondNumber)
<< endl;
return 0;
}
答案 1 :(得分:0)
(firstNumber % secondNumber)
导致您的错误,因为%
仅适用于整数类型。如果需要,可以将secondNumber
转换为int,如:
(firstNumber % static_cast<int>(secondNumber))
或者您可以使用fmod()功能