//////
Search
📒

구조체

1.
이름 나이 성적값을 가지는 student 구조체
2.
전체 학생의 성적 평균 구하기
조건은 다음과 같습니다
a.
구조체 배열을 사용하여 구현
b.
구조체 배열을 동적 생성

소스코드

#include <stdio.h> #include <stdlib.h> // 구조체 선언 struct Student { char name[3]; int age; float score; }; float get_avg(struct Student *students) { float result = 0; for(int i=0; i<3; i++) { // 주소값 통해서 스코어 뽑아내서 합산 result += (students + i)->score; } // 인원수만큼 나눠줘서 값 얻기 result /= 3; return result; } int main(void) { // 구조체 배열 생성 후 메모리 동적 할당 struct Student *students = (struct Student*)malloc(sizeof(struct Student) * 3); // 평균 성적 초기화 float avg_score = 0; // 메모리 할당 for(int i=0; i<3; i++) { // 각 학생 정보 동적 할당 scanf("%s %d %f", students[i].name, &students[i].age, &students[i].score); } // 평균 점수 출력 printf("평균 성적 : %.2f\n", get_avg(students)); // 동적 메모리 할당 해제 free(students); return 0; }
C
복사

실행결과

느낀점

포인터에 대해 잘 아는게 맞나하는 의구심이 제게 들었습니다. 주소연산자와 참조연산자를 매끄럽게 사용하지 못했고, 구글링을 이용해 주소연산자를 활용했습니다. 물론 구글링을 못하는 것보단 낫지만, 구글링을 안 하고 자료구조 과제를 할 줄 알아야한다는 생각이 있었지만요. 언제나 공부해도 자주 헷갈리는 내용이긴 하지만, 포인터에 대해 재복습을 해야겠다는 생각이 많이 들었습니다.