gpt4 book ai didi

使用带有 char 字符串和数组的结构的 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:41 25 4
gpt4 key购买 nike

我必须编写一个程序来计算 10 名员工的总工资、扣除额、净工资,并包括加类费(如果适用)。我必须使用一个结构来执行此操作,名称最多可以包含 20 个字符,ID 最多可以包含 6 个字符。我知道我的主要问题是我如何在我的结构中使用数组,因为我只有一名员工就可以正常工作。也许我只是不明白如何将它们正确地实现到结构中。我试过将它与另一个结构嵌套,其中包括我的名字 [21] 和 pin[7] 并将其更多地作为字符串来做,以及其他一些在我脑海中听起来可行但没有任何效果的东西。任何帮助表示赞赏,并且要温柔,我是这个大声笑的新手。提前谢谢你。

#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;
}

最佳答案

您希望结构代表员工的单个实例,然后拥有这些结构的数组。所以你的类型定义是

#include <stdio.h>
#include <stdlib.h>

#define MAX 10

typedef struct PAYROLL
{
char name [21];
char pin [7];
float hours;
float hourly_pay;
float gross_pay;
float net_pay;
float overtime_pay;
float deductions;
} payroll;

在您的主函数中,将您的变量声明更改为

PAYROLL employee[MAX];

然后,无论你有employee.<field_name>[i]你会把它改成employee[i].<field_name>

最后,您必须更改 funcoutput 的定义

void funcoutput (PAYROLL employee1[])

关于使用带有 char 字符串和数组的结构的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com