一題多種思路:
1 //題目:輸入一串數字,判斷有幾位數並輸出 2 // ------------------------分 隔 符--------------------------- 3 # include<stdio.h> 4 # include<math.h> 5 int main(){ 6 //-----------------對數思路---------------- 7 int i,o; //i是你待會從鍵盤邀輸入的變量 8 printf("本程序將為你判斷你輸入的整數是幾位數,請輸入一串數字:\n"); 9 scanf("%d",&i); 10 if(i==0) 11 printf("該整數位數有1位\n"); 12 else{ 13 o=log10(i*10); //可以換成o=ceil(log10(i+1)); 14 printf("對數:該整數位數有%d位\n",o);} 15 16 //-----------------循環思路---------------- 17 o=1; //最低也是一位數 18 while(i/=10) //即直到算到0/10=0的時候就結束. 19 { 20 ++o; //++o表達式的值作為循環體,不是o的值循環 21 } 22 printf("循環:該整數位數有%d位",o); 23 return 0; 24 }
Q:循環哪里怎么理解?
A:int o=1;
while(i/=10){
++o;
}
printf("位數是%d",o);
-----------------備忘錄----------------
i=i/10
i=1/10 //當i等於4時
0…1 ++o=2; o=1
i=0/10
0 不符合循環條件 執行printf語句o=1
i=i/10
i=10/10
1…0 ++o=2; o=1;
i=1/10
0…1 ++o=3; o=2;
i=0/10
0 不符合循環條件 執行printf語句o=2
i=i/10
i=999/10 //當i等於999時
99…9 ++o=2;o=1;
i=99/10
9…9 ++o=3;o=2;
i=9/10
0…9 ++o=4; o=3
i=0/10
0 不符合循環條件 執行printf語句o=3
