最强废铁h 发表于 2021-4-26 21:24:29

算整数的平方根

#include<stdio.h>
#include<math.h>
int main()
{
    int i;
    scanf("%d",&i);
    printf("%d的平方根的整数部分是%d\n",i,sqrt(i));
    return 0;
}

#include<stdio.h>
#include<math.h>
int main()
{
    int i,k;
    scanf("%d",&i);
    k=sqrt(i);
    printf("%d的平方根的整数部分是%d\n",i,k);
    return 0;
}

为什么只用有第二个可以,第一个也没有错啊。怎么回事?????

wp231957 发表于 2021-4-26 21:35:32

sqrt得到的应该是浮点数

肖-肖 发表于 2021-4-26 22:12:21

本帖最后由 肖-肖 于 2021-4-26 22:13 编辑

因为sqrt()函数的返回值使双精度类型的如下

你的第一个程序输出的时候使用%d输出的,所以不行
你的第二个程序用int k = sqrt(i);使双精度转换为了整型
其实应该用强制类型转换的-》就是:int k = (int)sqrt(i);
页: [1]
查看完整版本: 算整数的平方根