첨자 2개

int a[3][4];

a는 배열명, 3은 전체 행의 개수, 4는 전체 열의 개수


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

------------------------*성적표*(등수순)---------------------------
이름    국어 영어  총점  평균     평가    등수
XXX     XX    XX   XXX   XX.X    X        X

int a[Si][4];
       0번열 1번열 2번열 3번열 4번열
*/

#include<stdio.h>
#define Si 5
#include<string.h>
int main()
{
    int i,j,a[Si][4],temp;
    double ave[Si],tave;
    char grade[Si],name[Si][15],tgrade,tname[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",&a[i][0]);
        printf("영어? ");
        scanf("%d",&a[i][1]);
        a[i][2]=a[i][0]+a[i][1];
        ave[i]=a[i][2]/2.0;
        //평가는 평균이 90이상 A, 80이상 B, 70이상 C, 60이상 D, 60미만 F
        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++)
    {
        a[i][3]=1;
        for(j=0;j<Si;j++)
        {
            if (a[i][2] < a[j][2]) a[i][3]++;
        }
    }

    printf("--------------------------*성적표*------------------------------\n");
    printf("이름\t\t국어\t영어\t총점\t평균 \t평가\t등수\n");
    for(i=0;i<Si;i++)
    {
        printf("%-10s\t",name[i]);
        for(j=0;j<3;j++)
        {
            printf("%3d\t",a[i][j]);
        }
        printf("%5.1f\t%3c\t%3d\n",ave[i],grade[i],a[i][j]);
    }
    //정렬하기
    for(i=0;i<Si-1;i++)
    {
        for(j=i+1;j<Si;j++)
        {
            if(a[i][3] > a[j][3])
            //  3                   1
            {
                strcpy(tname,name[i]);
                strcpy(name[i],name[j]);
                strcpy(name[j],tname);
                temp=a[i][0];a[i][0]=a[j][0];a[j][0]=temp;
                temp=a[i][1];a[i][1]=a[j][1];a[j][1]=temp;
                temp=a[i][2];a[i][2]=a[j][2];a[j][2]=temp;
                tave=ave[i];ave[i]=ave[j];ave[j]=tave;
                temp=a[i][3];a[i][3]=a[j][3];a[j][3]=temp;
                tgrade=grade[i];grade[i]=grade[j];grade[j]=tgrade;
            }
        }
    }
    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],a[i][0],a[i][1],a[i][2],ave[i],grade[i],a[i][3]);
    }
    return 0;
}



 //정렬하기
    for(i=0;i<Si-1;i++)
    {
        for(j=i+1;j<Si;j++)
        {
            if(a[i][3] > a[j][3])
            //  3                   1
            {
                strcpy(tname,name[i]);
                strcpy(name[i],name[j]);
                strcpy(name[j],tname);
                for(k=0;k<4;k++)
                {temp=a[i][k];a[i][k]=a[j][k];a[j][k]=temp;}
                   
                   
                //temp=a[i][1];a[i][1]=a[j][1];a[j][1]=temp;
                //temp=a[i][2];a[i][2]=a[j][2];a[j][2]=temp;
                tave=ave[i];ave[i]=ave[j];ave[j]=tave;
                //temp=a[i][3];a[i][3]=a[j][3];a[j][3]=temp;
                tgrade=grade[i];grade[i]=grade[j];grade[j]=tgrade;
            }
        }
    }

 

---->위에서 반복되는 부분을 for문으로 돌려줌(k변수 선언할것)

 

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

[대체] 자리배치(1차원배열, 난수)  (0) 2011.02.18
[대체] 판매보고서, 채점(2차원배열)  (0) 2011.02.17
[대체] 정렬, rank실습  (0) 2011.02.17
[대체] 10. 정렬하기  (0) 2011.02.17
[대체] 9. 배열 예제  (0) 2011.02.17
Posted by 마마필로 :