用c语言写出在10000内的所有水仙花数
答案:2 悬赏:70 手机版
解决时间 2021-02-05 16:13
- 提问者网友:寂寞撕碎了回忆
- 2021-02-04 19:49
用c语言写出在10000内的所有水仙花数
最佳答案
- 五星知识达人网友:过活
- 2021-02-04 20:54
下面是程序运行结果
下面是实现代码,您可以参考一下:
#include
int m3(int n)
{
return (n*n*n);
}
int main()
{
int n,m;
int sum;
for(n=1;n<10000;n++)
{
sum = 0;
m = n;
while(m)
{
sum += m3(m%10);
m=m/10;
}
if(sum==n)
printf("number: %d
", n);
}
}追问谢谢 不好意思这么久才回你
下面是实现代码,您可以参考一下:
#include
int m3(int n)
{
return (n*n*n);
}
int main()
{
int n,m;
int sum;
for(n=1;n<10000;n++)
{
sum = 0;
m = n;
while(m)
{
sum += m3(m%10);
m=m/10;
}
if(sum==n)
printf("number: %d
", n);
}
}追问谢谢 不好意思这么久才回你
全部回答
- 1楼网友:往事隔山水
- 2021-02-04 21:05
水仙花数具备“各位数字的位数次方和等于其自身”的性质。遍历1~10000之间可能有解的部分,先测出其数字的位数n,再分离数字的各位,求各位数字的n次方的和便是结果。具体操作可先将要判断的数字转换为数字字符串,这样求其位数和分离数位都极为方便。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc,char *argv[]){
int n,m,i,j,k,t;
char a[5];
printf("The results are as follows:\n");
for(i=1;i<10000;i++){//遍历1~10000部分数据
n=strlen(itoa(i,a,10));//转为数字字符串并计算长度(十进制数位数)n
for(m=j=0;a[j];j++){//分离每一位数字
for(t=1,k=0;k++ m+=t;//求各位数字n次方的和m
}
if(m==i){//判断是否为"水仙花"
printf("%5d = ",i);//是则输出结果
for(j=0;a[j];printf(j }
}
return 0;
}
试运行结果如下图:追问谢谢 不好意思这么久才回你
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc,char *argv[]){
int n,m,i,j,k,t;
char a[5];
printf("The results are as follows:\n");
for(i=1;i<10000;i++){//遍历1~10000部分数据
n=strlen(itoa(i,a,10));//转为数字字符串并计算长度(十进制数位数)n
for(m=j=0;a[j];j++){//分离每一位数字
for(t=1,k=0;k++
}
if(m==i){//判断是否为"水仙花"
printf("%5d = ",i);//是则输出结果
for(j=0;a[j];printf(j
}
return 0;
}
试运行结果如下图:追问谢谢 不好意思这么久才回你
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯