本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义:
int CountDigit( int number, int digit );
其中number
是不超过长整型的整数,digit
为[0, 9]区间内的整数。函数CountDigit
应返回number
中digit
出现的次数。
裁判测试程序样例:
#include <stdio.h>
int CountDigit( int number, int digit );
int main()
{
int number, digit;
scanf("%d %d", &number, &digit);
printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-21252 2
输出样例:
Number of digit 2 in -21252: 3
解题思路:遇到这种问题一般是取余数的方法拆开然后跟给定的数字匹配,不过要考虑负数情况,可以在前面增加一个判断是否为负数,是负数就取相反数。
int CountDigit(int number, int digit) {
int count=0;
if (number < 0)
number = -number;
if (number == 0 && digit == 0)
return 1;
else if (number == 0 && digit != 0)
return 0;
else{
while (number) {
if (number % 10 == digit)
count++;
number /= 10;
}
return count;
}
}
不过这道题在测试0时有漏洞,我当时在判定number为0时不考虑digit的取值,直接return 1也能通过。