-2

创建一个打印出前八个[8]自守数字的程序。输出必须在main()函数中完成。

这是我处理的代码:

#include <stdio.h>  
#include <conio.h>

main() {  
int automorphic[8];
int n;  

printf("\t\t\tAUTOMORPHIC\n\n\n"); 

for(n=1; n<8; n++ ){
    if (n*n%10==n || n*n%100==n || n*n%1000==n);
}
printf("\t%d\n\n", automorphic [n]);

getch();
return 0;
}  

我不明白为什么它只打印出0?我的代码中是否缺少某些内容?还是我根本没有做正确的事?

4

2 回答 2

1

因为:

  1. 您只检查数字 1 到 7(此范围内只有数字 1、5 和 6 是自守的)。
  2. 您没有将数字存储在数组中。
  3. 您只打印数组的第 7 个元素(始终为 0)。
  4. 你需要期待比这更大的数字。
  5. 此外,自守数从 0 开始,而不是 1。
    int main() {
        long automorphic [8];
        long i;  
        int n;  

        printf("\t\t\tAUTOMORPHIC\n\n\n"); 

        i= 0 ;
        n= 0 ;
        while( n < 8 ) {
            if( i*i%10==i || i*i%100==i || i*i%1000==i || i*i%10000==i || i*i%100000==i ) {
                automorphic[n]= i ;
                n++;
            }
            i++;
        }
        for(n= 0 ; n < 8 ; n++ ) {
            printf("\t%d\n\n", automorphic[n] );
        }

        getch();
        return 0;
    }  

结果应该是:

    0
    1
    5
    6
    25
    76
    376
    625
于 2013-09-01T00:52:28.457 回答
1

你很近,但不完全在那里。

  1. 您只测试自守属性的 1 到 8 的整数。该问题要求前 8 个自同构数字,而不是小于 8 的数字是自同构的。

  2. 如果条件为真,您的if语句不会做任何事情。

  3. 您正在打印 的值,automorphic[n]但未在automorphic数组中设置任何值。此外,在printf执行时,n将是 8,因为for循环已经完成。

于 2013-09-01T00:48:56.067 回答