为什么我得到的是零?
Why Am I getting a zero instead?
我对 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;
}
最后,程序应该在哪里显示总数?我认为算术是正确的,但我不明白为什么它不断显示零?我做错了什么?
如果我不为 Arithmetic "grossTotal" 创建变量,它会起作用,但我必须使用 "setprecision" 和 "fixed" 函数进行进一步格式化。
main
中的代码没有改变 grossTotal
。
宣言
double grossTotal = (aPrice * adultTick) + (cPrice * childTick);
… 创建一个具有指定初始值的变量 grossTotal
。它没有声明这些变量值之间的关系。
在评估初始化表达式(=
右侧)时 adultTick
和 childTick
为零,因为作为命名空间范围变量,它们已被零初始化。
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()
中的前面代码设置了adultTick
和childTick
。这没有任何区别,因为 grossTotal
的值已经被初始化。
您需要更改代码,以便 main()
在设置这些其他变量后计算 grossTotal
的值。
我对 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;
}
最后,程序应该在哪里显示总数?我认为算术是正确的,但我不明白为什么它不断显示零?我做错了什么? 如果我不为 Arithmetic "grossTotal" 创建变量,它会起作用,但我必须使用 "setprecision" 和 "fixed" 函数进行进一步格式化。
main
中的代码没有改变 grossTotal
。
宣言
double grossTotal = (aPrice * adultTick) + (cPrice * childTick);
… 创建一个具有指定初始值的变量 grossTotal
。它没有声明这些变量值之间的关系。
在评估初始化表达式(=
右侧)时 adultTick
和 childTick
为零,因为作为命名空间范围变量,它们已被零初始化。
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()
中的前面代码设置了adultTick
和childTick
。这没有任何区别,因为 grossTotal
的值已经被初始化。
您需要更改代码,以便 main()
在设置这些其他变量后计算 grossTotal
的值。