永发信息网

C语言的问题,高手请进

答案:5  悬赏:10  手机版
解决时间 2021-08-11 12:34
  • 提问者网友:寂寞撕碎了回忆
  • 2021-08-11 05:14
#include<stdio.h>
#include<math.h>
void main()
{
 long int i,x,y,z;
 for(i=1;i<=100000;i++)
 {
  x=sqrt(i+100);
  y=sqrt(i+168);
  if(x*x==(i+100)&&y*y==(i+168))
   printf("%ld",i);
}
报错:c:\windows\system32\hsh.cpp(8) : warning C4244: '=' : conversion from 'double' to 'long', possible loss of data
c:\windows\system32\hsh.cpp(9) : warning C4244: '=' : conversion from 'double' to 'long', possible loss of data
c:\windows\system32\hsh.cpp(13) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-08-11 06:10

#include<stdio.h>
#include<math.h>
void main()
{
 long int i,x,y,z;
 for(i=1;i<=100000;i++)
 {
  x=sqrt(i+100);
  y=sqrt(i+168);
  if(x*x==(i+100)&&y*y==(i+168))
   printf("%ld",i);
}


}


少一个花括号

全部回答
  • 1楼网友:西风乍起
  • 2021-08-11 09:17
根据代码来看 是少了一个 }
  • 2楼网友:拾荒鲤
  • 2021-08-11 08:43
最后少了一个大括号。
  • 3楼网友:神的生死簿
  • 2021-08-11 08:35

#include <stdio.h> #include <math.h>

int main() {  long int i,x,y;  for(i=1;i<=100000;i++)  {   x=(long)sqrt(i+100);   y=(long)sqrt(i+168);   if(x*x==(i+100)&&y*y==(i+168))    printf("%ld\n",i);  }  return 0; }//类型不同,可强制转换一下...不过有精度丢失的问题

  • 4楼网友:拜訪者
  • 2021-08-11 07:33
看提示是“数据类型转换异常” 位置应该是(我猜的) x=sqrt(i+100);  这一行 sqrt 是求开平方的函数,结果是double 类型,而 x 是long 型变量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯