鱼C论坛

 找回密码
 立即注册
查看: 1462|回复: 5

[已解决]如何提取一个数的指定位数

[复制链接]
发表于 2022-3-10 16:13:30 | 显示全部楼层 |阅读模式
5鱼币
C语言如何写一个提取一个数的个位、十位、百位的程序?
最佳答案
2022-3-10 16:13:31
本帖最后由 jackz007 于 2022-3-10 19:09 编辑
  1. #include <stdio.h>

  2. int foo(int d[] , int n , int c)
  3. {
  4.         int r                                                                                      ;
  5.         r = c                                                                                      ;
  6.         if(n) {
  7.                 r = foo(d , n / 10 , c + 1)                                                        ;
  8.                 d[r - c - 1] = n % 10                                                              ;
  9.         }
  10.         return r                                                                                   ;
  11. }

  12. int main(void)
  13. {
  14.         int d[20] , n , m                                                                          ;
  15.         printf("请输入一个数字 : ")                                                                ;
  16.         scanf("%d" , & n)                                                                          ;
  17.         m = foo(d , n , 0)                                                                         ;
  18.         printf("数字 %d 的百十个位数依次为 : %d , %d , %d\n" , n , d[m - 3] , d[m - 2] , d[m - 1]) ;
  19. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. 请输入一个数字 : 135246
  4. 数字 135246 的百十个位数依次为 : 2 , 4 , 6

  5. D:\[00.Exerciese.2022]\C>
复制代码

最佳答案

查看完整内容

编译、运行实况:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 16:13:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-3-10 19:09 编辑
  1. #include <stdio.h>

  2. int foo(int d[] , int n , int c)
  3. {
  4.         int r                                                                                      ;
  5.         r = c                                                                                      ;
  6.         if(n) {
  7.                 r = foo(d , n / 10 , c + 1)                                                        ;
  8.                 d[r - c - 1] = n % 10                                                              ;
  9.         }
  10.         return r                                                                                   ;
  11. }

  12. int main(void)
  13. {
  14.         int d[20] , n , m                                                                          ;
  15.         printf("请输入一个数字 : ")                                                                ;
  16.         scanf("%d" , & n)                                                                          ;
  17.         m = foo(d , n , 0)                                                                         ;
  18.         printf("数字 %d 的百十个位数依次为 : %d , %d , %d\n" , n , d[m - 3] , d[m - 2] , d[m - 1]) ;
  19. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. 请输入一个数字 : 135246
  4. 数字 135246 的百十个位数依次为 : 2 , 4 , 6

  5. D:\[00.Exerciese.2022]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 16:18:32 From FishC Mobile | 显示全部楼层
  1. #include <stdio.h>

  2. int main(){
  3.         int a, b, c, num = 758;
  4.         a = num/100; // 百位数
  5.         b = num/10%10; // 十位数
  6.         c = num%10; // 个位数
  7.         printf("%d, %d, %d", a, b, c);
  8.         return 0;
  9. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 16:58:05 | 显示全部楼层
本帖最后由 jhq999 于 2022-3-10 17:05 编辑
  1. int num=47343222;
  2. if(num)for(;num;num/=10)printf("%d   ",num%10);
  3. else printf{"0");
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 17:30:39 | 显示全部楼层
  1. #include <stdio.h>

  2. int unit(int num) { return num % 10; }
  3. int ten(int num) { return num / 10 % 10; }
  4. int hundred(int num) { return num / 100 % 10; }

  5. int extract(int num, int(*f)(int)) {
  6.     return f(num);
  7. }

  8. int main()
  9. {
  10.     int num = 12345678;

  11.     // 提取一个数的指定位数
  12.     printf("%d\n", extract(num, unit)); // 个位数
  13.     printf("%d\n", extract(num, ten)); // 十位数
  14.     printf("%d\n", extract(num, hundred)); // 百位数

  15.     return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 20:24:40 | 显示全部楼层
本帖最后由 jhq999 于 2022-3-10 20:57 编辑
  1.                
  2.         int num=47343222,digit=9;
  3.         if(num&&digit>0)
  4.         {
  5.                 for(digit--;num;num/=10,digit--){if(!digit)printf("%d   ",num%10),num=0;}
  6.                 if(digit>-1)printf("位数超过");
  7.         }
  8.         else printf("0");
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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