满意答案
saddam1986
2017.10.05
采纳率:55% 等级:8
已帮助:113人
帮你写好了,这里帮你编译运行了,没任何问题,不放心的话你自己试试
struct staff
{
char name[50];
float salary;
unsigned int age;
struct staff *next;
};
int main(void)
{
struct staff *head=NULL;
struct staff *prev,*current;
char input[50];
printf("请输入员工姓名:");
while(gets(input)!=NULL&&input[0]!='\0')
{
current=(struct staff *)malloc(sizeof(struct staff));
if (head==NULL)
head=current;
else
prev->next=current;
current->next=NULL;
strcpy(current->name,input);
printf("请输入他的工资:");
scanf("%f",¤t->salary);
printf("请输入他的年龄:");
scanf("%d",¤t->age);
while(getchar()!='\n')
continue;
printf("请输入员工姓名:(空行开头来结束)");
prev=current;
}
if (head==NULL)
puts("没有任何数据,抱歉!");
else
{
printf("下面是需要的数据:\n");
printf("员工姓名 员工工资 员工年龄 \n ");
}
current=head;
while(current!=NULL)
{
printf("%s %f %d\n",current->name,current->salary+30,current->age+1);
current=current->next;
}
current=head;
while(current!=NULL)
{
prev=current->next;
free(current);
current=prev;
}
return 0;
}
scanf("%d",¤t->age); 这里其实是¤t->age 不知道为什么这里会显示乱码,如果粘贴不能正常出来的话自己改一下~追问: 不好意思哦,后面的是为每个员工增加30%,要怎么改呢。
追答:工资增加30%吗?,current->salary+30 这里输出结果的时候用1.3*(current->salary) 就好~
00分享举报