求平均数和方差,这输出的数值咋不对

r=0.0;
h=0.0;
for(i=1;i<=10;i++)
{
r=r+n[i];
}
printf("%d\n",r);
r=r/10;

      for(i=1;i<=10;i++)
      {
        p=(n[i]-r)*(n[i]-r);
        h=h+p;
      }
      
    h=h/10;
    printf("%.2f\n",h);

输入:16 20 41 23 200 49 9 35 37 171
输出:-712522552
4105.90
答案:601
4106.29
麻烦各位大佬看看,这哪里不对了。
(这是全部代码中的一小部分,声明,输入的部分没复制下来)
r,h都是浮点型,数组是整型。

首先数组是从0开始计数的,不知道你的n[]是怎么输入的,其次是浮点数是%f不是%d,而且你先输出再计算平均数,不应该先计算平均数再输出r吗?