本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。