2.统计个位数字
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-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
思路分析:
问题:
- N为负数且不连续出现
- 如何将N中各数取出来
- 如何判度N中有几个数和D相同
解决:
- 利用abs() 取绝对值,利于存数比较
- 利用一维数组存储将取完绝对值的N的各位数字保存
- 依次遍历数组,找到与D相同的数字,设置一个变量count计数
- 补充:还有当N=0且D=0 时,此时count=1的情况;
实现代码:
int Count_Digit ( const int N, const int D ){
int n = abs(N);
int a[10];
int i = 0;
int count = 0;
if(N == 0 && D == 0) count = 1;
for(i = 0;n > 0;i++){
a[i] = n %10;
n /= 10;
}
for(int j = 0;j < i;j++){
if(a[j] == D){
count++;
}
}
return count;
}