本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-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

做法一

  1. 如果是负数,需要转换为正数处理
  2. 将数字拆开放入数组
  3. 使用 for 遍历来判断是否有相同的数字
int Count_Digit ( const int N, const int D ) {

    int arr[10] = {0};
    int num = N;
    int count = 0;
    int numCount = 0;

    if (num < 0) {
        num = -num;
    }

    while (num >= 10) {
        arr[count++] = num % 10;
        num /= 10;
    }

    arr[count] = num;

    for (int i = 0; i <= count; i++) {

        if (arr[i] == D) {
            numCount++;
        }

    }

    return numCount;

}

做法二

  1. 如果是负数,需要转换为正数处理
  2. 使用 do ... while 循环先判断一次,可以解决传入值为 0 的问题,当 num 为 0 时,count = 1
  3. 循环体中将 num 拆开,每拆下来一个数字就比较是否相同,如果相同,count 加 1
int Count_Digit ( const int N, const int D ) {

    int num = N;
    int count = 0;

    if (num < 0) {
        num = -num;
    }

    do {
    
        if (D == num % 10) {
            count++;
        }

        num /= 10;

    } while (num > 0);

    return count;

}

莉莉妖
1 声望0 粉丝