do{printf("\n是Y/否N進(jìn)行新的計(jì)算: (Y/N) ? ");// getchar();scanf("%c",&W);printf("\n%c,%d",W,W);if(((W=='Y')||(W=='y'))!=1)break;}while(1);經(jīng)過測試發(fā)現(xiàn)若是輸入Y或y后,第二次自動(dòng)跳出。檢測發(fā)現(xiàn)是scanf未能連續(xù)輸入。為什么為什么?????????????
2 回答

回首憶惘然
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
do { printf("\n是Y/否N進(jìn)行新的計(jì)算: (Y/N) ? ");
// getchar();
scanf("%c",&W);
printf("\n%c,%d",W,W);
fflush(stdin);
if(((W=='Y')||(W=='y'))!=1) break;
} while(1);
這樣既可
知道為什么么?假設(shè)你只是輸入一個(gè) Y 然后回車,scanf函數(shù)也只是讀取了Y這個(gè)字符而已,你的回車符沒有被讀走,于是下一次循環(huán)的時(shí)候,scanf讀取到的就是一個(gè)回車符,因?yàn)橥顺隽搜h(huán),就那么簡單
添加回答
舉報(bào)
0/150
提交
取消