#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
#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;