求计算机专业指教我的代码错误在哪里,A不过去,题目是求水仙花数!谢谢。

没用C++,
#include<stdio.h>
#define bool int
#define true 1
#define false 0
main(){
int m,n,a[3];
scanf("%d%d",&m,&n);
bool f=false;
for(int i=m;i<=n;i++){ //此处有错误吗??
a[0]=i%10;
a[1]=(i/10)%10;
a[2]=i/100;
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i){
f=true;
printf("&d",i);
}
}
if (f==false) printf("no");
}
C:\Users\hp\Desktop\shui.c(8) : error C2143: syntax error : missing ';' before 'type'
C:\Users\hp\Desktop\shui.c(9) : error C2143: syntax error : missing ';' before 'type'
C:\Users\hp\Desktop\shui.c(9) : error C2143: syntax error : missing ';' before 'type'
C:\Users\hp\Desktop\shui.c(9) : error C2143: syntax error : missing ')' before 'type'
C:\Users\hp\Desktop\shui.c(9) : error C2143: syntax error : missing ';' before 'type'
C:\Users\hp\Desktop\shui.c(9) : error C2065: 'i' : undeclared identifier
C:\Users\hp\Desktop\shui.c(9) : warning C4552: '<=' : operator has no effect; expected operator with side-effect
C:\Users\hp\Desktop\shui.c(9) : error C2059: syntax error : ')'
C:\Users\hp\Desktop\shui.c(9) : error C2143: syntax error : missing ';' before '{'
C:\Users\hp\Desktop\shui.c(14) : error C2065: 'f' : undeclared identifier

这到底是怎么错了?能帮我看看吗?谢谢,我C菜鸟阶段!
最新回答
听海的哭泣ぃ

2025-03-02 02:18:46

printf("&d",i);

这首先就不对吧
还有你为什么要定义诸如bool、false、true之类的东西呢
看你的程序,这样定义,没必要,直接用1和0就OK啊
追问
编译的错误你看了吗?printf这句怎么错了?定义bool是因为没有这样的数就显示no,这个倒无所谓,我就是想知道编译出的错误死怎么错的,怎么改呢?
追答
printf("%d",i);
首先就应该这样吧,我不明白你为什么偏偏要这么复杂呢,就为了用false和true更能见名知意?还有你既然是求水仙花数,水仙花数是3位数吧,那你可以就100~999之间for循环判断就好啊,为什么要自己输入呢,0是假非零就是真,为什么一定要宏定义呢,是有要求吗
若你偏要这样做,你可以看看我下面的代码:
#include
#define bool int
#define true 1
#define false 0
main(){
int m,n,a[3],i;
bool f=false;
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
a[0]=i%10;
a[1]=(i/10)%10;
a[2]=i/100;
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i){
f=true;
printf("%d ",i);
}
}
if (f==false) printf("no");
getch();//这是win-tc特有的,你不用win-tc就删了这条语句。
}
是按照你的改的。因为是我用的是WIN-TC,所以后面有getch(),你不用的话就删掉。