본문 바로가기

C- Programming/구조체

구조체를 이용하여 학생의 이름,나이,국어성적,수학성적,영어성적을 넣고 평균 석차 대로 출력하는 소스를 만드시오.

#include <stdio.h>
#include <string.h>

struct student //구조체 student를 선언
{
 char name[20]; //문자열 크기 20짜리 변수 선언
 int age; //나이를 넣어줄 변수
 int korea_score; //국어 성적을 넣어줄 변수
 int math_score; //수학 성적을 넣어줄 변수
 int english_score; //영어 성적을 넣어줄 변수
 int sum; //평균을 구할때 사용할 합계를 선언
 int average; //평균을 위한 변수
};

int main() //메인 함수
{
 struct student arr[5]; //arr5개 배열
 int i,j, temp; //i, j, temp선언
 for(i=0; i<5; i++)//5번 반복하는 for문
 {
  printf("이름 입력 : \n"); scanf("%s", arr[i].name); //이름 입력 받아 저장
  printf("나이 입력 : \n"); scanf("%d", &arr[i].age); //나이를 입력 받아 저장
  printf("국어 점수 입력 : \n"); scanf("%d", &arr[i].korea_score); //국어 점수 입력 받아 저장
  printf("수학 점수 입력 : \n"); scanf("%d", &arr[i].math_score); //수학 점수 입력 받아 저장
  printf("영어 점수 입력 : \n"); scanf("%d", &arr[i].english_score); //영어 점수 입력 받아 저장
 }
 for(i=0; i<5; i++) //5번 반복하는 for문 입력받은 값들을 출력하기 위해서
 {
  arr[i].sum = arr[i].korea_score + arr[i].math_score + arr[i].english_score; //각 학생들의 총점
  arr[i].average = arr[i].sum / 3; //평균을 구함

  printf("---- %d번째 학생 정보 입력  ---- \n", i+1); //입력받은 학생 순서
  printf("이름 : %s \n", arr[i].name); //이름 출력
  printf("나이 : %d \n", arr[i].age); //나이 출력
  printf("국어 점수 : %d \n", arr[i].korea_score); //국어 점수 출력
  printf("수학 점수 : %d \n", arr[i].math_score); //수학 점수 출력
  printf("영어 점수 : %d \n", arr[i].english_score); //영어 점수 출력
 }
 for (i=0; i<5; i++)
 {
  for(j=0; j<4; j++)
  {
   if(arr[j].average<arr[j+1].average)  //평균 점수 대로 바꿔 주기 위한 버블정렬
   {
    temp = arr[j].average;
    arr[j].average = arr[j+1].average;
    arr[j+1].average = temp;
   }
  }
 }
 for (i=0; i<5; i++) //5번 반복하는 for문
 {
  printf("----  %d등 학생 정보  ----\n", i+1);  //학생 등수 출력
  printf("이름 : %s   평균 : %d \n",arr[i].name,arr[i].average); //학생의 이름과 평균을 출력
 }
 return 0; //함수 초기화
}

 

 

grade를 구조체에서 선언하여 써야 되지만 모르고 깜빡하고 잊어 버리고 하는 바람에 그냥 i+를 사용함

struct에 등수를 위한 변수를 선언하고 값을 초기화 해준 다음 사용하면 된다.