一个关于c的编程问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:12:49
老师布置个题目,说有个4位数的完全平方数,而且它-1111后还是完全平方数.
原来学的pascal,对c的一些规范不大懂.
我写的程序是
#include<stdio.h>
#include<math.h>
void main()
{
int i;
for(i=1000;i<=9999;i++)
if ( (sqrt(i))
==
(sqrt(i)/1 )
&&
(sqrt(i-1111))
==
(sqrt(i-1111)/1))
printf("%d\n",i);
}
结果是:
sqrt: DOMAIN error
sqrt: DOMAIN error
Floating point error: Domain.
Abnormal program termination

请问大家这是怎么回事??

用其它方法(数组标记等等)算出是3136,
现在就是不知道用"sqrt"怎么编?
谢谢指导!
bignature兄的结果也是这个

sqrt: DOMAIN error
sqrt: DOMAIN error
Floating point error: Domain.
Abnormal program termination

现在关键是想了解一下sqrt在c++中的一些使用注意点,特别是与pascal的不同之处!!

按japsey33兄改过,
结果是所有数字都输出了.

我觉得程序没问题
问题是循环
i=1000时,第一个开方成立,到第二个开方时,被开方数变成了负数,所以出错。把i的初始值改成1112。

#include<stdio.h>
#include<math.h>
void main()
{
int i;
for(i=1000;i<=9999;i++)
if((sqrt(i))==floor(sqrt(i)) && sqrt(i-1111)==floor(sqrt(i-1111)))
printf("%d\n",i);
}