那是因為妳讀入單個字符的方式不對,
純粹的scanf("%c"),或者getchar()都會把妳上壹次輸入的回車符(\n)讀入了。
然後妳就讀入了壹個回車符。
正確的方式是讀入到壹個字符串,再取字符串首位。
代碼:
//老師?學生?信息放在壹起?並打印出來#include<stdio.h>
union?condition
{
int?score[4];//學生4科成績
char?situation[40];//教師工作情況
};
struct?personal
{
int?num;//編號
char?name[10];//姓名
char?sex;//性別
char?kind;//篩選?t?或?s
union?condition?change;
};
struct?personal?information[2];//創建兩個個人信息表
void?main()
{
int?i,?j;
for?(i?=?0;?i?<?2;?i++)
{
printf("Please?input?num:");//編號
scanf("%d",?&information[i].num);
char?sex[16];
printf("Enter?the?M?or?the?W:");//性別?
scanf("%s",?sex);
information[i].sex?=?sex[0];
printf("Enter?the?name:");?//名字
scanf("%s",?information[i].name);
char?ts[16];
printf("please?change?t?or?s:");?//?t?或?s
scanf("%s",?ts);
information[i].kind?=?ts[0];
if?('t'?==?information[i].kind)//?t?為教師工作情況
{
printf("Please?enter?the?situation?:");
scanf("%s",?information[i].change.situation);
}
else?//?s為?學生成績
{
for?(j?=?0;?j?<?4;?j++)
{
printf("please?enter?no.%d?score:",?j);
scanf("%d",?&information[i].change.score[j]);
}
}
}
for?(i?=?0;?i?<?2;?i++)?//打印以下
{
printf("%d\n",?information[i].num);//編號
printf("%s\n",?information[i].name);//姓名
printf("%c\n",?information[i].sex);//性別
if?('t'?==?information[i].kind)
{
printf("%s",?information[i].change.situation);//工作情況
}
else
{
for?(j?=?0;?j?<?4;?j++)
{
printf("%d",?information[i].change.score[j]);//成績
}
}
}
}
運行: