33,321
社区成员




#include <stdio.h>
#include <math.h>
int check_self_power(int num, int n);
int main(void)
{
int pow_val = 0, num, max;
while (pow_val < 3 || pow_val > 6)
scanf("%d", &pow_val);
num = pow(10, pow_val-1);
max = pow(10, pow_val);
while (num < max) {
if (check_self_power(num, pow_val))
printf("num = %d\n", num);
num++;
}
return 0;
}
int check_self_power(int num, int n)
{
int tmp = num, sum = 0, i;
for (i = 0; i < n; i++) {
sum += pow(tmp % 10, n);
tmp = tmp / 10;
}
return (sum == num ? 1 : 0);
}
#include <stdio.h>
#include <math.h>
int check(long);//判断自幂数函数
int check_self_power(int num, int n);
int main(void)
{
int pow_val = 0, num, max;
printf("%.0lf", pow(3, 2));
while (pow_val < 3 || pow_val > 6)
scanf("%d", &pow_val);
num = pow(10, pow_val-1);
max = pow(10, pow_val);
while (num < max) {
if (check_self_power(num, pow_val))
printf("num = %d\n", num);
num++;
}
/*
int num=0;
while(num<3||num>6){
scanf("%d", &num);
}//end while
long integer = pow(10, num-1), max;
max = pow(10, num);
while(integer< max){
if(check(integer))//调用判断函数
printf("%d\n", integer);
printf("interger = %ld\n", integer);
integer++;
}//end while
*/
return 0;
}
int check(long integer)
{
long sum = 0, i = integer;
int num = (int)log10(integer) + 1;//获取位数
for(int n= num; n>0; n--){
int j = i / (int)pow(10, n-1);//获取最高位数字 j
sum += pow(j, num); //幂求和
i -= j * pow(10, n-1);//减去最高位数字
}
return sum==integer? 1 : 0;//0==false 1==true
}
int check_self_power(int num, int n)
{
int tmp = num, sum = 0, i;
for (i = 0; i < n; i++) {
sum += pow(tmp % 10, n);
tmp = tmp / 10;
}
return (sum == num ? 1 : 0);
}
参考一下吧
个人感觉,逻辑没必要做的太复杂1634
8208
9474
输入5:
54748
92727
93084