#include <stdio.h>
#include <math.h>
int main()
{ int i,temp,rmd,sum;
for(i=100; i<=999; i++)
{ temp=i; sum=0;
while(temp>0)
{ rmd=temp%10;
sum+=pow(rmd,3);
temp=temp/10;
}
if(sum==i)
{ printf("%d\n",i);
}
}
}
這是一個水仙花數的回圈結構程式,其中的變數sum,如果在大回圈外定義sum=0,結果就出錯了。為什么要把變數sum=o在大回圈里賦值呢。不是很懂?求大佬幫助,十分感謝。
uj5u.com熱心網友回復:
sum的作用域在mai函式體內,這里的sum=0的賦值,和它的作用域無關。這個sum是求得每個數3位的立方和(sum =153 = 1^3 + 5^3 + 3^3),然后判斷他是否是水仙花數,所以每次while里回圈結束,回到大回圈時,進入新的數i的判斷時,sum要歸零的,不然就把上次的值帶到新的數的判斷里了。uj5u.com熱心網友回復:
#include <stdio.h>
#include <math.h>
int main()
{ int i,temp,rmd,sum;
for(i=100; i<=999; i++)
{ temp=i; sum=0;//每次進入回圈,這里temp sum 都需重新賦值
while(temp>0)
{ rmd=temp%10; //取得temp的個位數
sum+=pow(rmd,3);//一位的立方
temp=temp/10; //temp縮小10倍
}
if(sum==i)
{ printf("%d\n",i);
}
}
}
uj5u.com熱心網友回復:
因為放在回圈里,這樣每次回圈都會sum=0;如果放在回圈外,那么所有的for只有一次sum=0;所有的回圈用的sum就是上次回圈之后的sum值,而不是從0開始。uj5u.com熱心網友回復:
因為你的sum是用來判斷這個數是不是水仙花數的,如果放在外面而里面不再放就只能精準合理判斷第一個數(100)是不是,后面再回圈就是越算sum越大轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256462.html
標籤:C語言
下一篇:樹是啥?
