文章目录
- 题目
- 函数接口定义
- 裁判测试程序样例
- 输入样例
- 输出样例
- 题解
- 解题思路
- 完整代码
- AC代码
编程练习题目集目录
题目
要求实现一个函数,可统计任一整数中某个位数出现的次数。例如 − 21252 -21252 −21252 中, 2 2 2 出现了 3 3 3 次,则该函数应该返回 3 3 3。
函数接口定义
int Count_Digit ( const int N, const int D );
其中N和D都是用户传入的参数。 N N N 的值不超过 i n t int int 的范围; D D D 是 [ 0 , 9 ] [0, 9] [0,9] 区间内的个位数。函数须返回 N N N 中 D D 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,如果 N = 0 N = 0 N=0 直接返回 1 1 1;如果 N < 0 N < 0 N<0,先将 N N N 变为整数(乘以 − 1 -1 −1 或者用 a b s abs abs 函数);创建一个数组用来存储 0 − 9 0-9 0−9 的数字个数,并初始化为 0 0 0,对非 0 0 0 的 N N N 进行求模取余,将每一位数对应的个数存进数组,返回数组中的第 D D D 个数字即可。
完整代码
#include <math.h>
#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;
}
/* 你的代码将被嵌在这里 */
int Count_Digit(const int N, const int D)
{
int x, n = fabs(N), flag[10] = { 0 };
if (n == 0)
{
return 1;
}
while (n)
{
x = n % 10;
n /= 10;
flag[x]++;
}
return flag[D];
}
AC代码
int Count_Digit(const int N, const int D)
{
int x, n = N, flag[10] = { 0 };
if (n == 0)
return 1;
if (n < 0)
n *= -1;
while (n)
{
x = n % 10;
n /= 10;
flag[x]++;
}
return flag[D];
}