乐趣区

关于c:PTA-69-统计个位数字-15-分

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

}
退出移动版