2013. 6. 3. 10:53ㆍ프로그래밍/C/C++
구조체 선언 :
struct 구조체이름{
자료형 1;
자료형 2;
자료형 3;
}변수1, 변수2, ..., 변수N; //세미콜론이 찍혀있는 것을 유의할것
함수내에서의 구조체선언 : struct 구조체이름 변수명
구조체의 초기화 :
구조체변수 = {자료형1 변수, 자료형2 변수, 자료형3 변수};
구조체의 대입 :
struct 구조체이름 변수1;
struct 구조체이름 변수2;
변수1 = {자료형1 변수, 자료형2 변수, 자료형3 변수};
이 선언되어 있을 때
변수2 = 변수1;
이라고 해주는 것으로 구조체 변수를 모두 대입가능
//SIZE10 구조체 배열에 순차적인 id와 랜덤score값을 대입한 뒤 score를 기준으로 구조체 값을 정렬 하는 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
//구조체 선언
struct Student {
int id;
double score;
};
//함수 원형 선언
void Print(struct Student data[], int size);
void Sort(struct Student data[], int size);
int main()
{
struct Student data[SIZE];
int i;
//랜덤씨드값 생성 및 구조체에 값 대입
srand((unsigned)time(0));
for(i=0 ; i<SIZE ; i++)
{
data[i].id = i;
data[i].score = (double)rand()/RAND_MAX*100;
}
Print(data, SIZE);
Sort(data, SIZE);
Print(data, SIZE);
return 0;
}
//구조체의 값을 출력
void Print(struct Student data[], int size)
{
int i;
for(i=0 ; i<size ; i++)
{
printf("id : %d score : %5.2lf\n" ,data[i].id, data[i].score);
}
printf("\n");
}
//구조체의 score를 기준으로 정렬
void Sort(struct Student data[], int size)
{
int i, k;
struct Student t;
for(i=1 ; i<size ; i++)
{
t = data[i];
for(k=i-1 ; k>=0 ; k--)
{
if(t.score < data[k].score)
{
data[k+1] = data[k];
}
else
break;
}
data[k+1] = t;
}
}
'프로그래밍 > C/C++' 카테고리의 다른 글
다익스트(dijkstra)라 알고리즘으로 최단경로 구하기 (0) | 2013.06.09 |
---|---|
[논리적 사유연습]재귀함수를 이용한 숫자 역순으로 출력 / Factorial 구하기 (0) | 2013.06.03 |
[논리적 사유연습]선택정렬, 버블정렬, 삽입정렬 (0) | 2013.05.27 |
[논리적 사유연습]홀수 마방진구하기 (0) | 2013.05.15 |
[논리적 사유연습]윷을 던졌을 때의 확률 구하기 (0) | 2013.05.13 |