使用C

时间:2016-10-27 09:38:04

标签: c

我试图从1-10000打印阿姆斯特朗号码,我的问题是有四个1"当我编译并运行时,我想问一下编码的哪一部分我做错了,如果我只想要打印一个1那么应该修改哪部分代码。除此之外,所有其他阿姆斯壮数字输出正确。这是我第一次问这里,我希望看到这个的人会给我一些建议。 谢谢。

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
printf("Armstrong Numbers from 1-10000:\n");
int digit1, digit2, digit3, digit4; 
int i;

for(i=1; i<10000; i++){

    digit4=i/1000;
    digit3=(i%1000)/100;
    digit2=((i%1000)%100)/10;
    digit1=((i%1000)%100)%10;

    //one digit number 
    if(i<10){
        if(i==digit1)printf("%d\n",i);
    }
    //two digit number
    if(10<=i<100){
        int output100 = digit1*digit1 + digit2*digit2;
        if(i==output100)printf("%d\n",i);
    }
    //three digit number 
    if(100<=i<=999){
        int output1000 = digit1*digit1*digit1 + digit2*digit2*digit2 + digit3*digit3*digit3;
        if(i==output1000){
            printf("%d\n",i);
        }
    }
    //four digit number
    if(1000<=i<=10000){
        int output10000 = digit1*digit1*digit1*digit1 + digit2*digit2*digit2*digit2 + digit3*digit3*digit3*digit3 + digit4*digit4*digit4*digit4;
        if(i==output10000){
            printf("%d\n",i);
        }
    }
    }


return 0;
}

1 个答案:

答案 0 :(得分:9)

编译警告:

if(1000<=i<=10000){
  

警告:像'X&lt; = Y&lt; = Z'这样的比较没有他们的数学   意思是[-Wparentheses]

您的意思是if(i >= 1000 && i < 10000){吗?