函数题 6-9 统计个位数字【PAT】
文章目录
- 题目
- 函数接口定义
- 裁判测试程序样例
- 输入样例
- 输出样例
- 题解
- 解题思路
- 完整代码
- 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];
}