在寫PTA用C語言尋找水仙花數的時候發現了一個問題,題目如下:

寫的代碼如下:
#include<stdio.h>
#include<math.h>
int my_pow(int a,int n)
{
int cnt = 1;
while(n > 0)
{
cnt *= a;
n --;
}
return cnt;
}
int my_sum(int a,int n)
{
int sum = 0;
int t;
while(a>0)
{
t = a%10;
sum += my_pow(t,n);
a /= 10;
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
int i,t,sum=0;
int a = pow(10,n-1);
int b = pow(10,n);
for(i=a;i<b;i++)
{
printf("%d\n",b);
sum = my_sum(i,n);
if(sum==i)
{
printf("%d\n",i);
}
}
}
這個代碼是沒問題的,但是我發現的問題是,如果我在主函式的for回圈前面列印一下a和的值,當我輸入n為3的時候,b的值是1000153,但是程式也能正常運行得到想要的結果,如下所示

但是如果在回圈內列印b的話,b的值又變成我想要的1000,如下所示:

有沒有人能給解答一下?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151749.html
標籤:C語言
上一篇:vc2010安裝問題
下一篇:C語言新手再次前來求教
