编的小程序得不出结果,求指错
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?我编的代码是:
#include <stdio.h>
#include <math.h>
void main()
{
float a,p,q;
a=1.0;
loop: p=sqrt(a+100.0);
q=sqrt(a+100+168.0);
if(a<=10000&&(p-(int)p==0)&&(q-(int)q==0))
{printf("%f\n",a);
a++;
goto loop;
}
}
调试运行没有错,但就是没有结果,得不出来数。自己找不到问题出在哪里。
把a申明为int试试
另外,慎用goto p-(int)p==0和q-(int)q==0应该为假if语句不执行 float a, p, q;
a = 1.0;
loop:
p = sqrt(a + 100.0);
q = sqrt(a + 100 + 168.0);
if (a <= 10000.0 && (p - (int)p == 0) && (q - (int)q == 0))
{
printf("%f\n", a);
}
a++;
goto loop;
a++和goto loop拿出大括号;
能用for不用while,能用while不用goto 改写成for循环的代码
float a, p, q;
a = 1.0;
for (; a < 10000.0; ++a){
p = sqrt(a + 100.0);
q = sqrt(a + 100 + 168.0);
if (a <= 10000.0 && (p - (int)p == 0) && (q - (int)q == 0))
printf("%f\n", a);
} libocdf 发表于 2018-1-5 19:05
float a, p, q;
a = 1.0;
loop:
谢谢指点,原来是我把a++;及goto loop;的层次放错了。没有执行。
我刚学到goto,还不会for及while语句。感谢大神又编了段for循环代码让我学习。 libocdf 发表于 2018-1-5 19:07
改写成for循环的代码
运行结果好像不对哦。
fairylee83 发表于 2018-1-8 09:29
运行结果好像不对哦。
1.注意代码风格
2.我这边表示没问题,你需要学会自己调试
3.为什么缺少math.h头文件编译也能通过????
给你参考
libocdf 发表于 2018-1-8 20:06
1.注意代码风格
2.我这边表示没问题,你需要学会自己调试
3.为什么缺少math.h头文件编译也能通过??? ...
谢谢,昨天只学到GOTO还没学到for.后来又学了for语句和调试,调试通了。
程序小白,问的问题也弱{:5_91:}
页:
[1]