为了账号安全,请及时绑定邮箱和手机立即绑定

帮我纠错谢谢

#include <stdio.h>

#include <math.h>

#define M 1000

int main()

{

int num;

printf("请输入一个小于%d的正数:",M);

scanf("%d",&num);

while(num>1000)

{printf("输入有误请重新输入:");

scanf("%d",&num);

}

printf("%d的平方根是%d",num,sqrt(num));

return 0;

}

以上是错误代码

#include <stdio.h>

#include <math.h>

#define M 1000

int main()

{

int num,result;

printf("请输入一个小于%d的正数:",M);

scanf("%d",&num);

while(num>1000)

{printf("输入有误请重新输入:");

scanf("%d",&num);

}

result=sqrt(num);

printf("%d的平方根是%d",num,result);

return 0;

}

以上是正确代码  谁能解释解释呢 为什么第一种不通过 我用的是vc++6.0

正在回答

1 回答

#include <stdio.h>

#include <math.h>

#define M 1000

int main()

{

int num;

printf("请输入一个小于%d的正数:",M);

scanf("%d",&num);

while(num>1000)

{printf("输入有误请重新输入:");

scanf("%d",&num);

}

printf("%d的平方根是%d",num,(int)sqrt(num));

return 0;

}

或者 ("%d的平方根是%5.2f",num,sqrt(num));


因为你没规定sqrt(num)是什么型。而sqrt默认似乎是浮点型,你可以去查一查。

你用result接收了的数据,而你定义 int result;所以就是整形,值就是整数,这样也会丢失小数.

如果你为了精确可以定义 float result;

0 回复 有任何疑惑可以回复我~
#1

kiwilee0406 提问者

非常感谢!
2016-10-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

帮我纠错谢谢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信