【发布时间】:2019-02-01 05:32:50
【问题描述】:
我是 C++ 编程的新手。在下面的代码中,我希望用户输入员工人数和每个员工的销售额。然后程序会为每个员工写出相应的销售额。虽然编译器没有报错,但还是不行。你能帮我找出错误在哪里吗?提前致谢。
#include <iostream>
using namespace std;
int enterSales(int max){
int sales[max];
for (int idx=0;idx<max;idx++){
cout<<"Enter the amount of sales for person #"<<idx<<": ";
cin>>sales[idx];
}
return sales[max];
}
float showSalesComm(int max){
int sales[]={enterSales(max)};
for (int idx=0;idx<max;idx++){
cout<<"The amount of sales for person #"<<idx<<": ";
cout<<sales[idx]<<endl;
}
return 0;
}
int main () {
int max;
cout<<"Enter the number of employees.";
cin>>max;
showSalesComm(max);
return 0;
}
【问题讨论】:
-
int sales[max];- 可变长度数组不是标准的 C++ 特性(尽管有些编译器很遗憾地接受它们作为扩展)。你想使用std::vector。此外,您的函数只返回int- 您怎么会期望能够在那里返回一个数组(或std::vector)? -
启用编译器警告。禁用编译器扩展。编译器会指出错误。
-
如果您希望代码按照您认为应该的方式运行,并且不会因为指针问题而出现意外,请使用
std::vector<int> sales(max):。另外,返回std::vector<int>,而不仅仅是int。此外,int sales[]={enterSales(max)};则变为std::vector<int> sales = enterSales(max);