我被要求编写一个从结构类型中获取两个值并比较它们的函数。如果它们相等,它希望我从这些结构中添加两个其他值并将其发送到另一个结构。它也应该通过函数名返回 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;
}