#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int narcissistic(int number);
//void PrintN(int m, int n);
int main()
{
? ? int m;
? ? scanf("%d",&m);
? ? if (narcissistic(m)) printf("%d is a narcissistic number\n", m);
? ? else printf("%d is not a narcissistic number\n", m);
? ? return 0;
}
int pow_n(int a, int b)
{? //計(jì)算 a 的 b 次方
? ? int sum = 1;
? ? for (int i = 0; i < b; i++)
? ? ? ? sum = sum * a;
? ? return sum;
}
int narcissistic(int number)
{
? ? int a[5] = { 0 };
? ? int i = 0;
? ? int t = number;
? ? while (t != 0)
? ? {
? ? ? ? a[i] = t % 10;
? ? ? ? t /= 10;
? ? ? ? i++;
? ? }
? ? t = number;
? ? int p = 0;
? ? int sum = 0;
? ? for (p = 0;p < i;p++)
? ? {
? ? ? ? sum += pow_n(a[p], i);
? ? }
? ? if (sum == t)
? ? {
? ? ? ? return 1;
? ? }
? ? else
? ? ? ? return 0;
}
有點(diǎn)不好意思的是我磕磕絆絆做了四個(gè)小時(shí)多戒职,終于縫縫補(bǔ)補(bǔ)做出來了。不過相信勤能補(bǔ)拙,我這一次的學(xué)習(xí)也學(xué)到了很多胀莹。
做了那么久的首要原因是我看錯(cuò)了題目,以為冪不一定是輸入整數(shù)的位數(shù)畔咧,可以是從3~100之間的冪滔灶,于是瞎搗鼓了三小時(shí)左右,運(yùn)行不了才去看大佬的答案艾帐,才知道自己那么蠢乌叶。
其次,我在弄懂了題目的問題后重新敲入代碼柒爸,但我沒有把number的值賦給t准浴,而是直接把number放入數(shù)值的while循環(huán)后,還繼續(xù)使用number捎稚。所以在下面判斷返回是1還是0的時(shí)候乐横,number已經(jīng)是0了,結(jié)果無論輸入什么都是0今野。
我看了別的大佬的文章也終于找出了自己的錯(cuò)誤葡公。number的值早在while循環(huán)里改變了,就是這種低級(jí)的錯(cuò)誤条霜,我的代碼之路還有很長要走催什,堅(jiān)持每天的練習(xí)能給我?guī)砀淖儭?/p>