"the only way to be truly satisfied is to do what you believe is great work."

[C언어] 간단한 구조체 실습

[Code]

# include <stdio.h>
# define VMAX 10 // 평점의 최댓값은 10.0

typedef struct {
	char name[20];
	int height; // 신장
	double score; // 평점
}Player;

// 키의 평균을 구하는 함수
double avgHeight(const Player dat[], int n) {
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum += dat[i].height;
	}
	return sum / n;
}

// 평점 분포를 저장하는 함수
void distScore(const Player dat[], int n, int dist[]) {
	//dist 초기화
	for (int i = 0; i < VMAX; i++) {
		dist[i] = 0;
	}
	//int형 인덱스로 접근
	for (int i = 0; i < n; i++) {
		dist[(int)(dat[i].score)]++;
	}
}

int main() {
	Player x[] = {
		{"손흥민",183,7.9},
		{"황희찬",176,7.7},
		{"조규성",188,5.1},
		{"이강인",173,8.0},
		{"주민규",185,7.0},
		{"설영우",180,6.6},
		{"황인범",173,6.9},
		{"김영권",187,6.5},
		{"김민재",190,8.1},
		{"김문환",175,6.5},
		{"김진수",177,6.3},
		{"조현우",181,7.8},
	};

	int nx = sizeof(x) / sizeof(x[0]); // 사람수
	int sdist[VMAX];
	puts("======선수 프로필======");
	for (int i = 0;i< nx; i++) {
		printf("%s , %d, %f \n", x[i].name, x[i].height, x[i].score);
	}
	printf("평균신장 %f\n\n", avgHeight(x,nx));
	puts("=======평점 분포=======");
	distScore(x, nx, sdist);
	for (int i = 0; i < VMAX; i++) {
		printf("%d점 ~ %d점 : %d 명\n", i, i + 1 , sdist[i]);
	}

}


[실행화면]

 

 

 

[Code]

# include <stdio.h>

typedef struct {
	int y;
	int m;
	int d;
}Date;

//y년 m월 d일을 나타내는 구조체를 반환하는 함수
Date dateStruct(int y , int m ,int d) {
	Date date;
	date.y = y;
	date.m = m;
	date.d = d;
	return date;
}

//날짜 x의 n일 뒤의 날짜를 반환하는 함수
Date Next(Date date, int x) {
	Date result;
	result.y = date.y;
	result.m = date.m;
	result.d = date.d + x;

	if (result.m == 2) {
		if (result.d > 28) {
			result.m++;
			result.d -= 28;
		}  //윤년은 귀찮아요..
	}
	else if (result.m == 4 || result.m == 6 || result.m == 9 || result.m == 11) {
		if (result.d > 30) {
			result.m++;
			result.d -= 30;
		}
	}
	else {
		if (result.d > 31) {
			result.m++;
			result.d -= 31;
		}
	}

	return result;
}


int main(void) {
	//날짜 구조체 반환 함수 테스트
	Date day;
	day = dateStruct(2024, 3, 29);
	printf("%d년 %d월 %d일\n", day.y, day.m, day.d);

	//x일 다음을 반환하는 함수 테스트
	Date next_day; 
	int x = 30;
	next_day = Next(day, x);
	printf("오늘로부터 %d일 뒤는 %d년 %d월 %d일\n", x, next_day.y, next_day.m, next_day.d);
}



[실행결과]