鱼C论坛

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

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

[复制链接]
发表于 2022-3-10 16:13:30 | 显示全部楼层 |阅读模式
5鱼币
C语言如何写一个提取一个数的个位、十位、百位的程序?
最佳答案
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[r - c - 1] = n % 10                                                              ;
        } 
        return r                                                                                   ;
}

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

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

D:\[00.Exerciese.2022]\C>

最佳答案

查看完整内容

编译、运行实况:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[r - c - 1] = n % 10                                                              ;
        } 
        return r                                                                                   ;
}

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

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

D:\[00.Exerciese.2022]\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 16:18:32 From FishC Mobile | 显示全部楼层
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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