问题及代码:
/*Copyright(c)2016,烟台大学计算机学院 all rights reserved.
作者:曹欣宇
指导教师:贺利坚
完成日期:2016年12月16日
题目描述
编写程序,定义一个存放职工信息的结构体类型,职工信息包括职工姓名、工作年限、工资总额。初始化5名职工的信息,对工作年限超过30年
的职工每人加100元工资,要求分别输出工资变化之前和之后的所有职工的信息。
输入
输入5个员工的职工姓名、工作年限、工资总额
输出
输出两部分,第一部分输出工资变化之前所有职工的信息,第二部分输出工资变化之后的所有职工的信息
样例输入
zhang1 5 1000
zhang2 10 2000
zhang3 20 3000
zhang4 40 4000
zhang5 50 5000
样例输出
原始工资
姓名 年限 工资
zhang1 5 1000
zhang2 10 2000
zhang3 20 3000
zhang4 40 4000
zhang5 50 5000
加薪后工资
姓名 年限 工资
zhang1 5 1000
zhang2 10 2000
zhang3 20 3000
zhang4 40 4100
zhang5 50 5100
*/
#include
#include
int main()
{
struct worker
{
char name[8];
int age;
int salary;
};
struct worker w1[5];
struct worker w2[5];
int i,j;
for(i=0; i<5; i++)
scanf("%s %d %d",w1[i].name,&w1[i].age,&w1[i].salary);
for(i=0; i<5; i++)
{
for(j=0;j<=strlen(w1[i].name);j++)
{
w2[i].name[j]=w1[i].name[j];
}
w2[i].age=w1[i].age;
w2[i].salary=w1[i].salary;
}
for(i=0; i<5; i++)
{
if(w1[i].age>30)
w1[i].salary+=100 ;
}
printf("原始工资\n");
printf("姓名 年限 工资\n");
for(i=0; i<5; i++)
printf("%s %d %d\n",w2[i].name,w2[i].age,w2[i].salary);
printf("加薪后工资\n");
printf("姓名 年限 工资\n");
for(i=0; i<5; i++)
printf("%s %d %d\n",w1[i].name,w1[i].age,w1[i].salary);
return 0;
}
运行结果:
知识点总结:
通过学习,进一步掌握了结构体的用法,并复习了字符串相关知识。
学习心得:
熟悉了结构体语法后,题目并不难。