c語言1.2 詳解while
在寫c語言的過程中有時會添加調試語句來看自己寫到哪了,例如上一篇的計算整數(shù)有幾位的代碼
#include<stdio.h>
int main()4
int x;//定義變量
? int n=0;?
? ("%d",&x);?
? n++;?
? x/=10;?
? while(x>0) {
n++;??
x/=10;??
}
printf("%d\n",n);
? return 0;?
?}
只需要在while的循環(huán)里面加個printf("%d,%d",x,n);
就可以查看每次循環(huán)的步驟
例如輸入一個123456進去,運行之后就會把每次整除以及整除一次10,n自加一次顯示出來

或者也會經(jīng)常見到在代碼中加printf(“hr1/2/3......”);這也是一種用來調試的手段,來讓自己分清自己的代碼寫到哪了。
而代碼會有邏輯錯誤,即便成功編譯了或者運行成功了也會有邏輯錯誤
如果把整除x/=10;去掉,只留一個自增n++;那么代碼就會無限循環(huán)下去

上面用了兩次n++; x/=10;
如果把第一次的去掉,當然程序也可以順利運行,并可以仍可以計算出123456為6位數(shù)。
不過需要驗證
測試程序常使用邊界數(shù)據(jù),如有效范圍兩端的數(shù)據(jù),特殊的倍數(shù)等。
以上面的為例,假設去掉第一段n++;x/=10;了,就不能在計算0,0也是個位數(shù),在輸入的時候就不會達成while(x>0)的的條件
在前面多加一段n++,就會在0的基礎上先+1,之后再繼續(xù)整除,就不會出現(xiàn)無法計數(shù)0的情況
同樣也可以寫成這樣

用如果,否則的語句也可以避免無法計數(shù)0的情況,如果0沒有構成x>0這一條件,while就不會執(zhí)行循環(huán),否則就執(zhí)行n++;然后程序結束,最后仍計數(shù)0為1位數(shù)
不過要記得在提交作業(yè)的時候,要把輸入的調試用的語句加上//注釋,避免系統(tǒng)報錯。