打印出前八个自守数字

时间:2013-09-01 00:45:07

标签: c

创建一个打印出前八个[8] automorphic numbers的程序。必须完成输出 在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?我的代码中缺少什么吗?或者我根本不做正确的事情?

2 个答案:

答案 0 :(得分:1)

你很亲密,但并不完全。

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

  2. 如果条件为真,您的if语句不会执行任何操作。

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

答案 1 :(得分:1)

由于:

  1. 您只检查数字1到7(此范围内只有数字1,5和6是自动的)。
  2. 您没有将数字存储在数组中。
  3. 您只打印数组的元素7(始终为0)。
  4. 你需要期望更大的数字。
  5. 此外,自守数字从0开始,而不是1。
  6.     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