为什么这个程序输出这个数字?

时间:2016-08-19 23:58:53

标签: c++

我刚开始学习C ++。这是我的代码:

#include <iostream>

using namespace std;

int main() {
    double hours,rate,pay;
    // get the number of hours worked
    cout << "How many hours did you work?";
    cin>> hours;
    //Get the hourly pay rate
    cout<<"How much did you get paid per hour?";
    cin>> pay;
    // calculates the pay
    pay = hours * rate;
    // Display the pay
    cout<<"You have earned $" << pay <<endl;

    return 0;
}

我不知道为什么这个程序输出错误的数字:

  

你工作了几个小时?19
  你每小时收到多少钱?15
  您已获得$ 4.03179e-313

也许我安装了IDE错误(我正在使用Eclipse)?:

3 个答案:

答案 0 :(得分:3)

我认为您的onActivityResultMethod()行是错误的,因为您使用cin >> pay进行了跟进。由于从未分配速率,它只会在内存中获取垃圾数据,因此输出未定义。将pay = hours * rate更改为cin >> pay

答案 1 :(得分:2)

您的代码存在两个问题。

  1. 您的第二次cin>>来电正在初始化pay时应该初始化rate

    cin >> rate;
    

    或者,如果您使用的是C ++ 11或更高版本,则可以改为使用std::get_money()

    cin >> get_money(rate);
    
  2. 您的cout<<正在使用其默认格式输出double(浮点数据类型),这可能不适合您的需要。要显示货币值,您应该明确说明格式,例如:

    cout << "You have earned $" << fixed << setprecision(2) << pay << endl;
    

    或者,如果您使用的是C ++ 11或更高版本,则可以改为使用std::put_money()

    cout << "You have earned " << put_money(pay) << endl;
    

答案 2 :(得分:1)

首先,在使用它们之前初始化变量是一个很好的做法,所以你应该试试这个:

double hours = 0, rate = 0, pay = 0;

其次,您需要在以下方式中按费率替换付款:

    //Get the hourly pay rate
cout << "How much did you get paid per hour?";
cin >> rate;

Amran AbdelKader。