qqpoilkj 发表于 2022-3-10 16:13:30

如何提取一个数的指定位数

C语言如何写一个提取一个数的个位、十位、百位的程序?

jackz007 发表于 2022-3-10 16:13:31

本帖最后由 jackz007 于 2022-3-10 19:09 编辑

#include <stdio.h>

int foo(int d[] , int n , int c)
{
      int r                                                                                    ;
      r = c                                                                                    ;
      if(n) {
                r = foo(d , n / 10 , c + 1)                                                      ;
                d = n % 10                                                            ;
      }
      return r                                                                                 ;
}

int main(void)
{
      int d , n , m                                                                        ;
      printf("请输入一个数字 : ")                                                                ;
      scanf("%d" , & n)                                                                        ;
      m = foo(d , n , 0)                                                                         ;
      printf("数字 %d 的百十个位数依次为 : %d , %d , %d\n" , n , d , d , d) ;
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
请输入一个数字 : 135246
数字 135246 的百十个位数依次为 : 2 , 4 , 6

D:\\C>

傻眼貓咪 发表于 2022-3-10 16:18:32

#include <stdio.h>

int main(){
        int a, b, c, num = 758;
        a = num/100; // 百位数
        b = num/10%10; // 十位数
        c = num%10; // 个位数
        printf("%d, %d, %d", a, b, c);
        return 0;
}

jhq999 发表于 2022-3-10 16:58:05

本帖最后由 jhq999 于 2022-3-10 17:05 编辑

int num=47343222;
if(num)for(;num;num/=10)printf("%d   ",num%10);
else printf{"0");

傻眼貓咪 发表于 2022-3-10 17:30:39

#include <stdio.h>

int unit(int num) { return num % 10; }
int ten(int num) { return num / 10 % 10; }
int hundred(int num) { return num / 100 % 10; }

int extract(int num, int(*f)(int)) {
    return f(num);
}

int main()
{
    int num = 12345678;

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

    return 0;
}

jhq999 发表于 2022-3-10 20:24:40

本帖最后由 jhq999 于 2022-3-10 20:57 编辑

             
      int num=47343222,digit=9;
      if(num&&digit>0)
        {
                for(digit--;num;num/=10,digit--){if(!digit)printf("%d   ",num%10),num=0;}
                if(digit>-1)printf("位数超过");
        }
        else printf("0");
页: [1]
查看完整版本: 如何提取一个数的指定位数