728x90
반응형

문제 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=265&sca=10i0

 

JUNGOL

 

www.jungol.co.kr

문제

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
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기