我正在编写一个程序来获取用户对雇主工资单的输入。 该程序运行良好,没有显示任何错误。由于某种原因,主函数可以调用另一个函数,但该函数的语句或主体未被执行(不要求用户输入)程序完成并退出。
这是一个帮助学习结构的学校项目。 所以对于第一部分,我创建了一个结构。 我正在使用一系列“员工”类型来帮助提高效率
#include <iostream>
using namespace std;
struct employee
{
string first;
char middle;
string last;
double hours;
double rate;
};
employee input(employee [],int);
int const size= 2;
employee array[size];
程序没有错误,所以它正在调用输入函数 fine
int main()
{
cout<<" \t Data Housing Corp. Weekly Payroll"<<endl;
cout<<"===================================================="<<endl;
employee input(employee[],int);
return 0;
}
但我一定是在这里做错了什么,因为它跳过了函数的语句或主体并退出了程序。
employee input(employee array[],int size)
{
cout<<"hello";
for(int i=0; i<size;i++)
{
cout<<"For Employee #"<<i+1<<endl;
cout<<"Enter first name"<<endl;
cin>> array[i].first;
cout<<"Enter middle initial"<<endl;
cin>> array[i].middle;
cout<<"Enter last name"<<endl;
cin>> array[i].last;
cout<<"Enter hours worked this week"<<endl;
cin>> array[i].hours;
cout<<"Enter rate of pay per hour"<<endl;
cin>> array[i].rate;
}
return array[size];
}
我想让程序调用input函数,然后执行statement/body,这样用户就可以将名字、中间名首字母、姓氏等输入到数组中。 但是没有用户输入提示。或正在显示函数体内的任何内容。
main()
里面,声明:
employee input(employee[],int);
是函数声明,不是函数调用。这就是为什么
input()
里面的代码没有运行的原因。
改为将该语句更改为:
input(array, size);
此外,在
input()
中,声明:
return array[size];
正在调用 Undefined Behavior,因为它正在访问数组边界之外的数组元素。当
input()
接收它直接修改的 employee
数组时,返回一个 employee
对象是没有意义的。
试试这个:
#include <iostream>
#include <string>
using namespace std;
struct employee
{
string first;
char middle;
string last;
double hours;
double rate;
};
void input(employee[], int);
int const size = 2;
employee array[size];
int main()
{
cout << " \t Data Housing Corp. Weekly Payroll" << endl;
cout << "====================================================" << endl;
input(array, size);
return 0;
}
void input(employee array[], int size)
{
cout << "hello";
for(int i = 0; i < size; ++i)
{
cout << "For Employee #" << i+1 << endl;
cout << "Enter first name" << endl;
cin >> array[i].first;
cout << "Enter middle initial" << endl;
cin >> array[i].middle;
cout << "Enter last name" << endl;
cin >> array[i].last;
cout << "Enter hours worked this week" << endl;
cin >> array[i].hours;
cout << "Enter rate of pay per hour" << endl;
cin >> array[i].rate;
}
}