幫我糾錯謝謝
#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
2016-10-20
#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;