解释这段代码//增加信息 sy *add() { sy *head,*p,*q; head=p=(sy *)malloc(sizeof(sy)); int b; printf("请问你想输入几人信息\n"); scanf("%d",&b); for(i=0;i<b;i++) { q=(sy *)malloc(sizeof(sy)); printf("请输入员工编号:"); scanf("%d",&q->num); printf("请输入员工姓名:"); scanf("%s",q->name); printf("请输入该员工入职年月:"); scanf("%s",q->time); printf("请输入员工岗位工资:"); scanf("%f",&q->salary); printf("请输入员工奖金:"); scanf("%f",&q->bonus); printf("请输入员工扣款:"); scanf("%f",&q->withhold); //计算实发工资---实发工资=岗位工资+奖金-扣款 q->net_payroll=q->salary+q->bonus-q->withhold; //更新是否删除的标识 q->FLAG=0; p->next=q; p=q; printf("\n"); } p->next=NULL; return head; }
时间: 2024-04-27 14:23:05 浏览: 123
这段代码定义了一个名为add()的函数,用于向程序中的员工工资链表中增加一批新的员工工资信息。该函数返回链表的头指针。函数内部首先定义了三个指针变量:head、p、q,其中head和p指向链表的头节点,q是用于新建节点的临时指针。然后使用malloc()函数分配了一块内存空间,用于存储头节点的信息,并将p指向该节点。接着,函数会询问用户要输入几个员工的信息,并将这个数字存储在变量b中。接下来使用for循环,循环次数为输入的员工数b。在循环中,首先使用malloc()函数分配一块内存空间,用于存储新的员工工资信息,并将q指向该节点。然后通过scanf()函数读取用户输入的员工信息,包括员工编号、姓名、入职年月、岗位工资、奖金和扣款。接着计算实发工资,并将其存储在节点的net_payroll字段中。最后将节点插入到链表中,并将p指向新的节点。循环结束后,将最后一个节点的next指针设置为NULL,并返回链表的头指针head。函数的作用是向链表中增加新的员工工资信息。
阅读全文