|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 名字什么的随便 于 2020-8-9 11:33 编辑 #include <stdio.h>
struct system
{
int number;
char name[20];
char sex;
char job;
union
{
char classroom[20];//学生
char position[20];//老师
}category;
}person[2];
void main()
{
int i;
for(i=0;i<2;i++)//输入
{
printf("请输入第%d名成员的号码:",i+1);
scanf("%d",&person[i].number);
printf("请输入第%d名成员的姓名:",i+1);
scanf("%s",person[i].name);
printf("请输入第%d名成员的性别(F/M):",i+1);//F is female,M is male
scanf("%c",&person[i].sex);
printf("请输入第%d名成员的职业(T/S):",i+1);//T is teacher,S is student
scanf("%c",&person[i].job);
if(person[i].job=='T')
{
printf("请输入第%d名成员的教务:",i+1);
scanf("%s",person[i].category.position);
}
if(person[i].job=='S')
{
printf("请输入第%d名成员的班级:",i+1);
scanf("%s",person[i].category.classroom);
}
}
for(i=0;i<2;i++)//输入
{
printf("Input info: ");
scanf("%d %s %c %c", &person[i].number, person[i].name, &(person[i].sex), &(person[i].job));
if(person[i].job == 'S'){ //如果是学生
scanf("%s",person[i].category.classroom);
}else{ //如果是老师
scanf("%s",person[i].category.position);
}
}
}
如果使用第一个for循环的输入方式时为什么会出现性别无法输入的情况,而第二个for循环则没有???编译器是visualc++6.0的。
因为用第二种方式程序会以为你输入的性别、职业全都属于 person[ i ].name 这个字符串。而且你第一种方式也有点问题,帮你改了改:
#include <stdio.h>
struct system
{
int number;
char name[20];
char sex;
char job;
union
{
char classroom[20];//学生
char position[20];//老师
}category;
}person[2];
int main()
{
int i;
for(i=0;i<2;i++)//输入
{
printf("请输入第%d名成员的号码:",i+1);
scanf("%d",&person[i].number);
printf("请输入第%d名成员的姓名:",i+1);
scanf("%s",person[i].name);
getchar(); // 过滤换行
printf("请输入第%d名成员的性别(F/M):",i+1);//F is female,M is male
scanf("%c",&person[i].sex);
getchar(); // 过滤换行
printf("请输入第%d名成员的职业(T/S):",i+1);//T is teacher,S is student
scanf("%c",&person[i].job);
if(person[i].job=='T')
{
printf("请输入第%d名成员的教务:",i+1);
scanf("%s",person[i].category.position);
}
if(person[i].job=='S')
{
printf("请输入第%d名成员的班级:",i+1);
scanf("%s",person[i].category.classroom);
}
}
return 0;
}
|
|