编程题:
判断Armstrong数(阿姆斯壮数)
Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:
153=1^3+5^3+3^3 1634=1^4+6^4+3^4+4^4
返回主页 [C语言 P1862] 编程题: 判断Armstrong数(阿姆斯壮数) Armstrong 数,就是n位数的各位数的n 学习人数: 200 正确率: ??% 题目描述 已通过 编程题: 判断Armstrong数(阿姆斯壮数) Armstrong 数,就是n位数的各位数的n次方之和等于该数,如: 153=1^3+5^3+3^3 1634=1^4+6^4+3^4+4^4 上一题下一题 加入错题本 个人笔记 请输入你的答案 4 个回答 (点击展开回答) yuantao1224 2024年10月23日 23:15 #include #define N int isnum(int a,int n){ int sum=0,mode =1,orignalnum=a,anlydata; while(a){ anlydata = a%10; for(int i = 0;i using namespace std; static int length=0; long long transform(long long number) { if(number==0) { return 0; } int x=number%10; length++; long long portion=transform(number/10); if(x==0) { return x+portion; } long long power=1; for(int i=0;i #include #include #include int main(void) { int num,number[20],n=0,n1,sum=0;//数字 输入的每位数 数组下标 求和 puts("请输入数字(>=100)"); scanf("%d", &num); if (num < 100) { puts("数字必须(>=100)"); } else { n1 = num; //n1:n副本 while (n1>0) { number[n] =n1%10 ; n1 /= 10; n++; } for (int i = 0; i < n; i++) { sum += pow(number[i], n); } if (sum==num) { puts("是Armstrong数"); } else { puts("不是Armstrong数"); } } return 0; } 赞(0) 回复 参考答案 #include #include int main() { int sum=0; int n,x,y; int s=0; printf("请输入一个数字\n"); scanf("%d",&n); y=x=n; do { n=n/10; s++; }while(n!=0); printf("%d 是 %d 位数\n",x,s); int num[s]; for(int i=s-1;i>=0;i--)//将输入数字的每位数字进行存储 { num[i]=x%10; x=x/10; } /*printf("将输入的数字从数组输出以便验证数组存储的是否正确\n"); for(int i=0;i*/ } if(sum==y) { printf("%d 是阿姆斯壮数",y); }else { printf("%d 不是阿姆斯壮数",y); } return 0; }
#include<stdio.h> #define N int isnum(int a,int n){ int sum=0,mode =1,orignalnum=a,anlydata; while(a){ anlydata = a%10; for(int i = 0;i<n;i++) mode *=anlydata; sum+=mode; mode=1; a/=10; } if(orignalnum == sum) return 1; else return 0; } int main(){ int n,count=0,num; scanf("%d",&num); n=num; while(n){ count++; n/=10; } if((isnum(num,count))==1) printf("是armstrong数"); else printf("不是armstrong数"); return 0; }
九位数以内的Armstrong数
153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315 24678050 24678051 88593477 146511208 472335975 534494836 912985153
#include<iostream> using namespace std; static int length=0; long long transform(long long number) { if(number==0) { return 0; } int x=number%10; length++; long long portion=transform(number/10); if(x==0) { return x+portion; } long long power=1; for(int i=0;i<length;i++) { power*=x; } //cout<<"x="<<x<<"length"<<length<<"="<<power<<endl; return power+portion; } bool isDaffodilNumber(long long number) { length=0; return number==transform(number)?true:false; } int main() { for(int i=100;i<999999999;i++) //九位数以内的ArmStrong数 { if(isDaffodilNumber(i)) { cout<<i<<endl; } } return 0; }
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int main(void) { int num,number[20],n=0,n1,sum=0;//数字 输入的每位数 数组下标 求和 puts("请输入数字(>=100)"); scanf("%d", &num); if (num < 100) { puts("数字必须(>=100)"); } else { n1 = num; //n1:n副本 while (n1>0) { number[n] =n1%10 ; n1 /= 10; n++; } for (int i = 0; i < n; i++) { sum += pow(number[i], n); } if (sum==num) { puts("是Armstrong数"); } else { puts("不是Armstrong数"); } } return 0; }
#include <math...
用户登录可进行刷题及查看答案
#include <math.h> #include <stdio.h> int main() { int sum=0; int n,x,y; int s=0; printf("请输入一个数字\n"); scanf("%d",&n); y=x=n; do { n=n/10; s++; }while(n!=0); printf("%d 是 %d 位数\n",x,s); int num[s]; for(int i=s-1;i>=0;i--)//将输入数字的每位数字进行存储 { num[i]=x%10; x=x/10; } /*printf("将输入的数字从数组输出以便验证数组存储的是否正确\n"); for(int i=0;i<s;i++) { printf("%d ",num[i]); } printf("\n");*/ for(int i=0;i<s;i++) { sum+=pow(num[i],s);/*pow C 库函数 double pow(double x, double y) 返回 x 的 y 次幂, 即 x^y。需要C 标准库 - <math.h>*/ } if(sum==y) { printf("%d 是阿姆斯壮数",y); }else { printf("%d 不是阿姆斯壮数",y); } return 0; }
登录后提交答案