안녕하세요 엘체프 GG 입니다.
오늘은 드디어 어렵다는 포인터를 배웠는데 먼말인지....ㅋㅋ 일딴 반복숙달하고 이해할 예정.
배열포인터 성적 구하는 로직입니다.
-포인트배열의 활용 성적구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h> #include <stdlib.h> #define LESSONS 3 int main(void) { int students; // 학생수 int sum = 0; // 합계 int l, s; // for루프를 위한 임시변수 int score[][LESSONS] = { { 85, 90, 95 }, // 1번째 학생의 점수 { 70, 82, 60 }, // 2번째 학생의 점수 { 70, 82, 60 }, { 85, 90, 95 }, // 1번째 학생의 점수 { 70, 82, 60 }, // 2번째 학생의 점수 { 70, 82, 60 }, { 70, 82, 60 }, {78, 84, 92} }; // 8번째 학생의 점수 char *lesson[] = { "Korean", "English", "Math" }; students = sizeof(score) / sizeof(score[0]); // 학생 수 계산 for (l = 0; l<LESSONS; l++) // 과목에 대해 루프 { sum = 0; for (s = 0; s<students; s++) // 학생 수만큼 루프 { sum += score[s][l]; // 과목별 총합 계산 } printf("[%7s] Total: %d, ", lesson[l], sum); printf("Average: %0.2f\n", (double)sum / students); } system("PAUSE"); return 0; } | cs |
-배열포인터의 활용 성적구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #define _CRT_SECURE_NO_WARNINGS /* scanf사용시 */ #include <stdio.h> #include <stdlib.h> #define LESSONS 3 int main(void) { int students, sum = 0, l, s; char *lesson[] = { "Korean", "English", "Math" }; int(*score)[LESSONS] = NULL; printf("학생 수를 입력하세요: "); scanf("%d", &students); //입력받기 score = (int(*)[LESSONS])malloc(sizeof(int[LESSONS])*students); //malloc 힙역역의 자원을 쓴다. for (s = 0; s<students; s++) // 학생 수만큼 루프 { printf("%d번째 학생의 점수: ", s + 1); for (l = 0; l<LESSONS; l++) // 과목 수만큼 루프 { scanf("%d", &score[s][l]); // 점수 입력 받음 } } for (l = 0; l<LESSONS; l++) // 과목 수만큼 루프 { sum = 0; for (s = 0; s<students; s++) // 학생 수만큼 루프 { sum += score[s][l]; // 과목별 총합 계산 } printf("[%7s] Total: %d, ", lesson[l], sum); printf("Average: %0.2f\n", (double)sum / students); } free(score);// 메모리 해제 ex)자바의 가비지컬럭터 자원반납 system("PAUSE"); return 0; } | cs |
-2차원 포인터의활용 성적구하기.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #define _CRT_SECURE_NO_WARNINGS /* scanf사용시 */ #include <stdio.h> #include <stdlib.h> #define LESSONS 3 int main(void) { ////////////////////////////////////////////// //변수부 int students, sum = 0, l, s; int *lessons = NULL; int **score = NULL; ////////////////////////////////////////////// //입력부 printf("학생수를 입력하세요: "); scanf("%d", &students); score = (int **)malloc(sizeof(int *)*students); // 세로축에 해당하는 메모리 할당 lessons = (int *)malloc(sizeof(int)*students); /////////////////////////////////////// //처리부//출력부 for (s = 0; s<students; s++) // 학생 수만큼 루프 { printf("%d번째 학생의 수강과목 수: ", s + 1); scanf("%d", &lessons[s]); // 학생별 수강과목 수 입력 score[s] = (int *)malloc(sizeof(int)*lessons[s]); // 가로축에 해당하는 메모리 할당 printf("%d번째 학생의 점수 (%d개): ", s + 1, lessons[s]); for (l = 0; l<lessons[s]; l++) // 과목 수만큼 루프 scanf("%d", &score[s][l]); // 점수 입력 } for (s = 0; s<students; s++) // 학생 수만큼 루프 { sum = 0; for (l = 0; l<lessons[s]; l++) sum += score[s][l]; // 학생별 평균 계산 printf("%d번째 학생: %0.2f\n", s + 1, (double)sum / lessons[s]); } /////////////////////////////////////////// //자원반납부 for (s = 0; s<students; s++) // 학생 수만큼 루프 free(score[s]); // 가로축에 해당하는 메모리 반납 free(score); // 세로축에 해당하는 메모리 반납 free(lessons); system("PAUSE"); return 0; } | cs |
감사합니다.
'스터디 > C,C++' 카테고리의 다른 글
C 문자열 자르기 문제 (7) | 2018.02.12 |
---|---|
구조체 (6) | 2018.02.05 |
중첩반복문 별찍기 (7) | 2018.01.26 |
C실행툴 DEV-C++ 설치 (5) | 2018.01.22 |
ASCII 코드 도표 (6) | 2018.01.18 |