您的位置:首页 > 理论基础

第16周 oj Problem B: 结构体---职工信息结构体

2016-12-16 16:41 232 查看
问题及代码:

/*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<stdio.h>
#include<string.h>
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;
}

运行结果:



知识点总结:

通过学习,进一步掌握了结构体的用法,并复习了字符串相关知识。

学习心得:

熟悉了结构体语法后,题目并不难。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息