我试图从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;
}
答案 0 :(得分:9)
编译警告:
if(1000<=i<=10000){
警告:像'X&lt; = Y&lt; = Z'这样的比较没有他们的数学 意思是[-Wparentheses]
您的意思是if(i >= 1000 && i < 10000){
吗?