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