鱼C论坛

 找回密码
 立即注册
查看: 1818|回复: 8

[已解决]编的小程序得不出结果,求指错

[复制链接]
发表于 2018-1-5 14:26:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:一个整数,它加上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;
                }                
}
调试运行没有错,但就是没有结果,得不出来数。自己找不到问题出在哪里。
最佳答案
2018-1-5 19:05:25
        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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-5 17:14:45 From FishC Mobile | 显示全部楼层
把a申明为int试试

另外,慎用goto
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 18:53:44 | 显示全部楼层
p-(int)p==0和q-(int)q==0应该为假if语句不执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 19:05:25 | 显示全部楼层    本楼为最佳答案   
        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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 19:07:33 | 显示全部楼层
改写成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);
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-8 09:23:57 | 显示全部楼层
libocdf 发表于 2018-1-5 19:05
float a, p, q;
        a = 1.0;
loop:        

谢谢指点,原来是我把a++;及goto loop;的层次放错了。没有执行。
我刚学到goto,还不会for及while语句。感谢大神又编了段for循环代码让我学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-8 09:29:51 | 显示全部楼层
libocdf 发表于 2018-1-5 19:07
改写成for循环的代码

运行结果好像不对哦。
QQ截图20180108092924.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 20:06:09 | 显示全部楼层
fairylee83 发表于 2018-1-8 09:29
运行结果好像不对哦。

1.注意代码风格
2.我这边表示没问题,你需要学会自己调试
3.为什么缺少math.h头文件编译也能通过????

给你参考
微信截图_20180108200525.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 09:25:38 | 显示全部楼层
libocdf 发表于 2018-1-8 20:06
1.注意代码风格
2.我这边表示没问题,你需要学会自己调试
3.为什么缺少math.h头文件编译也能通过??? ...

谢谢,昨天只学到GOTO还没学到for.后来又学了for语句和调试,调试通了。
程序小白,问的问题也弱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表