#include<stdio.h>
int main()
{
char c;
scanf("%c",&c);
while(1)
{
if(c=='#')break;
if(c>='A'&&c<='z')c-=32;
printf("%c",c);
}
return 0;
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
不一定呢,如果一開始就輸入#就break出回圈,不會出現無線回圈了。如果一開始不是輸入#,那么while沒有break的條件,因此會死回圈~
uj5u.com熱心網友回復:
把 scanf("%c",&c);放在while(1){......}外面,只讀取鍵盤輸入一次,如果這一次機會if(c=='#')break;沒把握住,當然死回圈了,while(1)是永遠為真。當把 scanf("%c",&c);放到while(1){}內時,就會不停的去讀鍵盤輸入,然后if(c=='#')break;判斷,就有無限次機會了退出了。uj5u.com熱心網友回復:
因為你的回圈條件是 1 ,永遠為 true,scanf 又在回圈外面,導致你沒有機會重新輸入 c 來更新 c 的值而 scanf 放在回圈里,由于 scanf 本來是阻塞等待輸入,因此每一次回圈你都可以重新輸入 c ,這樣你就有機會來退出回圈,比如輸入 #
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273366.html
標籤:C語言
上一篇:小白求助
下一篇:折半查找求助
