0
我必須編寫一個程序來計算10名員工總工資,扣除額,淨工資,並在適用的情況下包括加班費。我必須使用一個結構來執行此操作,名稱最多可以包含20個字符,ID爲6個字符。我知道我的主要問題是我如何在我的結構中使用數組,因爲我只有一名員工可以正常工作。也許我只是不瞭解如何在結構中正確實施它們。我試圖用另一種結構嵌套它,包括我的名字[21]和別針[7],並且更多地作爲一個字符串,以及其他一些在我腦海中聽起來可行的東西,但沒有任何工作正常。任何幫助表示讚賞,並溫柔我是新的在這個大聲笑。先謝謝你。使用char字符串和數組結構的C程序
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
struct payroll
{
char name [MAX][21];
char pin [MAX][7];
float hours[MAX];
float hourly_pay[MAX];
float gross_pay[MAX];
float net_pay[MAX];
float overtime_pay[MAX];
float deductions[MAX];
};
typedef struct payroll PAYROLL;
void funcoutput (PAYROLL);
int main()
{
PAYROLL employee;
int i;
for (i=0;i<=MAX;i++)
{
printf ("Enter the employees last name:\n");
scanf("%s", &employee.name[i]);
printf ("Enter the employees 6 character ID:\n");
scanf("%s", &employee.pin[i]);
printf ("Enter the employees hours for the week:\n");
scanf ("%f", &employee.hours[i]);
printf ("Enter the employees hourly rate of pay: \n");
scanf ("%f", &employee.hourly_pay[i]);
printf ("Enter any employee ovetime hours, hours exceeding 40: \n");
scanf ("%f", &employee.overtime_pay[i]);
employee.overtime_pay[i] = employee.overtime_pay[i] * 1.5;
employee.gross_pay[i] = employee.hours[i] + employee.hourly_pay[i] + employee.overtime_pay[i];
employee.deductions[i] = employee.gross_pay[i] * .25;
employee.net_pay[i] = employee.gross_pay[i] - employee.deductions[i];
}
funcoutput (employee);
return 0;
}
void funcoutput (PAYROLL employee1)
{
int i;
for (i=0;i<MAX;i++)
{
printf("Name:%s ID:%s Hours:%8.2f Hourly rate:$%8.2f Gross pay:$%8.2f Deductions:$%8.2f Net pay:$%8.2f\n",
employee1.name[i],employee1.pin[i],employee1.hours[i],employee1.hourly_pay[i],
employee1.gross_pay[i],employee1.deductions[i],employee1.net_pay[i]);
}
return;
}
解開另一個方向。創建一個包含** a ** payroll實體的結構體(在此聲明中,「MAX'出現*無處*),然後創建一個* MAX *長度的數組*。 'PAYROLL emp [MAX];'換句話說,不要對數組成員使用結構體(名稱和引腳不能承受);使用一個結構數組。那有意義嗎? – WhozCraig
您在第一個循環中犯了一個錯字。用'<'替換'<='。 – McLovin
我的確最終找出了回到我以前的嘗試,並認識到我的語句不匹配一個是<= MAX其他是