為什么我的水仙花數輸不出來,m,n不管是什么輸出結果都是no。

uj5u.com熱心網友回復:
int cn()函式修改,供對照:int cn(int n,int m)
{
int hun,ten,ind,a,flog=1,z=0;
for(a=n;a<=m;a++)
{
hun = a/100;
ten = a/10%10;
ind = a%10;
if(a == hun*hun*hun + ten*ten*ten + ind*ind*ind)
{
printf("%d ",a);
z++;
}
}
if(z==0) flog = 0;
return flog;
}
uj5u.com熱心網友回復:
根據樓主的代碼,應該是回傳的回傳值有問題。樓主的邏輯里,z++是在回圈里一定會執行的,因為它在for的大回圈里,每次都執行到;第二cn函式有回傳非0的可能嗎?沒有,因為最后還是return 0;z只要執行for回圈,就一定會執行z++,即使for回圈一次不執行,那么最終也會執行return 0;所以,非0從哪里來呢?int cnt (int n , int m)
{
int sum, tmp, i;
int cnt = 0;
if (m > n)
swap(&m, &n);
for (i = m ; i < n; i++) {
tmp = i;
sum = 0;
while (tmp) {
rem = tmp % 10;
sum += pow(rem, 3); //or rem * rem * rem;
tmp /= 10;
}
if (sum == i) {
printf("%d is narcissus number!\n", i);
cnt++;
}
}
return cnt;
}
static int swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
供參考代碼,可以試一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269501.html
標籤:C語言
