2012-11-18 3 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)