您的位置:首页 > 其它

第16周OJ实践2 结构体---职工信息结构体

2016-12-16 21:35 316 查看
问题及代码:


Problem B: 结构体---职工信息结构体

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1140  Solved: 646

[Submit][Status][Web
Board]


Description

编写程序,定义一个存放职工信息的结构体类型,职工信息包括职工姓名、工作年限、工资总额。初始化5名职工的信息,对工作年限超过30年的职工每人加100元工资,要求分别输出工资变化之前和之后的所有职工的信息。


Input

输入5个员工的职工姓名、工作年限、工资总额


Output

输出两部分,第一部分输出工资变化之前所有职工的信息,第二部分输出工资变化之后的所有职工的信息


Sample Input

zhang1 5 1000
zhang2 10 2000
zhang3 20 3000
zhang4 40 4000
zhang5 50 5000


Sample Output

原始工资
姓名    年限    工资
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


/*烟台大学计算机学院
作者:景怡乐
完成时间:2016年12月16日
*/
#include <stdio.h>
#include <stdlib.h>
#define n 5//n在函数里一直等于5,是常量.以后n可以换位任何值,程序更全面
struct staff
{
char name[10];
int year;
int salary;
};
int main()
{
int i;
struct staff a
;
for(i=0;i<n;i++)
scanf("%s%d%d",a[i].name,&a[i].year,&a[i].salary);
printf("原始工资\n");
printf("姓名 年限 工资\n");
for(i=0;i<n;i++)
printf("%s %d %d\n",a[i].name,a[i].year,a[i].salary);
printf("加薪后工资\n");
printf("姓名 年限 工资\n");
for(i=0;i<n;i++)
{
if(a[i].year>=30)
a[i].salary=a[i].salary+100;
printf("%s %d %d\n",a[i].name,a[i].year,a[i].salary);
}
return 0;
}


运行结果:



知识点总结:

#define是宏定义的意思

宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。

宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。

宏定义其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令

学习心得:数组第一位从0开始,这点要注意一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: