【发布时间】:2018-03-23 23:21:56
【问题描述】:
当我运行这个时,我得到一个疯狂的小数。 然后,我将使用完全相同的分子和分母再次运行它,它给了我一些不同的东西。我不知道十进制值在哪里得到它正在使用的数字和分母。我希望它使用用户在程序开始时强制输入的那个。
我不知道我做错了什么。非常感谢任何帮助!
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void printLogo() {
cout << "logo here" << endl;
}
int AskFraction(int &numerator, int &denominator) {
cout << "Enter numerator: ";
cin >> numerator;
cout << "Enter denominator: ";
cin >> denominator;
while (denominator == 0 || denominator < 0) {
cout << "Denominator must be a number above zero." << endl;
cout << "Enter denominator: ";
cin >> denominator;
}
return numerator, denominator;
}
float DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
decimalValue = numerator / denominator;
}
return decimalValue;
}
void PrintFraction(int numerator, int denominator) {
cout << numerator << "/" << denominator << endl;
}
int main(int numerator, int denominator, float decimalValue) {
printLogo();
AskFraction(numerator, denominator);
DecimalValue(decimalValue, numerator, denominator);
cout << "The decimal value is: " << decimalValue << endl;
PrintFraction(numerator, denominator);
system("pause");
return 0;
}
【问题讨论】:
-
1.请阅读按值传递和按引用传递的概念。 2. Cmd 行 args 应用作输入,但不能用作在程序中输入的变量。 3.
return numerator, denominator;希望编译器应该已经产生了警告。 -
除了@Mahesh 所说的,您没有将
DecimalValue函数调用的返回值分配给任何东西。 -
而且main函数的签名不正确。
-
@Mahesh 好的,我通过引用进行了传递,并更改了我的分子、分母和十进制值。我在我的问题中编辑了它。但我仍然没有得到正确的小数点 - 它每次都给出 0。
-
numerator和denominator都是int,因此,在 C++ 中,即使decimalValue是float,您也正在执行 integer 除法(例如 2/3 -> 0)。你还没有修复return numerator, denominator;,你希望发生什么?
标签: c++ function decimal fractions