2016-09-25 139 views
0

我对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

main中的代码不变grossTotal

声明

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

&hellip;用指定的初始值创建一个变量grossTotal。它没有声明这些变量的值之间的关系。

在时间初始化表达式(至=右侧)被评估adultTickchildTick是零,因为作为命名空间范围变量它们已经被初始化为零。

+0

不确定,但重点是声明不指定关系,它只指定一个初始值。 –

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的值。

相关问题