编程练习题目集目录
题目
要求实现一个函数,可统计任一整数中某个位数出现的次数。例如 − 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];
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |