자료형 변환에 관한 문제 입니다.

mailpass2000의 이미지

#include
#include

void main()
{

int Arry[12] ={72, 32, 56, 16, 73, 27,42, 48, 27, 32, 63, 55};
int oder[12];
int i, j;
int temp;
int sum= 0;
int ave=0;
int dev = 0;
float d = 10.44;

for(i =0; i <12; i++)
{
sum += (float)Arry[i];

printf(" %d 학생의 성적을 출력하면 : %d\n", i+1, Arry[i]);
//printf(" %d 학생까지의 누적 총점은: %d\n" , i+1, sum );
}

ave = (sum/12);

//printf(" 학생의 총점은 %d\n", sum);
printf(" 학생의 평균은 : %d \n", ave);

for(i =0; i < 12; i ++)
{
dev += pow((Arry[i]- ave),2);
printf(" %d 번째 편차 구하는 순서%d %d\n",i+1, Arry[i]-ave,dev);
}

dev = (dev/11);

dev = sqrt(dev);

printf(" 이 학생들의 총점은: %d\n" , sum );

printf(" 학생들의 표준 편차는 :%d\n" , dev);


for(i =0; i<12; i++) //선택 정렬 알고리즘(내림차순)
{
for(j = i+1; j <12; j++)
{
if(Arry[i] > Arry[j])
{
temp = Arry[i];
Arry[i] = Arry[j];
Arry[j] = temp;
}
}
}

for(i =0; i <12; i ++)
{
oder[i] = Arry[11-i]; //역순으로 바꿈
printf("%d등의 성적은 : %d\n", i+1 , oder[i]);
}

}
지금은 잘 되는데 왜 변수 자료형을 바꾸면 예를 들면 sum,ave,dev의 자료형을 float으로 바꾸면 값이 안 나오는지 이유를 모르겠네요
너무 초보라..ㅡㅡㅋ

형변환을 시키면 되지 않나요??