// 结构体数组person[5]原有五个记录: zhou,wu,li,zheng,wang
// 现在,需要在zheng的位置增加1个记录test,那么,zheng和wang就相应往后移动.
// 测试时输入:
// test 33 2000
// 输出6个记录
#include
#include //需要调用strcpy()
//staff[5]与struct staff的名称一样,建议将staff[5]改为其它名称,例如 person[5]
struct staff
{
char name[20];
int age;
float salary;
}person[5]={{"zhou",22,1500},{"wu",29,1200},{"li",30,900},{"zheng",32,900},{"wang",29,990}};
//原代码struct staff 1[6]; //变量名怎么看似是数字"1"? 将其改为其它名称,例如 L
struct staff L[6];
int main()
{
int i; //int j; //j可以不用
int k;
//这些 staff a[3].name 不需要在变量前面加staff
//原代码scanf("%s%d%d",staff a[3].name,staff a[3].age,staff a[3].salary);
//for(i=0;i<3;i++)
// staff 1[i]=staff[i];
//for(j=3;j<=5;j++)
// staff 1[j+1]=staff[j];
//手工输入一个记录. 浮点float用%f. &L[3].age和&L[3].salary前面要加&
scanf("%s%d%f",L[3].name,&L[3].age,&L[3].salary);
for(i=0;i<3;i++)
{
strcpy(L[i].name,person[i].name); //字符串的赋值用函数strcpy()
L[i].age=person[i].age;
L[i].salary=person[i].salary;
}
for(i=3;i<5;i++) //i不能等于5,因为person[5]的下标范围是0到4
{
strcpy(L[i+1].name,person[i].name); //字符串的赋值用函数strcpy()
L[i+1].age=person[i].age;
L[i+1].salary=person[i].salary;
}
for(k=0;k<6;k++) //屏幕输出6个记录
{
printf("%s %d %0.2f",L[k].name,L[k].age,L[k].salary); //%0.2f"表示保留2位小数
printf("\n"); //每个记录要隔行
}
//原代码printf("%s%d%d",staff 1[k].name,staff 1[k].age,staff 1[k].salary);
return 0;
}