1

我想为结构employeeData(小时)的每个数组填写第三个参数。

我想通过询问“请输入员工 x 的小时数”来提示手动输入小时数部分,如下所示。但它似乎不起作用。

void Get_input (long id_number[], float hours[], int num_empl)
  {
  /*Local Variable Declaration */

int i; /* Variable used in loop counter */

  /* Gets number of employee hours and stores them in an array. */

for (i = 0; i < num_empl; ++i)
  {
    printf("\nEnter the numbers of hours worked by employee # %06li: ",
            employeeData[i].id_number);
    scanf ("%f", &employeeData[i].hours);
  }

 printf("\n\n");
 }  

到目前为止,这是我的完整“程序”:

/*Define and Includes */

 #include <stdio.h>
 #include <cstdlib> 

 /* Define Constants */
#define NUM_EMPL 5
#define OVERTIME_RATE 1.5f
#define STD_WORK_WEEK 40f

/* Define a global structure to pass employee data between functions  */

 struct employee
 {
 long  id_number;
 float wage;
 float hours;
 float overtime;
 float gross;
 };

 /* define prototypes here for each function except main */

 /************************************************************************/
 /*                      Function: Get_input                             */
 /*                                                                      */
 /*  Purpose:    Obtains input from user, the number of hours worked per */
 /*              employee and stores the results in an array that is     */
 /*              passed back to the calling program by reference.        */ 
 /*                                                                      */
 /*  Parameters: clockNum- Array of employee clock numbers.              */
 /*              hours- Array of number of hours worked by an employee   */
 /*              size- Number of employees to process                    */
 /*                                                                      */
 /*  Returns:    Nothing, since 'clockNum' & 'hours' arrays are passed by */
 /*              reference.                                              */
 /************************************************************************/

 void Get_input (long id_number[], float hours[], int num_empl)
 {
  /*Local Variable Declaration */

int i; /* Variable used in loop counter */

  /* Gets number of employee hours and stores them in an array. */

for (i = 0; i < num_empl; ++i)
  {
    printf("\nEnter the numbers of hours worked by employee # %06li: ",
            employeeData[i].id_number);
    scanf ("%f", &employeeData[i].hours);
  }

  printf("\n\n");
  }  

  void Output_results_screen (struct employee [ ], int num_empl);


  /*************************************************************************
  **                      Function: Output_results_screen                  
  **                                                                       
  **  Purpose:    Outputs to screen in a table format the following        
  **                       information about an employee:  Clock, Wage,    
  **                       Hours, Overtime, and Gross Pay.                
  **                                                                       
  **  Parameters:  employeeData - an array of structures containing        
  **                              employee information                     
  **               size - number of employees to process                   
  **                                                                       
  **  Returns:    Nothing (void)                                           
  **                                                                       
   *************************************************************************/

  void Output_results_screen ( struct employee employeeData[], int num_empl )
  {
    int i;    /* loop index */

         printf ("-----------------------------------------\n");   /*Print Header To Screen */
         printf ("Clock# \t Wage \t Hours \t OT \t Gross\n");
         printf ("-----------------------------------------\n");

    /* printf information about each employee */
    for (i = 0; i < num_empl ; ++i)
    {


         printf("%06li    %5.2f    %4.1f   %4.1f   %8.2f    \n", 
                    employeeData[i].id_number, employeeData[i].wage, employeeData[i].hours, 
                    employeeData[i].overtime, employeeData[i].gross);
    } /* for */

    } /* Output_results_screen */


    int main ()
     {


    /* Variable Declaration and initialization */
    struct employee employeeData[NUM_EMPL] = {
    { 98401, 10.60 },
    { 526488, 9.75 },
    { 765349, 10.50 },
    { 34645, 12.25 },
    { 127615, 8.35 }
    };  


     /* Call various functions needed to reading, calculating, and printing as needed */

        /* Function call to get input from user. */
Get_input (id_number, hours, NUM_EMPL);

   /* Function call to output results to the screen in table format. */
    Output_results_screen (employeeData, NUM_EMPL);
    system("pause");  
    return(0);  /* success */

    } /* main */
4

1 回答 1

2

employeeData是本地的main,无法在内部看到,GetInput()所以我假设您遇到了编译器错误。

将该数组放在顶部的所有函数之外(即使其成为全局),它应该可以工作。或者传递一个指向数组的指针,GetInput以便您可以读入适当的记录。

于 2013-03-04T03:10:16.610 回答