帮我纠错谢谢

来源:4-6 循环结构之while循环

kiwilee0406

2016-10-20 15:01

#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回答

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

    kiwile...

    非常感谢!

    2016-10-20 21:50:07

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926207 学习 · 20797 问题

查看课程

相似问题