[대체] 9. 배열 예제

2011. 2. 17. 01:15 from PROGRAMMING/C

/0217_5.여러명의 이름처리/

#include <stdio.h>
int main()
{
    char name[5][15] = {"홍길동", "김 진 수", "강 호동", "남궁 지수", "이진"};
    // 홍길동 [0][0]~[0][6], 김진수 [1][0]
    int i;

    printf("name의 byte수 : %d\n\n", sizeof(name));  // 5* 15* 1byte = 75 byte

    for(i=0; i<5; i++)
    {
        printf("name[%d] : %-10s\n", i, name[i]);  // 10칸 확보해서 왼쪽(-) 정렬
    }

    return 0;
}

//선언은 2차원처럼 보이나 실행은 1차원



/0217_성적처리.c에 이름출력 추가/

 

/*5명의 data를 입력하여 다음처럼 성적처리!
#1)
이름: 홍 길 동
국어? 88
영어? 87
#2)
.....
------------------------*성적표*---------------------------
이름    국어 영어  총점  평균     평가
XXX     XX    XX   XXX   XX.X    X
...
평가는 평균이 90이상 A, 80이상 B, 70이상 C, 60이상 D, 60미만 F
*/

#include<stdio.h>
#define Si 5
int main()
{
    int i,tot[Si],kor[Si],eng[Si];
   
double ave[Si];
    char grade[Si],
name[Si][15];
    for(i=0;i<Si;i++)
    {
        printf("#%d)\n",i+1);
        printf("이름? ");
        fflush(stdin);
        gets(name[i]);//==gets(%name[i][0]);
        printf("국어? ");
        scanf("%d",&kor[i]);
        printf("영어? ");
        scanf("%d",&eng[i]);
        tot[i]=kor[i]+eng[i];
        ave[i]=tot[i]/2.0;
        switch((int)ave[i]/10)
        {
            case 10://맨처음 만나는 break는 전 문장 실행
            case 9:grade[i]='A';break;
            case 8:grade[i]='B';break;
            case 7:grade[i]='C';break;
            case 6:grade[i]='D';break;
            default:grade[i]='F';//switch문에서 default이하의 break는 생략가능
        }
    }
    printf("--------------------------*성적표*------------------------------\n");
    printf("이름\t\t국어\t영어\t총점\t평균 \t평가\n");
    for(i=0;i<Si;i++)
    {
        printf
("%-10s\t%3d\t%3d\t%3d\t%5.1f\t%3c\n",name[i],kor[i],eng[i],tot[i],ave[i],grade[i]);
    }
    return 0;
}


/0217_6등수구하기/

/*6등수구하기.c
점수  등수
-----------
199    3
100    4
200    2
100    4
300    1
*/

#include<stdio.h>
int main()
{
    int score[5]={199,100,200,100,300},i,j;
    int rank[5];
    for(i=0;i<5;i++)  //i가 기준
    {
        rank[i]=1;//비교전에 초기치
        for(j=0;j<5;j++)//j가 비교대상
        {
            if(i==j)continue;//i와j가 같은경우 실행하지 않고 건너뛰게 하기 위해 continue추가
            if(score[i] < score[j]) rank[i]++;
        }
    }
    printf("점수\t등수\n");
    printf("------------\n");
    for(i=0;i<5;i++)
    {
        printf("%3d\t%3d\n",score[i],rank[i]);
    }
    return 0;
}


/성적처리 파일에 등수 추가/

#include<stdio.h>
#define Si 5
int main()
{
    int i,j,tot[Si],kor[Si],eng[Si],rank[Si];
    double ave[Si];
    char grade[Si],name[Si][15];
    for(i=0;i<Si;i++)
    {
        printf("#%d)\n",i+1);
        printf("이름? ");
        fflush(stdin);
        gets(name[i]);//==gets(%name[i][0]);
        printf("국어? ");
        scanf("%d",&kor[i]);
        printf("영어? ");
        scanf("%d",&eng[i]);
        tot[i]=kor[i]+eng[i];
        ave[i]=tot[i]/2.0;
        switch((int)ave[i]/10)
        {
            case 10://맨처음 만나는 break는 전 문장 실행
            case 9:grade[i]='A';break;
            case 8:grade[i]='B';break;
            case 7:grade[i]='C';break;
            case 6:grade[i]='D';break;
            default:grade[i]='F';//switch문에서 default이하의 break는 생략가능
        }
    }
 //등수구하기
    for(i=0;i<Si;i++)
    {
        rank[i]=1;
        for(j=0;j<Si;j++)
        {
            if (i==j) continue;  
            if(tot[i] < tot[j] ) rank[i]++;
        }
    }

    printf("--------------------------*성적표*------------------------------\n");
    printf("이름\t\t국어\t영어\t총점\t평균 \t평가\t등수\n");
    for(i=0;i<Si;i++)
    {
        printf("%-10s\t%3d\t%3d\t%3d\t%5.1f\t%3c\t%3d\n",name[i],kor[i],eng[i],tot[i],ave[i],grade[i],rank[i]);
    }
    return 0;

}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 정렬, rank실습  (0) 2011.02.17
[대체] 10. 정렬하기  (0) 2011.02.17
[대체] 9.배열 ① 일차원배열  (0) 2011.02.17
[대체] 8.다중반복문  (0) 2011.02.16
[대체] 7. 반복문(do~while)  (0) 2011.02.16
Posted by 마마필로 :