2012-11-18 19 views
0

當數字沒有完美的平方時,它應該返回false,否則返回根。但是在這段代碼中,它始終返回根。例如。輸入5,根2.完美廣場功能無法正常工作?

main() 
{ 

int i; 
int number=0; 
int result=0; 

for(i=0; i<10; i++){ 
    printf("Testing:"); 
    scanf("%i",&number); 


    result = isSquare(number); 

    if(result==0) 
     printf("Fail\n"); 
    else 
     printf("%i\n",result); 

} 
} 


int isSquare(int n) 
{ 
float root = sqrt(n); 
if (n == (int) n) 
    return root; 

else 
    return 0; 

} 

回答

2

相反的:

if (n == (int) n) // n is an integer (not necessarily a perfect square) 

您的意思是:

if (root == (int) root) // root is an integer (so n is a perfect square) 
1

它不應該是這樣嗎?

int isSquare(int n) 
{ 
float root = sqrt(n); 
if (n == ((int) root)*((int) root)) //Better use floor() function 
    return root; 
else 
    return 0; 
} 
+0

它的作品,thx的幫助! – redundant6939