#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int add(int x, int* pn) {
int k = 0, a = *pn, b = 1;
for (k = 0; k < a; k++) {
b *= x;
}
return b;
}//对应位数上数字的n次方
int main()
{
int n = 0, i = 0, max = 0, min = 1, div = 0;
scanf("%d", &n);//输入位数n
int* pn = &n;
for (i = 0; i < n - 1; i++) {
min *= 10;
}
max = 10 * min - 1;//若输入n=3,那么min为100,max为999,此为三位数范围
int x = min, count = 0, k = 1;//count是数一共有多少个数满足条件的变量
while (x >= min && x <= max) {//满足条件就进入
int tem = x, rest = 0, sum = 0;//一定要用临时变量!不然若是将第二个while中的tem全部换为x,
while (tem != 0) {//那么一次循环以后x就为0,仅循环一次。
rest = tem % 10;//每位上的数
tem = tem / 10;//缩小十倍继续算
sum += add(rest, pn);//对应数的n次方相加,算一次加一次
}
if (x == sum) {//判断
printf("%d\n", x);
count++;//数数
}
x++;//算下一个
}if (count == 0) {
printf("No output.\n");
}
return 0;
}
C语言 输入位数n寻找n位数的阿姆斯特朗数
最新推荐文章于 2024-10-28 00:45:37 发布
本文介绍了一个C++程序,通过两个嵌套循环计算给定位数的数字中,其各位数字的n次方之和等于原数本身的整数。程序首先获取用户输入的位数n,然后遍历该位数范围内的所有数字,对每位上的数字进行n次方运算并累加,找出符合条件的整数并输出。
摘要由CSDN通过智能技术生成