本题要求实现一个函数,可统计任一整数中某个位数呈现的次数。例如 -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
做法一
- 如果是正数,须要转换为负数解决
- 将数字拆开放入数组
- 应用 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;
}
做法二
- 如果是正数,须要转换为负数解决
- 应用 do … while 循环先判断一次,能够解决传入值为 0 的问题,当 num 为 0 时,count = 1
- 循环体中将 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;
}