728x90
반응형
문제 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=265&sca=10i0
문제
10명의 학생 이름과 점수를 입력받아 이름과 점수, 등수를 입력받은 순서대로 출력하는 프로그램을 작성하시오.
단, 출력시 "이름", "점수", "등수"는 한 칸의 공백으로 구분을 하며, Name은 4칸(%4s), Score는 5칸(%5d), Rank는 각 4칸(%4d)으로 출력한다.
* 표준입출력방식으로 작성하세요.
입력 예
Hong 90
Lim 85
Park 88
Gong 75
Lee 100
Seo 90
Jang 75
Song 90
Kim 95
Sung 60
출력 예
Name Score Rank
Hong 90 3
Lim 85 7
Park 88 6
Gong 75 8
Lee 100 1
Seo 90 3
Jang 75 8
Song 90 3
Kim 95 2
Sung 60 10
Hint!
멤버변수에 번호를 추가하여 초기화 했다가 등수를 확정한 후 번호 순으로 다시 정렬하여 출력한다. 또는 자신보다 점수가 높은 개수를 구한 후 1을 더하여 자신의 등수를 구할 수도 있다.
코드 :
# include <stdio.h>
typedef struct Person
{
char name[21];
int score;
int rank;
}Person;
int main()
{
Person a[10];
int i,j;
for(i = 0; i<10; i++)
{
fscanf(stdin, "%s %d",a[i].name,&a[i].score);
a[i].rank=1;
}
for(i = 0; i<10; i++)
{
for(j = 0; j<10; j++)
{
if(a[i].score < a[j].score)
{
a[i].rank++;
}
}
}
printf("Name Score Rank\n");
for(i = 0; i<10; i++)
{
fprintf(stdout,"%4s %5d %4d\n",a[i].name,a[i].score,a[i].rank);
}
return 0;
}
728x90
반응형
최근댓글