728x90
✅ 오늘의 문제 : 점수의 평균 구하기
학생의 수를 입력받은 뒤, 그 수만큼 학생의 점수를 입력받아 평균을 구하는 프로그램을 작성해보세요.
(코뮤니티 모각코 과정 中 출제되어 푼 문제입니다.)
실행예시!
학생의 수 : 10
학생1: 20
학생2: 30
학생3: 10
학생4: 93
학생5: 57
학생6: 88
학생7: 84
학생8: 70
학생9: 40
학생10: 55
평균: 54
초안
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int student, sum = 0, avg = 0;
printf("학생의 수 : ");
scanf("%d", &student); //학생 수 입력 받기
printf("\n");
int* stuPtr1 = malloc(sizeof(int) * student); // (int 크기 * 입력 받은 크기)만큼 동적 메모리 할당
//int* StuPtr1 = calloc(student, sizeof(int))
for (int i = 0; i < student; i++) { //입력받은 학생 수 만큼 반복
printf("학생%d : ", i + 1);
scanf("%d", &stuPtr1[i]); //사용자로부터 값 할당받기
}
//평균 구하기
for (int i = 0; i < student; i++) {
sum += stuPtr1[i];
avg = sum / student;
}
printf("\n\n평균 : %d\n", avg);
free(stuPtr1);
return 0;
}
평균을 좀 더 효율적으로 구할 수 있지 않을까...싶은데
생각이 안나서 코드인증 할 때 올려둠
그랬더니 매니저님이 두 반복문이 같은 작업을 하고있다구 어떻게 하는지 설명해주셔서
수정수정...
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int student, sum = 0, avg = 0;
printf("학생의 수 : ");
scanf("%d", &student); //학생 수 입력 받기
printf("\n");
int* stuPtr1 = malloc(sizeof(int) * student); // (int 크기 * 입력 받은 크기)만큼 동적 메모리 할당
//int* StuPtr1 = calloc(student, sizeof(int))
for (int i = 0; i < student; i++) { //입력받은 학생 수 만큼 반복
printf("학생%d : ", i + 1);
scanf("%d", &stuPtr1[i]); //사용자로부터 값 할당받기
sum += stuPtr1[i];
}
//평균 구하기
avg = sum / student;
printf("\n\n평균 : %d\n", avg);
free(stuPtr1);
return 0;
}
훨씬 깔끔해졌다!
정적 메모리, 동적 메모리 비교...
정적 메모리 | 동적 메모리 | |
장점 | 메모리 누수 걱정X | 메모리 낭비 X |
단점 | 메모리 공간의 크기가 정해져 있다. (큰 공간의 경우 추가해줄 수 없고, 작은 공간의 경우 메모리 낭비가 발생!!) |
메모리 누수 걱정해야됨 ( free()함수를 통해 해결) |
메모리 누수란?
더보기
메모리 누수(memory leak) 현상:
컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상.
할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비된다.
즉, 더 이상 불필요한 메모리가 해제되지 않으면서 메모리 할당을 잘못 관리할 때 발생한다.
일부 서적에서 메모리 손실이라는 용어로 뜻을 옮기기도 하지만
leak라는 표현은 단순히 잃는 것 이상의 개념이므로 누수라는 표현이 더 정확하다.
'ProgrammingLanguage > C언어' 카테고리의 다른 글
C언어 | 문자열 함수, 버퍼, 버퍼 비우기 예제 (0) | 2021.02.19 |
---|---|
C언어 | 동적 메모리 할당 예제(2) (0) | 2021.02.18 |
C언어 | continue문 예제 (0) | 2021.02.14 |
C언어 | 반복문 예제, 구구단, 합 구하기, n! 구하기, 약수 출력, 패턴 출력 (0) | 2021.02.14 |
C언어 | if else if 예제 (0) | 2021.02.14 |