C语言: 采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超过30年的职工加1000元工资,并输出工资变化后的所有职工的信息(要求用下标法和指针法实现)
参考GPT和自己的思路:
好的,针对你的问题,我可以提供以下代码实现:
#include <stdio.h>
// 定义包含职工信息的结构体类型
struct Employee {
char name[20]; // 职工姓名
int year; // 工作年限
float salary; // 工资总额
};
int main() {
int i;
struct Employee emp[5];
struct Employee *p = emp;
// 从键盘输入5名职工的信息
for (i = 0; i < 5; i++, p++) {
printf("请输入第%d名职工的信息:\n", i+1);
printf("姓名:");
scanf("%s", p->name);
printf("工作年限:");
scanf("%d", &p->year);
printf("工资总额:");
scanf("%f", &p->salary);
}
// 对工作年限超过30年的职工加1000元工资
p = emp;
for (i = 0; i < 5; i++, p++) {
if (p->year > 30) {
p->salary += 1000;
}
}
// 输出工资变化后的所有职工的信息(用下标法)
printf("\n用下标法输出所有职工的信息:\n");
for (i = 0; i < 5; i++) {
printf("第%d名职工的信息:\n", i+1);
printf("姓名:%s\n", emp[i].name);
printf("工作年限:%d\n", emp[i].year);
printf("工资总额:%.2f\n", emp[i].salary);
}
// 输出工资变化后的所有职工的信息(用指针法)
printf("\n用指针法输出所有职工的信息:\n");
p = emp;
for (i = 0; i < 5; i++, p++) {
printf("第%d名职工的信息:\n", i+1);
printf("姓名:%s\n", p->name);
printf("工作年限:%d\n", p->year);
printf("工资总额:%.2f\n", p->salary);
}
return 0;
}
希望我的回答能够帮到你,如果你还有什么其他的问题,欢迎再次咨询我。