구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기 #define N 5 struct grade { char name[10]; ? }; void main() { struct grade ? = { {“홍길동”, 4.2, 4.0}, … }; struct grade max; // max 역시 학생 한 명의 정보를 저장하는 구조체로 이름 (name) 1학기 (first) 2학기 (second) 평점 (mean) “홍길동” 4.2 4.0 ? “이몽룡” 3.5 3.1 “김갑돌” 4.1 3.9 “황진이” “성춘향” 2.5 2.7 std[0] std[1] std[2] std[3] std[4] std[i]의 mean 멤버의 값을 구한다. std 배열에서 평점이 최대인 학생의 정보를 max에 저장한다. std[i]의 mean과 max의 mean을 비교하여 std[i]의 mean이 더 크다면 max를 std[i]로 변경함 std 배열의 내용을 출력한다. max의 내용을 출력한다
일단 구조체 배열에서 각 학생의 mean멤버값을 구한 후 평균이 최대인 학생의 정보를 구조체 변수 max에 구하기 struct grade std[N]; name first second mean std[0] “홍길동” 4.2 4.0 4.1 std[1] “이몽룡” 3.5 3.1 3.3 std[2] “김갑돌” 3.9 std[3] “황진이” 4.15 std[4] “성춘향” 2.5 2.7 2.55 struct grade max; max의 최종 결과 내용 name first second mean “홍길동” 4.2 4.0 4.1 max의 초기값을 첫번째 학생의 정보로 지정하기 max = std[0]; max를 배열과 같은 구조체형으로 선언함으로써 max에 평균이 최대인 학생의 모든 정보를 포함시킬 수 있다. 평균이 최대인 학생의 이름은 max.name으로 출력할 수 있다.
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기 모든 학생에 대해 평균 멤버를 구하기 (for문 이용) for (i=0; i<N; i++) std[i].mean = (double)(std[i].first + std[i].second )/2; max의 초기치를 첫번째 학생의 자료로 지정한 후(max=std[0]) max의 mean 멤버값과 다른 학생들의 mean 멤버값을 비교하며 검토하기 (for문 이용) if (max.mean < std[i].mean ) max = _______________________; //구조체 자료 통째로 대입 모든 학생에 대해 std[i]의 모든 멤버를 출력하기 (for문 이용) max의 모든 멤버를 출력하기 printf(“%s %.1lf %.1lf %.2lf \n”, max.name, max.first, max.second, max.mean);