C语言问题 求出1万以内一个整数加上100。268后开方后又为整数 求这些个整数

#include<stdio.h>
#include<math.h>
void main()
{
int y,r,i;
double x,z;
while(i<10000)
{
i++;
x=sqrt(i+100);
y=(int)x;
z=sqrt(i+268);
r=(int)z;
if(x==y)
{
printf("%d\n",y);
}
if(z==r)
{
printf("%d\n",r);
}
}
}
这个程序哪里不对嘛?

不对之处:
1. i没有初始化就参与运算
2. 没有考虑机器误差
3. 没有考虑条件是否全部满足
4. x与y z与r一定不等
5. 要求开方后是整数,审题不清。

#include<stdio.h>
#include<math.h>
void main()
{
int y,r,i;
double x,z;
for (i=0; i<10000; ++i)
{
x=sqrt(i+100);
z=sqrt(i+268);

y=(int)(x+.0000001); //加一个很小的数其目的就是消除微小机器误差
r=(int)(z+.0000001);

y*=y; y-=100;
r*=r; r-=268;

//如果要同时满足条件则采用下面这句
if (i==y && i==r) printf("%d ",i);

//如果只要部分满足条件则采用下面这两句
//if (i==y) printf("%d ",i);
//else if (i==r) printf("%d ",i);
}
printf("\n");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-23
你把i = 0 ;加上先
y=(int)x;,你想干嘛,要是判断是不是整数,你得取余数判断余数是不是0,哪有这样子强转的。。
第2个回答  2014-01-23
哥,你i没有初始化
第3个回答  2014-01-23
个整数加上100。268后开方。。。这是什么意思追问

就是某个数符合 +100后开方又为整数 或者+268后开方结果又为整数 求这些数

追答

那你这个肯定不对啊y=(int)x;这样强转肯定不行

相似回答
大家正在搜