|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|