求n(n<10000)以內的所有四葉玫瑰數並逐個存放到result所指的數組中,四葉玫瑰數的個數作為函數值返回。 如果一個4位正整數等於其各個數字的4次方之和,則稱該數為四葉玫瑰數。 例如,1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4,因此1634就是一個四葉玫瑰數。
#include<stdio.h> #pragma warning (disable:4996) int fun(int n, int result[]) { int i,j,k=0; int a,b,c,d; for(i=1000;i<=n;i++) { a=1;b=1;c=1;d=1; for(j=0;j<4;j++) { a*=i/1000; b*=i%1000/100; c*=i%1000%100/10; d*=i%1000%100%10; }; if(i==a+b+c+d) { result[k]=i; k++; } } return k; } main( ) { int result[10], n, i; void NONO(int result[], int n); n = fun(9999, result); for(i=0; i<n; i++) printf("%d\n", result[i]); NONO(result, n); } void NONO(int result[], int n) {/* 本函數用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */ FILE *fp ; int i; fp = fopen("..\\out.dat","w") ; fprintf(fp, "%d\n", n); for(i=0; i<n; i++) fprintf(fp, "%d\n", result[i]); fclose(fp); }
運行結果