C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 8.1.4. 예제. 구조체를 사용한 성적처리 프로그램 : 구조체_성적처리.c
글번호: 129
작성자: 레드플러스
작성일: 2005/08/10 오후 3:49:45
조회수: 10170
#include <stdio.h>

#define N 2

// 구조체 설계
struct Score{
    char name[10];    // *name : 이름
    int kor;            
    int eng;
    int tot;
    double avg;
    int rank;        // 등수
};

void main(){
    int i = 0;
    int j = 0;
    struct Score temp;
    int r = 0;
    int maxEng = 0;
    char *maxEngName;
    //구조체 형 배열 선언
    /*
    struct Score objScore[2] = {
        {"홍길동",95,80,0,0.0},
        {"백두산",80,100,0,0.0}
    };
    */
    //구조체 형 배열 초기화 : scanf()
    struct Score objScore[N];

    // Input
    for(i = 0; i < N; i++){
        printf("\n%d번째 이름 : ", i+1);
        scanf("%s", &objScore[i].name);
        //gets(objScore[i].name);
        printf("\n국어점수 : ");
        scanf("%d", &objScore[i].kor);
        printf("\n영어점수 : ");
        scanf("%d", &objScore[i].eng);
    }

    // Process : 총점과 평균구하기.
    for(i = 0; i < N; i++){
        // 총점
        objScore[i].tot = objScore[i].kor + objScore[i].eng;
        // 평균
        objScore[i].avg = objScore[i].tot / 2.0;
    }

    // 순위 알고리즘 적용
    for (i = 0; i < N; i++)
    {
        r = 1; // 1등으로 초기화
        for (j = 0; j < N; j++)
        {
            if (objScore[i].tot < objScore[j].tot)
            {
                r++;
            }
            objScore[i].rank = r;
        }
    }

    // 등수에 따라서 오름차순 정렬해서 출력하시오...
    for (i = 0; i < N - 1; i++)
    {
        for (j = i + 1; j < N; j++)
        {
            if (objScore[i].rank > objScore[j].rank)
            {
                temp = objScore[i];
                objScore[i] = objScore[j];
                objScore[j] = temp;
            }
        }
    }

    // 최대값 알고리즘 적용
    for (i = 0; i < N; i++)
    {
        if (maxEng < objScore[i].eng)
        {
            maxEng = objScore[i].eng;
            maxEngName = objScore[i].name;
        }
    }

    // Output : 결과 출력
    printf("\n이  름 국어 영어 총점 평 균 등수\n");
    for(i = 0; i < N; i++)
    {
        printf("%6s %4d %4d %4d %4.1f %4d\n", objScore[i].name, objScore[i].kor, objScore[i].eng,
        objScore[i].tot, objScore[i].avg, objScore[i].rank);
    }  
    printf("영어 점수 최고 : %d\n", maxEng);
    printf("영어 점수 최고 득점자 : %s\n", maxEngName);

    // 계속 원하는 정보를 확장해서 출력할 수 있다...

}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 9. 기억 클래스와 전처리기 - 레드플러스 2005-07-26 5376
  8. 구조체와 공용체 그리고 열거형 - 레드플러스 2005-07-26 5038
  8.1. 구조체(Struct) StructDemo.png(131 KB) 레드플러스 2005-08-03 4214
  8.1.1. 예제. 구조체를 사용한 회원 정보 : 구조체.c 구조체_구조체.png(112 KB) 레드플러스 2005-08-03 5071
  8.1.1.1. 예제. 메인함수내에 구조체 선언과 동시 초기화 - 레드플러스 2005-11-14 6195
  8.1.1.1.1. 예제. 변수/배열/구조체 비교 - 레드플러스 2007-01-18 4608
  8.1.2. 예제. 구조체 배열 사용 : 구조체_구조체배열.c 구조체_구조체배열.png(128 KB) 레드플러스 2005-08-03 4900
  8.1.3. 예제. 구조체 포인터 사용 : 구조체_구조체포인터.c 구조체_구조체포인터.png(149 KB) 레드플러스 2005-08-03 5840
현재글 8.1.4. 예제. 구조체를 사용한 성적처리 프로그램 : 구조체_성적처리.c - 레드플러스 2005-08-10 10170
  8.1.5. 예제. 중첩 구조체 : 구조체_중첩구조체.c - 레드플러스 2005-08-10 5914
  중첩 구조체: structPractice.c StructPractice.png(83 KB) 레드플러스 2017-12-18 2216
  8.1.6. 예제. 함수의 매개변수에 구조체 형 변수 적용하기 : 구조체_함수매개변수... - 레드플러스 2005-08-10 4328
  8.1.7. 함수에 포인터 구조체 매개변수 사용 : 구조체_포인터함수매개변수.c - 레드플러스 2005-08-10 5102
  8.1.8. 함수의 반환값에 구조체 사용 : 구조체_함수반환값.c - 레드플러스 2005-08-10 4393
  8.1.9. 함수 매개변수의 종류 3가지 - 레드플러스 2005-11-16 4361
  8.1.10. 함수의 매개변수로 변수/배열/구조체 넘기기(값형(value type)) - 레드플러스 2005-11-16 7711
  8.1.11. 함수의 매개변수로 변수/배열/구조체 전달(참조형 전달(reference... - 레드플러스 2005-11-16 6493
  8.1.12. 구조체 비트필드를 사용한 메모리 공간 절약 - 레드플러스 2005-11-16 4595
  구조체_구조체비트필드.c 구조체_구조체비트필드.png(84 KB) 레드플러스 2013-12-31 3761
  8.1.13. 함수의 매개변수 전달 방식 6가지 비교(변수/배열/구조체/포인터) - 레드플러스 2007-01-15 4468
  8.2. 공용체(Union) - 레드플러스 2005-08-03 4293
  8.2.1. 예제. 공용체 사용 : 공용체.c - 레드플러스 2005-08-03 4203
  8.2.2. 예제. 공용체 사용 예제 : 공용체설명.c 공용체설명_공용체설명.png(162 KB) 레드플러스 2005-08-10 4717
  8.2.3. 공용체 크기 - 레드플러스 2005-11-16 4228
  8.3. 열거형(Enumeration) : 열거형설명.c 열거형설명_열거형설명.png(95 KB) 레드플러스 2005-08-10 4276
  8.3.1 열거형을 사용한 문자열 상수화 : 열거형.c - 레드플러스 2005-08-10 4362
  8.3.2 예제. 열거헝으로 요일을 상수화 하기 - 레드플러스 2005-11-03 4248
다음글 7. 포인터(Pointer) - 레드플러스 2005-07-26 5191
 
손님 사용자 Anonymous (손님)
로그인 Home