我被要求编写一个函数,它从结构类型中获取两个值并进行比较。如果它们相等,它希望我从这些结构中添加另外两个值并将其发送到另一个结构。它也应该通过函数名返回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;
}
答案 0 :(得分: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
现在你可以开始调试它了......
答案 1 :(得分:0)
有一些错误: 1.应该是';'在定义结构之后 2.你不应该将类型'记录'传递给你的函数比较,而应该传递&amp; r [i]