gpt4 book ai didi

部分算法的 C 程序,重点是寻找类阿姆斯特朗数

转载 作者:行者123 更新时间:2023-11-30 19:44:25 24 4
gpt4 key购买 nike

我的 C 程序有问题。它的想法类似于阿姆斯特朗数字检查。假设输入数字是123。程序需要检查条件是否成立,例如123=1^1+2^2+3^3。我知道如何添加数字,但在幂方面有问题。很明显,我需要一个从 1 到位数的幂循环。在阿姆斯特朗数字算法中,每个数字都有相似的功效。例如153=1^3+5^3+3^3。这是我到目前为止所拥有的:

#include<stdio.h>
int main()
{
int n,d,s=0,o,i,k;
printf("n=");scanf("%d",&n);
d=n;
while(d!=0)
{
o=d%10;
s=s+o;
d=d/10;
k++
}

printf("sum:%d",s);
printf("number of digits:%d",k);
return 0;
}

感谢您的回答。

最佳答案

首先需要获取数字的长度,用于确定需要进入循环多少次来计算每个位。

例如数字123,您首先需要知道该数字是3位len,然后您可以将数字3乘以3次,将数字2乘以两次,将数字1乘以一次。

我使用临时字符串来实现此目的

这是代码,您可以稍微修改一下

#include <stdio.h>
#include <string.h>

#define MAX_NUM_LEN 16

int main()
{
char tmp_num[MAX_NUM_LEN] = {0};
int len,n,d,s=0,o,i,tmp_len, tmp_o;
printf("n=");scanf("%d",&n);
sprintf(tmp_num, "%d", n);
len = strlen(tmp_num);
tmp_len = len;
d=n;
while(d!=0)
{
o=d%10;
for (tmp_o = 1, i = tmp_len; i > 0; i--)
tmp_o *= o;
s=s+tmp_o;
d=d/10;
tmp_len--;
}

printf("sum:%d\n",s);
printf("number of digits:%d\n",len);
return 0;
}

结果:

enter image description here

关于部分算法的 C 程序,重点是寻找类阿姆斯特朗数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com