채택완료

c언어 구조체와 동적할당에 관련된 질문입니다.

지금 구현한 형태에서 동적할당을 이용하면서 구조체를 이용해 학생 이름, 학번, 점수 이 세가지 값을 입력받아서 처리하고 싶은데 어디서부터 손을 대야할지 방법을 잘 모르겠습니다.

Copy
#include <stdio.h>
#include <stdlib.h>

struct info {
    char name[12];
    int number;
    int score;
};
typedef struct info info;

void main()
{
    int n, i, sum = 0, * p;
    double avg;

    printf("학생 수를 입력하시오 : ");
    scanf_s("%d", &n);

    p = (int*)malloc(n * sizeof(struct info));
    printf("학생 수 만큼의 이름과 학번과 점수를 입력하시오 : ");
    for (i = 0; i < n; i++) {
        scanf_s("%d", p + i); //&p[i]
        sum += p[i]; //*(p+i)
    }
    avg = (double)sum / n;
    int max = p[0];
    for (i = 1; i < n; i++) {
        if (p[i] > max) max = p[i];
    }
    free(p);
    printf("평균: %.2lf 최고점: %d \n", avg, max);
}

답변 1개

채택된 답변
+20 포인트
2021-06-13 (일) 05:59:04
    p = (info*)malloc(n * sizeof(struct info));
    printf("학생 수 만큼의 이름과 학번과 점수를 입력하시오 : ");
    for (i = 0; i < n; i++) {
        scanf_s("%s", &p[i].name); //&p[i]
        scanf_s("%d", &p[i].number); //&p[i]
        scanf_s("%d", &p[i].score); //&p[i]
        sum += p[i].score;
    }

답변을 작성하려면 로그인이 필요합니다.