浅汐ゞ 2023-04-08 16:55 采纳率: 100%
浏览 21
已结题

C语言进制各位数的和

#include<stdio.h>
int fun(int x,int r)
{int a=0;
while(x)
 {a+=x%r;
  x=x/r;
 }
 return a;
}
int main()
{int S1,S2,S3,i=0;
S1=S2=S3=0;
for(i=2992;i<=9999;i++)
{S1=fun(i,10);
 S2=fun(i,12);
 S3=fun(i,16);
 if(S1==S2&&S2==S3)
 printf("%d\n",i);}
return 0;
}

要求把输出2991到9999内十进制,十二进制和十六进制各个数的和相等的数,但我这个是输出结果是这样的

img

  • 写回答

2条回答 默认 最新

  • 个人练习生xx 2023-04-08 17:07
    关注

    你可以对比一下我的代码:

    #include <stdio.h>
    
    int sum_of_digits(int n, int base) {
        int sum = 0;
        while (n > 0) {
            sum += n % base;
            n /= base;
        }
        return sum;
    }
    
    int main() {
        int i;
        for (i = 2991; i <= 9999; i++) {
            int sum10 = sum_of_digits(i, 10);
            int sum12 = sum_of_digits(i, 12);
            int sum16 = sum_of_digits(i, 16);
            if (sum10 == sum12 && sum12 == sum16) {
                printf("%d\n", i);
            }
        }
        return 0;
    }
    
    
    

    输出结果为:
    2992
    2993
    2994
    2995
    2996
    2997
    2998
    2999
    3555
    3661
    3772
    3883
    3994
    4888
    4999
    5561
    5572
    5583
    5594
    5662
    5673
    5684
    5695
    5885
    5896
    5999

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月8日

悬赏问题

  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改