PTA測試基礎題--統計個位數字
阿新 • • 發佈:2018-12-30
本題要求實現一個函式,可統計任一整數中某個位數出現的次數。例如-21252中,2出現了3次,則該函式應該返回3。
函式介面定義:
int Count_Digit ( const int N, const int D );
其中N
和D
都是使用者傳入的引數。N
的值不超過int
的範圍;D
是[0,
9]區間內的個位數。函式須返回N
中D
出現的次數。
裁判測試程式樣例:
#include <stdio.h> int Count_Digit ( const int N, const int D ); int main() { int N, D; scanf("%d %d", &N, &D); printf("%d\n", Count_Digit(N, D)); return 0; } /* 你的程式碼將被嵌在這裡 */
輸入樣例:
-21252 2
輸出樣例:
3
我的初始解答
int Count_Digit ( const int N, const int D )
{
int count = 0, n = N, temp;
while(n){
temp = n%10;
n /= 10;
if(temp == D) count++;
}
return count;
}
這裡面有兩個錯誤:
1.沒有注意到N可以是負數。
我在迴圈中加了一句:printf("%d,%d\n",temp,n);執行結果如下:
2.沒有注意到N為0的狀況。當N為0時,如果D也是0,則應該輸出1,但是我的程式根本不會進入迴圈中,所以要保證先做一次迴圈判斷才可以。
所以改正後的程式碼如下:
int Count_Digit ( const int N, const int D )
{
int count = 0, n = N>0?N:-N, temp;
do{
temp = n%10;
n /= 10;
if(temp == D) count++;
}while(n);
return count;
}