안녕하세요 엘체프 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] = {
        { 859095 },            // 1번째 학생의 점수
        { 708260 },            // 2번째 학생의 점수
        { 708260 },
        { 859095 },            // 1번째 학생의 점수
        { 708260 },            // 2번째 학생의 점수
        { 708260 },
        { 708260 },
        {788492} };            // 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

+ Recent posts