0

我被要求编写一个从结构类型中获取两个值并比较它们的函数。如果它们相等,它希望我从这些结构中添加两个其他值并将其发送到另一个结构。它也应该通过函数名返回 1 或 0,所以我将函数定义为 int。

我试图编写一个程序,该程序获取员工的社会安全号码和他们的工资,然后是另一个员工的 ssn 和工资。如果社会值相同,它将合并两个工资并将它们发送到包含该员工总工资的另一个结构。

每次我提到函数比较时都会出错。这似乎是由于函数的参数。如何正确地做到这一点?

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

#define EMPLOYEE_COUNT 4

struct ewage
{
       int ssn;
       int wage;
}

struct record
{
       int totalwage;
}

int compare(struct ewage s1, struct ewage s2, struct record *r);

int main (void)
{
    struct ewage e[EMPLOYEE_COUNT];
    struct record r[EMPLOYEE_COUNT];
    int i, j;
    for (i = 0; i < EMPLOYEE_COUNT; i ++)
    {
        for (j = i + 1; j < EMPLOYEE_COUNT; j ++)
        {
            int success = compare(e[i], e[j], &record[i]);
            if (success == 1)
                        printf ("%d / %d | Record: %d \n", i, j, record[i]);
            else
                        printf ("%d / %d | DOES NOT MATCH \n", i, j);
        }
    }

    system ("PAUSE");
    return 0;
}

int compare(struct ewage s1, struct ewage s2, struct record *r)
{
       if (s1.ssn == s2.ssn)
       {
                  r->totalwage = s1.wage + s2.wage;
                  return 1;
       }
       return 0;
}
4

2 回答 2

0

结构定义后需要分号

struct ewage
{
       int ssn;
       int wage;
}; // here

struct record
{
       int totalwage;
}; // here

记录没有定义,我假设它的真名是 r

int success = compare(e[i], e[j], &r[i]); // here
if (success == 1)
    printf ("%d / %d | Record: %d \n", i, j, &r[i]); // here

最后,你需要用最后的 %d 打印一些东西,我在这里假设总工资:

printf ("%d / %d | Record: %d \n", i, j, r[i].totalwage); // here

现在你可以开始调试它了...

于 2013-11-09T00:37:01.857 回答
0

有几个错误: 1.应该有一个';' 在定义结构 2.you 不应该将类型“record”传递给你的函数比较之后,你应该传递 &r[i]

于 2013-11-09T00:44:24.750 回答