본문 바로가기
C Programming/연습 문제

[C언어 연습문제]강좌 16. Students Marks Sum(성별로 구분된 학생 점수의 합)

by 희품 2019. 4. 19.
반응형


학습(Study) & 목표(Objective) & 과제(Task)

정수 배열 marks를 받습니다. marks 점수는 한 학급의 학생 점수를 나타냅니다.

교차 요소로, marks0, marks2, marks4는 남학생의 점수를 나타냅니다.

유사하게, marks1, marsk3, marks5는 여학생의 점수를 나타냅니다.


배열 이름 marks는 배열의 주소를 기반으로 하는 포인터로 동작합니다. 다시말하면, marks 배열은 메모리에 저장된 marks0의 주소를 포함합니다.


예를 들어, marks = [3, 2, 5]와 marks는 0x7fff9575c05f로 시작하는 메모리에 저장되고, 0x7fff9575c05f는 marks0의 메모리 주소라고 볼 수 있습니다.

다음 조건에 맞는 합계를 반환하는 함수 marks_summation(int* marks, char gender, int number_of_students); 의 구현을 완성하면 됩니다.

  • gender = b 이면, 남학생의 marks 점수 값의 합
  • gender = g 이면, 여학생의 marks 점수 값의 합


제공된 코드 조각은 성별과 mark의 점수 정보를 읽습니다. 그런 다음 위에서 설명한 대로 marks_summation() 함수를 호출하여 학생 정보에 따른 합계를 구해 출력합니다.


입력 형식(Input Format)

첫 줄에는 number_of_students에 저장되는 학급의 학생 수를 입력받습니다. 즉, mark의 element 개수를 입력받는 겁니다.

그다음 줄부터는 marks element의 값을 입력받습니다.

마지막 줄은 성별을 입력받습니다.


제약 조건(Constraints)


출력 형식(Output Format)

출력은 위에서 설명한 대로 marks에 있는 모든 대체 요소의 합계를 출력합니다.


입력 예제(Sample Input) - 1

3

3

2

5

b


출력 예제(Sample Output) - 1

8

marks = [3, 2, 5] 그리고, gender = b 입니다.

따라서 marks0 + marks2 = 3 + 5 = 8이 출력됩니다.


입력 예제(Sample Input) - 2

5

1

2

3

4

5

g


출력 예제(Sample Output) - 2

6

marks = [1, 2, 3, 4, 5] 그리고, gender = g 입니다.

따라서 marks1 + marks3 = 2 + 4 = 6이 출력됩니다.



입력 예제(Sample Input) - 3

1

5

g


출력 예제(Sample Output) - 3

0

marks = [5] 그리고, gender = g 입니다.

여기서는 marks1이 없기 때문에 0이 출력됩니다.


주어진 코드


#include <stdio.h>
#include <stdlib.h>
 
int marks_summation(int* marks, int number_of_students, char gender)
{
    int i = 0
    int nTotal = 0;
 
    for(i = 0; i < number_of_students; i++)
    {
        if(gender == 'g')
        {
            if(i % 2 != 0)
                nTotal += marks[i];
        }
        else
        {
          if (i % 2 == 0)
            nTotal += marks[i];
        }
    } // end for  
 
    return nTotal;
}
 
int main()
{
    int number_of_students;
    char gender;
    int sum;
  
    scanf("%d"&number_of_students);
    int *marks = (int *malloc(number_of_students * sizeof (int));
 
    for (int student = 0; student < number_of_students; student++)
{
        scanf("%d", (marks + student));
    }
    
    scanf(" %c"&gender);
    sum = marks_summation(marks, number_of_students, gender);
    printf("%d", sum);
    free(marks);
 
    return 0;
}

위에서 설명한 대로 총학생 수를 입력받고, 요소와 성별을 입력하는 코드라고 보시면 되겠습니다.


답안 코드




추가 답안 코드







반응형