PTA習題
PTA浙大版《C語言程序設計(第3版)》
題目集5-6
水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等于它本身。
本題要求編寫兩個函數,一個判斷給定整數是否水仙花數,另一個按從小到大的順序打印出給定區間(m,n)內所有的水仙花數。
#include <stdio.h>int narcissistic( int number );
void PrintN( int m, int n );int main()
{int m, n;scanf("%d %d", &m, &n);if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);PrintN(m, n);if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);return 0;
}
函數接口```c
int narcissistic( int number )
{int N = 0,n = number,a[2][5]={{0,0,0,0,0},{1,1,1,1,1}},i = 0,j = 0,s=0,sign = 0;do{a[0][N] = n%10;N++;n = n/10;}while(n/10!=0);a[0][N] = n%10;N++;for(i = 0;i<N;i++){for(j = 0;j<N;j++)a[1][i] *= a[0][i];s += a[1][i];}sign = (number == s)?1:0;return sign;
}
void PrintN( int m, int n )
{int i;for(i = m+1;i<n;i++)if(narcissistic(i))printf("%d\n",i);}
我用二維數組儲存數字信息,a[0][]存儲每個數位的數字,a[1][]存儲N次方后的數字,s存儲和,與number比較。
<第一次在這個平臺上寫博客,只是想總結一點點自己的想法>
希望我能像大佬們一樣,終日乾乾,與時偕行。