大佬们,为什么程序正确但无法出结果,运行后一直在运算

#pragma warning(disable:4996)
#include<stdio.h>
#include <math.h>
int f1(int n, int m)
{
	int l = 1, i;
	for (i = 0; i < m; i++) {
		l *= n;
	}
	return l;
}
int main()
{
	int a=0,b=0,c=0,sum=0,d;
	scanf("%d", &a);
	for (b = f1(10, a - 1); b < f1(10, a); b++) {
		d = b;
		do {
			c = b % 10;
			b /= 10;
			sum += f1(c, a);
			} while (b > 0);
		if (sum == d) {
			printf("%d/n", b);
		}
	}
}

 

在循环中间加一个 printf(), 把 b, c, sum 都打印出来, 你就会发现循环不能结束的原因了

你代码里面,b是作为循环的变量,又在循环体里面对b进行运算,死循环了。你加个变量,用在循环里面运算,把两者分开

#include<stdio.h>
#include <math.h>
int f1(int n, int m)
{
	int l = 1, i;
	for (i = 0; i < m; i++) {
		l *= n;
	}
	return l;
}
int main()
{
	int a=0,b=0,c=0,sum=0,d;//b用来循环,d用来运算,分开不影响
	scanf("%d", &a);
	for (b = f1(10, a - 1); b < f1(10, a); b++) {
		d = b;
		sum = 0;//要清零,不然会加上上次的结果
		do {
			c = d % 10;
			d /= 10;
			sum += f1(c, a);
			} while (d > 0);
		if (sum == b) {
			printf("%d\n", b);
		}
	}
}

 

多吐槽一句,请无视。。。。。。

很多人提问总喜欢写,“我的程序正确为什么多了几个数?”“程序没问题,为什么总有个值不对”类似的。拜托,你都看见结果有问题,还说程序没问题,程序明显就有BUG