求大神给个代码,c语,求指导

现在给你n个数,判断对每个数开平方后的和是不是一个整数。

比如:

    4,9,16这三个数开平方后的和为9,是一个整数。

    2,3,19这三个数开平方后的和为7.5051633134826458945661170495752......,是一个小数。

你的任务就是判断n个数开方后的和是不是一个整数。

输入
多组数据;
对于每组数据:
第一行一个n(n<=100,正整数)。
第二行n个数,保证都是不大于10^9的非负整数。
输出
每个数开平方后的和是整数则输出Yes,否则输出No。
样例输入

3
4 9 16
3
2 3 16

样例输出

Yes
No

平方根计算

向下取整

#include<math.h>
#include<stdio.h>
int main(void)
{
   double x = 4.0,result,
   result = sqrt(x); //result*result=x
   return (result-floor(result))==0.0? true:false;
}   
 #include <stdio.h>
#include <math.h>

#define N 105

int main(){
    int num;
    int i;
    int arr[N];
    bool flag;
    while(scanf("%d", &num)){
        flag = true;
        for(i = 0; i < num; i++)
            scanf("%d", &arr[i]);
        for(i = 0; i < num; i++){
            double tmp = sqrt(arr[i] * 1.0);
            if(tmp != (int)tmp){
                flag = false;
                break;
            }
        }
        if(flag) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

整数开方后不是整数就是一个无理数,无理数相加不会出现有理数。也就是说,这组整数中,有一定不能开方,那他们的平方根之和不可能是整数。

判断一个数是否是小数:取整之后与原数相减,如果都是整数,相减一定是0;如果原数不是整数,则相减之后一定不是0