我应该获得4名员工的详细信息,并打印出薪水超过10000的人的详细信息。我不应该改变该计划的结构。当我编译这段代码时,我没有得到任何错误,但输出只是
0 0.00
0 0.00
0 0.00
我无法找到我在做错的地方。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct employee
{ int id;
char name[10];
float sal;
} EMP;
void init_emp_rec(EMP out_rec[]);
void print_emp_rec(EMP out_rec[]);
void emp_recordMain(EMP emp_rec[], EMP out_rec[])
{
for(int i=0; i<3; i++)
{
if(emp_rec[i].sal>10000)
{
out_rec[i].id=emp_rec[i].id;
strcpy(out_rec[i].name,emp_rec[i].name);
out_rec[i].sal=emp_rec[i].sal;
}
}
}
void init_emp_rec(EMP out_rec[])
{
memset(out_rec, 0, sizeof(EMP)*4);
}
void print_emp_rec(EMP out_rec[])
{
for(int i=0; i<3; i++)
{
printf("%d %s %.2f", out_rec[i].id, out_rec[i].name, out_rec[i].sal);
if(i!=2){printf("\n");}
}
}
main(int argc, const char** argv)
{
int i;
EMP emp_rec[4];
EMP out_rec[4];
init_emp_rec(out_rec);
init_emp_rec(emp_rec);
for(int i=0; i<4; i++)
{
scanf("%d",&emp_rec[i].id);
scanf("%s",&emp_rec[i].name);
scanf("%0.2f",&emp_rec[i].sal);
}
emp_recordMain(emp_rec, out_rec);
print_emp_rec(out_rec);
}
答案 0 :(得分:1)
看起来您需要稍微更改一下代码:
scanf("%f",&emp_rec[i].sal);
&#34;%0.2F&#34;将20000视为0。
答案 1 :(得分:0)
rec[i].name
已经是字符串的地址,因此您应该使用:
scanf("%s",emp_rec[i].name);
另外,在读取float时不应使用格式说明符(“0.2”):
scanf("%f",&emp_rec[i].sal);
我觉得还有其他事情需要解决,但我不想破坏你的运动: - )