1)오름차순 : 작 -> 큰 순서로의 나열
2)내림차순 : 큰 -> 작은값 순서로의 나열
원래---
199 100 -200 155 300
정렬후---
-200 100 155 199 300
*/
#include<stdio.h>
int main()
{
int i,j,temp,score[5]={199,100,-200,155,300};
printf("원래---\n");
for(i=0;i<5;i++)
{
printf("%5d",score[i]);
}
printf("\n");
//정렬하기
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(score[i] > score[j])
{
temp=score[i];
score[i]=score[j];
score[j]=temp;
}
}
}
printf("정렬후---\n");
for(i=0;i<5;i++)
{
printf("%5d",score[i]);
}
printf("\n");
return 0;
}
/성적처리에 정렬하기 추가/
/*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
#include<string.h>
int main()
{
int i,j,tot[Si],kor[Si],eng[Si],rank[Si],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",&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]);
}
//정렬하기
for(i=0;i<Si-1;i++)
{
for(j=i+1;j<Si;j++)
{
if(rank[i] > rank[j])
// 3 1
{
strcpy(tname,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],tname);
temp=kor[i];kor[i]=kor[j];kor[j]=temp;
temp=eng[i];eng[i]=eng[j];eng[j]=temp;
temp=tot[i];tot[i]=tot[j];tot[j]=temp;
tave=ave[i];ave[i]=ave[j];ave[j]=tave;
temp=rank[i];rank[i]=rank[j];rank[j]=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],kor[i],eng[i],tot[i],ave[i],grade[i],rank[i]);
}
return 0;
}
'PROGRAMMING > C' 카테고리의 다른 글
[대체] 11. 배열 ② 이차원배열 (0) | 2011.02.17 |
---|---|
[대체] 정렬, rank실습 (0) | 2011.02.17 |
[대체] 9. 배열 예제 (0) | 2011.02.17 |
[대체] 9.배열 ① 일차원배열 (0) | 2011.02.17 |
[대체] 8.다중반복문 (0) | 2011.02.16 |