当前位置: 代码迷 >> C语言 >> [求助]新手求助,怎么就不见好心人解答啊?
  详细解决方案

[求助]新手求助,怎么就不见好心人解答啊?

热度:319   发布时间:2007-05-09 20:18:44.0
以下是引用爱以走远在2007-5-9 20:13:02的发言:

#include <stdio.h>
void main()
{unsigned float A,B,C;
int count;
count=0;
for(A=1;A<=97;A++)
{ for(B=1;B<=97;B++)
for(C=1;C<=97;C++)
if(100>(A+B+C)&&(B*B*C*C+A*A*C*C==A*A*B*B))
{count++;printf("%f,%f,%f\n",A,B,C);}
}
printf("count=%d",count);}



你改为int试一哈


试了
没有什么区别
结果都是2组


----------------解决方案--------------------------------------------------------
以下是引用红影在2007-5-9 20:10:40的发言:
#include <stdio.h>
void main()
{
unsigned int A,B,C,count;
count=0;
for(A=3;A<=98;A++)
{
for(B=2;B<A;B++)
for(C=1;C<B;C++)
if((C<(100-A-B))&&(B*B*C*C+A*A*C*C==A*A*B*B) )
{
count++;
printf("%d,%d,%d\n",A,B,C);}
}
printf("count=%d\n",count);
}


运行结果:

20,15,12
40,30,24
60,45,36
80,60,48
count=4

怎么我运行你的是74种哦
是不是我的编译器的问题哦


----------------解决方案--------------------------------------------------------
以下是引用爱以走远在2007-5-9 20:20:09的发言:

怎么我运行你的是74种哦
是不是我的编译器的问题哦

他那个在TC里是显示74组的,在VC++里可以运行
不过答案是错误的
----------------解决方案--------------------------------------------------------
我电脑上没有TC
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{unsigned int A,B,C,count;
count=0;
for(A=3;A<=97;A++)
{ for(B=2;B<97;B++)
for(C=1;C<97;C++)
if(A+B+C<100&&(B*B*C*C+A*A*C*C==A*A*B*B)&&(A>B)&&(B>C))
{count++;printf("%d,%d,%d\n",A,B,C);}
}
printf("count=%d",count);}
我的代码在VC++在可以运行
但是在TC下显示答案6组
不知道什么什么原因
有没有高人能说说原因

----------------解决方案--------------------------------------------------------
哪6组啊???
看看数对不对么
----------------解决方案--------------------------------------------------------
数不对的
我用计算器算过不对

----------------解决方案--------------------------------------------------------
不对的话等于白做工。。。。。。
----------------解决方案--------------------------------------------------------
有高手可以告诉我一下吗?我也不懂啊.我在tc下面也是6组
----------------解决方案--------------------------------------------------------

回复:(阳光杉木)[求助]新手求助,怎么就不见好心人...
虽然我也是学c语言的新手,我也发表我的看法了,你既然要限定A>B,B>C,那你不如在for循环里面说明
for(B=2;B<A;B++) for(C=1;C<B;C++)这样你在后面的if语句就不会怎么长了.你不妨试一下,不然你的程序的循环的次数太长,耗时太多,就是所说的空间复杂度和时间复杂度都很大,容易出错.不然的话,你的程序的其他地方都没有问题.还有就是你的循环要注意用括号阔起来.就不容易出错了.
void main()
{unsigned int A,B,C,count=0,D;
D=B*B*C*C+A*A*C*C-A*A*B*B;
for(A=3;A<=97;A++)
{ for(B=2;B<A;B++)
{ for(C=1;C<B;C++)
{ if((A+B+C<100)&&D=0)
{ count++;
printf("%d,%d,%d\n",A,B,C);}
}
}
}
}

----------------解决方案--------------------------------------------------------
  相关解决方案