c语言 例题水仙花数 流程控制
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。#include<stdio.h>
int main()
{
int q, e;
scanf("%d", &q);
e = q;
int w=1;
while(q)
{
w*=10;
q--;
}
//printf("w = %d\n", w);
q = e;
int n, sum, r, t, y, u;
sum = 1;
t = 0;
y = e;
for(n = 153; n < w; n++)
{
u=n;
while(q)
{
r = n%10;
y = e;
while(y)
{
sum*=r;
y--;
}
t+=sum;
sum = 1;
n = n/10;
q--;
}
if(u==t)
{
printf("%d\n", t);
}
n=u;
q = e;
}
return 0;
}
代码能运行,但for循环只执行一次,而进入编译状态,for循环运行正常,执行多次。 我发现问题了,for循环里的t没有进行重置,要在再次使用t之前重置t,加入t=0;
页:
[1]