첨자 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 |