接下来就说一下我的代码的问题
一开始我的代码是这样的
#include<stdio.h>
struct{ //无名结构体类型
int num;
char name[10];
char sex;
char job;
union{
int clas;
char position[10];
}category;
}person[2];
int main()
{
int i;
printf("输入人员信息:\n");
for(i=0; i<2; i++)
{
scanf("%d%s%s%s",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
if(person[i].job == 's')
scanf("%d",&person[i].category.clas);
else if(person[i].job == 't')
scanf("%s",person[i].category.position);
else
printf("输入错误!");
}
printf("\n");
for(i=0;i<2;i++)
{
if(person[i].job == 's')
printf("%d\t%s\t%s\t%s\t%d",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.clas);
if(person[i].job == 't')
printf("%d\t%s\t%s\t%s\t%s",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
return 0;
}
/*
测试用例
101 Li f s 501
102 Wang m t prof
*/
问题:
scanf(“%d%s%s%s”,&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
错误:
这个里面都写成了%s类型
输入的时候要与scanf里面相对应;例如 scanf(“%s%s%s”,person),键盘输入时不要有空格
注意:
scanf(“%s”,person)不需要加地址符&
scanf(“%c”,&person)需要加地址符&
改正之后:
#include<stdio.h>
struct{ //无名结构体类型
int num;
char name[10];
char sex[3];
char job;
union{
int clas;
char position[10];
}category;
}person[2];
int main()
{
int i;
printf("输入人员信息:\n");
for(i=0; i<2; i++)
{
scanf("%d %s %s %c",&person[i].num,person[i].name,person[i].sex,&person[i].job);
if(person[i].job == 's')
scanf("%d",&person[i].category.clas);
else if(person[i].job == 't')
scanf("%s",person[i].category.position);
else
printf("输入错误!");
}
printf("\n");
printf("号码\t姓名\t性别\t职业\t职务(班级号/职称)\n\n");
for(i=0;i<2;i++)
{
if(person[i].job == 's')
printf("%d\t%s\t%s\t%c\t%d",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.clas);
if(person[i].job == 't')
printf("%d\t%s\t%s\t%c\t%s",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
printf("\n");
}
return 0;
}
/*
101 乐乐 女 s 501
102 赤赤 男 t prof
*/
运行结果: