我是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;
}
答案 0 :(得分:1)
您可以使用std::vector<int>
代替数组。在C / C ++中,数组在传递给函数时会分解为指针。使事情变得困难。
使用std::vector<int>
将负责分配和删除,最重要的是,您可以从函数(复制构造)中返回它们,而不会出现临时或任何问题。
这是方法。
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::cin;
using std::endl;
vector<int> enterSales(int max){
int temp;
vector<int> a;
for (int idx=0;idx<max;idx++){
cout<<"Enter the amount of sales for person #"<<idx<<": ";
cin>>temp;
a.push_back(temp);
}
return a;
}
void showSalesComm(int max){
vector<int> sales=enterSales(max);
for (int idx=0;idx<max;idx++){
cout<<"The amount of sales for person #"<<idx<<": ";
cout<<sales[idx]<<endl;
}
}
int main () {
int max;
cout<<"Enter the number of employees.";
cin>>max;
showSalesComm(max);
return 0;
}
实际上,您的代码中有很多错误。返回临时和索引超出范围等。禁用编译器扩展,它将显示警告。