상세 컨텐츠

본문 제목

C 언어 예제, 줄 세우기, 동점자 처리(구조체 사용)

컴퓨터 관련/C 언어 예제

by 열정과 함께 2014. 6. 6. 14:16

본문

어느 분 댓글 보고 만들어 본다. 이름도 같이 배열되는 것이 가능한가? 하시기에.


동점자 처리도 이전에 비해 더 볼만하게 만들었다.


목표는 아래와 같이 만드는 것이다. 참, 이름은 영문 기준 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;

}


이 아래는 간략하게 해석


#include <stdio.h>
struct Student //구조체를 정의하였다. 이름이 들어가고 하려면 이런게 있는게 편해보여서.
{
char name[30]; //이름은 영문 기준 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++; //동점자가 있다면 기록하는 변수 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;
}











관련글 더보기

댓글 영역