C语言中for语句的循环体可以为空吗?看看下面的程序哪里错了!求助高手解答!!!

#include<stdio.h>
#include<math.h>
void main()
{int a,b,M,E,R,Y,MERRY1,MERRY2,MERRY;
for(M=1;M<=9;M++)
{for(E=0;E<=9;E++)
{for(R=0;R<=9;R++)
{for(Y=0;Y<=9;Y++)
}
}
MERRY1=(M*10000+E*1000+R*100+R*10+Y);
MERRY2=(M+E+R+R+Y);
a=sqrt(MERRY1);b=sqrt(MERRY2);
if((a*a==MERRY1)&&(b*b==MERRY2)) MERRY=MERRY2;
printf("MERRY=%d",MERRY);
}

可以为空。
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,M,E,R,Y,MERRY1,MERRY2,MERRY=0;
for(M=1;M<=9;M++)

for(E=0;E<=9;E++)

for(R=0;R<=9;R++)

for(Y=0;Y<=9;Y++)
{
}
MERRY1=(M*10000+E*1000+R*100+R*10+Y);
MERRY2=(M+E+R+R+Y);
a=sqrt((float)MERRY1);
b=sqrt((float)MERRY2);
if((a*a==MERRY1)&&(b*b==MERRY2)) //如果不满足条件,输出merry时,merry未定义值,
//所以定义merry时给个值。
MERRY=MERRY2;
printf("MERRY=%d",MERRY);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-07
你少了大括号匹配啊;你有的有大括号,有的没有当然出错。
for语句的循环体是可以为空,你要写{}
for(M=1;M<=9;M++)
{
for(E=0;E<=9;E++)
{
for(R=0;R<=9;R++)
{
for(Y=0;Y<=9;Y++)
{}
}
}
}
或者
for(M=1;M<=9;M++)
{
for(E=0;E<=9;E++)

for(R=0;R<=9;R++)

for(Y=0;Y<=9;Y++)
{}

}
第2个回答  2011-01-07
for(Y=0;Y<=9;Y++) ==> for(Y=0;Y<=9;Y++) ;
得有个分号代表空语句,不然就是语法错误本回答被网友采纳
第3个回答  2011-01-13
可以有空循环,但是要有个分号,例如for(Y=0;Y<=9;Y++) ; 这个语句的意思就是循环结束时y=10..
第4个回答  2011-01-07
括号都不品配啊。。你程序要干嘛的?

从程序看你应该是这样的。
void main()
{
int a,b,M,E,R,Y,MERRY1,MERRY2,MERRY;
for(M=1;M<=9;M++)
{
for(E=0;E<=9;E++)
{
for(R=0;R<=9;R++)
{
for(Y=0;Y<=9;Y++)
{
MERRY1=(M*10000+E*1000+R*100+R*10+Y);
MERRY2=(M+E+R+R+Y);
a=(int)sqrt(MERRY1);
b=(int)sqrt(MERRY2);
if((a*a==MERRY1)&&(b*b==MERRY2))
{
MERRY=MERRY2;
printf("MERRY=%d\n",MERRY);
printf("M=%d,E=%d,R=%d,Y=%d\n",M,E,R,Y); //没用,打出来为了看清楚

}
}
}
}
}
}

output:
MERRY=1
M=1,E=0,R=0,Y=0
MERRY=25
M=1,E=4,R=8,Y=4
MERRY=25
M=2,E=7,R=5,Y=6
MERRY=16
M=3,E=4,R=2,Y=5
MERRY=4
M=4,E=0,R=0,Y=0
MERRY=16
M=5,E=2,R=4,Y=1
MERRY=16
M=6,E=1,R=0,Y=9
MERRY=9
M=6,E=2,R=0,Y=1
MERRY=16
M=7,E=0,R=2,Y=5
MERRY=9
M=9,E=0,R=0,Y=0
Press any key to continue