티스토리 뷰

친구 목록을 관리하는 프로그램을 만듭니다.

 

5명 친구의 성별, 나이, 이름, 전화번호를 입력하고 가장 나이가 많은 친구의 목록을 출력합니다.

단, 다음과 같이 2개의 헤더 파일과 2개의 소스 파일로 분할 컴파일합니다.

 

  • friend.h 헤더 파일 : 친구의 각 항목을 멤버로 갖는 Friend 구조체 선언합니다.
  • func.h 헤더 파일 : func.c에 구현된 함수를 선언합니다.
  • func.c 소스 파일 : inputData, oldestFriend, printData 함수 구현
  • main.c 소스 파일

 

main.c 소스 파일은 아래와 같이 작성합니다.

#include <stdio.h>
#include "friend.h"
#include "func.h"

int main(void)
{
	Friend myFriend[BEST_CNT];
	Friend oldest;

	inputData(myFriend);
	oldest = getOldestFriend(muFriend);
	printData(oldest);

	return 0;
}

실행결과는 다음과 같습니다.

/*
실행결과

성별 입력(m / f) : m
나이 입력 : 17
이름 입력 : 홍길동
전화번호 입력 : 1111-1111
성별 입력(m / f) : m
나이 입력 : 44
이름 입력 : 이순신
전화번호 입력 : 2222-2222
성별 입력(m / f) : f
나이 입력 : 19
이름 입력 : 유관순
전화번호 입력 : 3333-3333
성별 입력(m / f) : m
나이 입력 : 33
이름 입력 : 또서방
전화번호 입력 : 4444-4444
성별 입력(m / f) : f
나이 입력 : 21
이름 입력 : 꽁색시
전화번호 입력 : 5555-5555
나이가 가장 많은 친구 :
성별 : 남, 나이 : 44세, 이름 : 이순신, 전화번호 : 2222-2222

*/

다음은 제가 작성한 코드입니다.

먼저 friend.h 헤더 파일입니다.

#ifndef FRIEND_H
#define FRIEND_H

typedef struct
{
	int age;
	char sex;
	char number[12];
	char name[20];
} Friend;

#endif

구조체의 중복 선언을 막기 위해 조건부 전처리 지시자를 사용했습니다.

다음은 func.h 헤더 파일입니다.

#include "friend.h"
#ifndef FUNC_H
#define FUNC_H
#define BEST_CNT 5

void inputData(Friend *);
Friend getOldestFriend(Friend*);
void printData(Friend);

#endif

함수는 중복 선언하여도 상관없지만 그냥 모든 헤더파일은 중복방지처리를 해주었습니다.

다음은 func.c 소스 파일입니다.

#include <stdio.h>
#include <string.h>
#include "func.h"


void inputData(Friend * pFriend)
{
	for (int i = 0; i < BEST_CNT; i++)
	{
		printf("성별 입력(m / f) : ");
		pFriend[i].sex = getchar();
		printf("나이 입력 : ");
		scanf("%d", &(pFriend[i].age));
		getchar();
		printf("이름 입력 : ");
		fgets(pFriend[i].name, 19, stdin);
		pFriend[i].name[strlen(pFriend[i].name) - 1] = '\0';
		printf("전화번호 입력 : ");
		fgets(pFriend[i].number, 11, stdin);
		pFriend[i].number[strlen(pFriend[i].number) - 1] = '\0';
	}
}

Friend getOldestFriend(Friend * pFriend)
{
	int index = 0;

	for (int i = 0; i < BEST_CNT; i++)
	{
		if (pFriend[index].age < pFriend[i].age)
		{
			index = i;
		}
	}

	Friend oldestFriend = pFriend[index];

	return oldestFriend;
}

void printData(Friend friend)
{
	printf("나이가 가장 많은 친구 :\n");
	printf("성별 : %s, 나이 : %d세, 이름 : %s, 전화번호 : %s\n", (friend.sex == 'm') ? "남" : "여", friend.age, friend.name, friend.number);
}

사용할 함수들을 모두 여기서 정의했습니다.

다음은 main.c 소스 파일입니다.

#include <stdio.h>
#include "friend.h"
#include "func.h"

int main(void)
{
	Friend myFriend[BEST_CNT];
	Friend oldest;

	inputData(myFriend);
	oldest = getOldestFriend(myFriend);
	printData(oldest);

	return 0;
}

제가 작성한 코드의 실행결과는 문제의 것과 같습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함