홍민 님이 쓰신 글 :
: #include<stdio.h>
: #define man 4
: #define course 3
: void main()
: {
: int score[man][course]={{100,90,80}, {90,80,70}, {80,70,60}, {70,60,50}};
: int total[4]={0, };
: int average[4];
: int i,j;
: int count=0;
:
: for(i=0; i<man; i++)
: {
: for(j=0; j<course; j++)
: {
: total[i]+=score[i][j]; <-----------------이 부분입니다.
: }
: }
: while( count<man )
: {
: average[count] = total[count]/course; <--------------------이 부분입니다.
: printf("<%d subject> sum=%d average=%d\n", count+1, total[count], average[count]);
: count++;
: }
:
: }
: 간단한 배열을 통한 성적표만든 프로그램인데요..
: 위에 int total[4]={0, }; 배열을 초기값으로 선언하지 않으면 쓰레기값이 출력이 됩니다..
: 근데 int average[4]; 는 초기값선언을 하지 않아도 잘 실행되는데 왜 그런가요?
저도 아직 초보이지만 답변 드리겠습니다. ^^;;;
이중 for문에서
total[i]+=score[i][j];
가 있는데요 현재 total이라는 배열에 있는 값에 score배열의 값을 더해주는 것입니다. 배열을 초기화 해주기 전에는
그 배열안에 쓰레기값이 들어있습니다. 소스를 보시면 total 이라는 배열에 초기화를 해주시지 않고 초기화 되지 않은
그 쓰레기 값에 score 배열의 값을 더해주셨으므로 쓰레기 값이 나오게 되는 것입니다. average는 total과는 달리
쓰레기 값이 들어 있던 배열에 쓰레기 값이 담겨 있는 자신의 값을 사용하지 않고 total[count]/course 값을 넣어
주었으므로 쓰레기 값은 사라지고 total[count]/course 값이 들어갔으므로 상관이 없는 것입니다. ^^
이해가 되셨는지 모르겠습니다. 그럼 좋은하루 보내세요
|