函数题 6-9 统计个位数字【PAT】

打印 上一主题 下一主题

主题 696|帖子 696|积分 2088

编程练习题目集目录
题目

  要求实现一个函数,可统计任一整数中某个位数出现的次数。例如                                    −                         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 出现的次数。
裁判测试步伐样例

  1. #include <stdio.h>
  2. int Count_Digit(const int N, const int D);
  3. int main()
  4. {
  5.         int N, D;
  6.         scanf("%d %d", &N, &D);
  7.         printf("%d\n", Count_Digit(N, D));
  8.         return 0;
  9. }
  10. /* 你的代码将被嵌在这里 */
复制代码
输入样例

   -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 个数字即可。
完整代码

  1. #include <math.h>
  2. #include <stdio.h>
  3. int Count_Digit ( const int N, const int D );
  4. int main()
  5. {
  6.     int N, D;
  7.     scanf("%d %d", &N, &D);
  8.     printf("%d\n", Count_Digit(N, D));
  9.     return 0;
  10. }
  11. /* 你的代码将被嵌在这里 */
  12. int Count_Digit(const int N, const int D)
  13. {
  14.     int x, n = fabs(N), flag[10] = { 0 };
  15.     if (n == 0)
  16.     {
  17.         return 1;
  18.     }
  19.     while (n)
  20.     {
  21.         x = n % 10;
  22.         n /= 10;
  23.         flag[x]++;
  24.     }
  25.     return flag[D];
  26. }
复制代码
AC代码

  1. int Count_Digit(const int N, const int D)
  2. {
  3.         int x, n = N, flag[10] = { 0 };
  4.         if (n == 0)
  5.                 return 1;
  6.         if (n < 0)
  7.                 n *= -1;
  8.         while (n)
  9.         {
  10.                 x = n % 10;
  11.                 n /= 10;
  12.                 flag[x]++;
  13.         }
  14.         return flag[D];
  15. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表