C语言源代码如下。运行时直接跳过一些语句。原因是什么?求详细解释,
Pure scanf("%c ")或getchar()将读取您上次输入的回车符(\n)。
然后你读一个回车。
正确的做法是读入一个字符串,然后先取字符串。
代码:
//老师?学生?信息一起?并打印出来。
# include & ltstdio.h & gt
工会?情况
{
int?得分[4];//学生4科成绩
夏尔?情况[40];//教师的工作情况
};
struct?个人的
{
int?num//数字
夏尔?名称[10];//名称
夏尔?性;//性别
夏尔?善良;//过滤?t?还是?s
工会?条件?改变;
};
struct?私人的?信息[2];//创建两个个人信息表
作废?主()
{
int?我,?j;
为了什么?(我?=?0;?我?& lt?2;?i++)
{
printf("拜托?输入?num:");//数字
scanf("%d ",& amp信息[i]。num);
夏尔?性[16];
printf("Enter?那个?m?还是?那个?w:“);//性别?
scanf("%s ",性);
信息[i]。性?=?性[0];
printf("Enter?那个?姓名:“);?//名称
scanf("%s ",信息[i]。姓名);
夏尔?ts[16];
printf("拜托?改变?t?还是?s:“);?//?t?还是?s
scanf("%s ",ts);
信息[i]。善良?=?ts[0];
如果?(' t '?==?信息[i]。善良)//?t?为教师工作
{
printf("拜托?进入?那个?情况?:");
scanf("%s ",信息[I]. change . situation);
}
不然呢?//?s是?学生的成绩
{
为了什么?(j?=?0;?j?& lt?4;?j++)
{
printf("拜托?进入?没有%d?分数:“,?j);
scanf("%d ",& ampinformation[I]. change . score[j]);
}
}
}
为了什么?(我?=?0;?我?& lt?2;?i++)?//打印以下内容
{
printf("%d\n ",信息[i]。num);//数字
printf("%s\n ",信息[i]。姓名);//名称
printf("%c\n ",信息[i]。性);//性别
如果?(' t '?==?信息[i]。善良)
{
printf("%s ",信息[I]. change . situation);//工作情况
}
其他
{
为了什么?(j?=?0;?j?& lt?4;?j++)
{
printf("%d ",information[I]. change . score[j]);//结果
}
}
}
}运行: