當前位置:編程學習大全網 - 源碼下載 - c語言 如下源碼,運行的時候 有些語句直接被跳過,原因何在?求詳解,

c語言 如下源碼,運行的時候 有些語句直接被跳過,原因何在?求詳解,

那是因為妳讀入單個字符的方式不對,

純粹的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]);//成績

}

}

}

}

運行:

  • 上一篇:北大青鳥java培訓:安卓手機遊戲開發培訓有什麽課程?
  • 下一篇:魔獸爭霸遊新手職業推薦
  • copyright 2024編程學習大全網