簡體   English   中英

使用帶有字符字符串和數組的結構的C程序

[英]C program using a structure with char strings and arrays

我必須編寫一個程序來計算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.<field_name>[i]您都將其更改為employee[i].<field_name>

最后,您必須更改funcoutput的定義

void funcoutput (PAYROLL employee1[])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM