为什么我得到零呢?

时间:2016-09-25 02:10:19

标签: c++ math format zero

我对C ++有点新意,我正在制作这个小程序来计算电影票总票数。

#include<iostream>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int adultTick, childTick;
const int aPrice = 14;
const int cPrice = 10;
float rate() {
    const double RATE = .20;
    return RATE;
}

double grossTotal = (aPrice * adultTick) + (cPrice * childTick);
int main() {

    cout << "Box Office Earnings Calculator ....\n" << endl;
    cout << "Please Enter the Name of the Movie: ";
    string movie_name;

    getline(cin, movie_name);


    cout << endl << "   \"   \"   " << "adult tickets sold: ";
    cin >> adultTick;

    cout << "   \"   \"   " << "child tickets sold: ";
    cin >> childTick;

    cout << endl << setw(10) << left << "Movie Title: " << setw(20) << right << " \" " << movie_name << " \" " << endl;
    cout << setw(10) << left << "Adult Tickets Sold: " << setw(20) << right << adultTick << endl;
    cout << setw(10) << left << "Child Tickets Sold: " << setw(20) << right << childTick << endl;
    cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal;


}

最后,程序在哪里显示总计?我认为算术是正确的,但我不明白为什么它连续显示零?我能做错什么? 如果我不为算术“grossTotal”创建变量,它可以工作但我必须使用“setprecision”和“fixed”函数进行进一步的格式化。

2 个答案:

答案 0 :(得分:2)

grossTotal中的代码不会更改double grossTotal = (aPrice * adultTick) + (cPrice * childTick);

声明

grossTotal

...创建一个具有指定初始值的变量=。它没有声明这些变量的值之间的关系。

在初始化程序表达式(adultTick的右侧)被评估childTick{ path: 'password', loadChildren: () => new Promise(resolve => { (require as any).ensure([], require => { resolve(require('./password/password.module').PasswordModule); }); }) }, 为零时,因为作为命名空间范围变量,它们已被零初始化。

答案 1 :(得分:1)

int adultTick, childTick;

显示的代码在全局范围内声明这些变量,并且这些变量被零初始化。

double grossTotal = (aPrice * adultTick) + (cPrice * childTick);

显示的代码也在全局范围内声明此变量,并且计算的公式计算为0,因此该变量将设置为0.

cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal;

main()中的这一行显示grossTotal变量的值,当然是0。

确实,在此行之前,main()中的上述代码设置了adultTickchildTick。这没有任何区别,因为grossTotal的值已经初始化了。

您需要更改代码,以便main()在设置其他变量后计算grossTotal的值。