一道C语言的考试编程题,求大神解答啊谢谢了 一个整数加100后是个完全平方数,再加168又是一个完

一道C语言的考试编程题,求大神解答啊谢谢了 一个整数加100后是个完全平方数,再加168又是一个完全平方数,求1000以内满足这个条件的数?

#include <stdio.h>
#include <math.h>
int main(){
    int temp,temp2;
    for(int i = 100;i < 1000-168;++ i){
        temp = sqrt((double)i);
        temp2 = sqrt((double)i + 168);
        if(temp * temp == i && temp2 * temp2 == i + 168) printf("%d\n",i - 100);
    }
    return 0;
}

PS:如果要优化还有很多的优化空间。需要的话问我

这是结果

追问

说是还要一个流程图,能帮帮忙吗?谢谢了

追答#include <stdio.h>
#include <string.h>
int main(){
    int ans[1000],cnt = 0,i;
    memset(ans,0,sizeof(ans));
    for(i = 10;i * i < 1000;++ i){
        ans[i * i] = 1;
        if(i * i > 168 && ans[i * i -168]) printf("%d\n",i * i - 100 - 168);
    }
    return 0;
}

随手又写了一个,完全不同的思路,可能会快很多。需要流程图的话。。。额。。。现在不行啊,手底下没工具。。。你看不懂吗

追问

学习C语言最少都需要一年吧,我们就学一天,就是为了应付考试,实在是什么都看不懂啊

追答

好吧等着我给你画=。=。。。

追问

谢谢了,太感谢你了

追答

好吧等着我给你画=。=。。。


注意上边的代码错了,我重新贴一遍

#include <stdio.h>
#include <string.h>
int main(){
   int ans[1000],cnt = 0,i;
   memset(ans,0,sizeof(ans));
   for(i = 0;i * i < 1000;++ i){
       ans[i * i] = 1;
       if(i * i > 168 && ans[i * i -168]) printf("%d\n",i * i - 100 - 168);
   }
   return 0;
}

追问

不愧是大神,真想给你个大拥抱,谢谢,谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-04
这个是算法的问题,相信我,不是很难的,只是有点复杂。先写出0~1000所有完全平方数,存在数组里面,再用循环语句进行验证,讲符合的输出。大致的思路就是这样,不知道你C语言水平怎么样?如果需要完整代码的话我可以试着写给你。追问

C语言最少也要学习一年吧,我就学了一天,不好意思的说一句,是什么都不懂,就是要应付考试,还请您能帮帮忙

追答

你们考试用什么编译器?我去给你找找代码修改下。不同的编译器代码格式不一样的。

追问

不用编译器,直接是用笔写在试卷上的

追答

有高手在,他们代码很好,你就用他的吧。说来惭愧,我那位学的比我好,我一开始想复杂了,好久不写了,不好意思。

追问

没事,已经很谢谢你了

第2个回答  2014-08-04
#include<stdio.h>

#include<math.h>
int main()
{
double i,m,n,t;
for(i=0;i<=1000;i++)
{
n=0;
t=i+100;
m=sqrt(t);
if(m*m==t)
{
n++;
}
t+=168;
m=sqrt(t);
if(m*m==t)
{
n++;
}
if(n==2)
printf("%lf ",i);
}
return 0;
}追问

最后还要个流程图,能帮帮忙吗

相似回答
大家正在搜