어느 분 댓글 보고 만들어 본다. 이름도 같이 배열되는 것이 가능한가? 하시기에.
동점자 처리도 이전에 비해 더 볼만하게 만들었다.
목표는 아래와 같이 만드는 것이다. 참, 이름은 영문 기준 30글자까지 입력 가능하다.
아 그리고 나중에는 이름 입력하기 귀찮아서 그냥 1,2,3,4,5,6,7,8,9,10 으로 이름 일괄 입력하였다.
아래부터는 코드.
#include <stdio.h>
struct Student
{
char name[30];
int number;
int score;
int rank;
};
char type_name(char *name, char *temp);
int main()
{
char temp[30];
int i,j,k,l,m;
struct Student student_list[10];
for(i=0;i<10;i++)
{
student_list[i].number = i+1;
student_list[i].rank = 0;
}
k = 0;
printf("학생들의 이름을 입력해 주십시오. \n");
for(i=0;i<10;i++)
{
printf("학생 %d : ", i+1);
scanf("%s", temp);
type_name(student_list[i].name, temp);
}
printf("학생들의 성적을 입력해 주십시오.\n");
for(i=0;i<10;i++)
{
printf("학생 %d : ", i+1);
scanf("%d", &student_list[i].score);
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(student_list[i].score<student_list[j].score)
{
student_list[i].rank = student_list[i].rank+1;
}
}
}
printf("학생들의 성적 순위는 다음과 같습니다. \n");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(i==student_list[j].rank)
{
k++;
m=j;
}
}
if(k==1)
{
printf("%d 등 : %s, %d 점\n", i+1,student_list[m].name, student_list[m].score);
}
else if(k>1)
{
printf("아래 %d 명은 동점자입니다.------------\n", k);
for(l=0;l<10;l++)
{
if(i==student_list[l].rank)
{
printf("%d 등 : %s, %d 점\n", i+1,student_list[l].name, student_list[l].score);
}
}
printf("-------------------------------------\n");
}
k=m=0;
}
return 0;
}
char type_name(char *name, char *temp)
{
while(*temp)
{
*name = *temp;
name++;
temp++;
}
*name = '\0';
return 0;
}
이 아래는 간략하게 해석
C 언어 예제, string 문자열 int 형으로 전환하기 (0) | 2014.06.28 |
---|---|
C언어 예제, 도서관리 프로그램-구조체 응용 (0) | 2014.06.10 |
C 언어 예제, 도서 관리 프로그램 (0) | 2014.02.22 |
C 언어 예제, 문자열 내에서 검색하기 (0) | 2014.02.16 |
C 언어 예제, 문자열 대조하기 (0) | 2014.02.12 |
댓글 영역