问答详情
源自:4-6 循环结构之while循环

帮我纠错谢谢

#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

提问者:kiwilee0406 2016-10-20 15:01

个回答

  • qq_呵呵呵呵呵呵呵呵_03726044
    2016-10-20 15:32:10
    已采纳

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