PTA 6-9 統計個位數字

本題要求實現一個函數,可統計任一整數中某個位數出現的次數。例如-21252中,2出現了3次,則該函數應該返回3。

函數接口定義:

int Count_Digit ( const int N, const int D );

其中ND都是用戶傳入的參數。N的值不超過int的範圍;D是[0, 9]區間內的個位數。函數須返回ND出現的次數。

裁判測試程序樣例:

#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 numFlag[10] = { 0 }, m, a;
    //分情況判斷,負數轉正數,由0找0的特殊情況
    if (N < 0)
        m = -N;
    else m = N;
    if (m == 0 && D == 0)
        return 1;
	//取模來取出每位數,存入對應數組,重複數字每出現一次就加一
    while (m)
    {
        a = m % 10;
        m = m / 10;
        numFlag[a]++;
    }
    return numFlag[D];
}

解釋說明

非常簡單,用numFlag[10]數組來存放出現的每一位數字,出現一次就加一。
有兩個特殊情況要考慮到,N爲負數爲0
1、負數要轉化成正數,否則數組不能存入數據。
2、爲0時,找其他任何數都是0,唯獨找0時是1,如果放入下面的循環中判斷,可能會讓0的數量出錯,所以單獨拿出來寫了個判斷。可能不夠簡潔了,如果你有更好的寫法,望不吝賜教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章