개요
구조체를 이용하여 입력을 받고 출력하라. |
목표
입력화면 가족(아빠)의 성을 입력하세요 = 박 가족(엄마)의 성을 입력하세요 = 김 1 번째 가족 신상을 입력합니다. 가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 0 이름을 입력하세요 = 장군 나이를 입력하세요 = 50 전화 번호를 입력하세요 = 010-1111-2222 2 번째 가족 신상을 입력합니다. 가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 1 이름을 입력하세요 = 사랑 나이를 입력하세요 = 40 전화 번호를 입력하세요 = 010-2222-3333 3 번째 가족 신상을 입력합니다. 가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 2 이름을 입력하세요 = 왕자 나이를 입력하세요 = 20 전화 번호를 입력하세요 = 010-3333-4444 4 번째 가족 신상을 입력합니다. 가족관계를 선택하세요. 부(0), 모(1), 형제(2), 자매(3) = 3 이름을 입력하세요 = 공주 나이를 입력하세요 = 15 전화 번호를 입력하세요 = 010-4444-5555 출력화면 ###################################### 관계 성명 나이 전화번호 Father 박 장군 50 010-1111-2222 Mother 김 사랑 40 010-2222-3333 Brother 박 왕자 20 010-3333-4444 Sister 박 공주 15 010-4444-5555 |
Flow Chart
Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_LN 4
#define MAX_FN 10
typedef enum FamilyRealation{Father,Mother,Brother,Sister}FR_e;
typedef struct _MEMBER
{
FR_e eFR;
char sLastName[MAX_LN];
char sFirstName[MAX_FN];
short iAge;
char sTelNum[15];
}MEM_s;
void structInput(MEM_s* fInput, int i);
void FRPrint(int fr);
void structInput(MEM_s* fInput,int i)
{
puts("=========================================");
printf("%02d번째 가족 신상을 입력합니다.\n",i+1);
printf("가족관계를 입력하세요. 부(0), 모(1), 형제(2), 자매(3) : ");
scanf_s("%d", &fInput->eFR);
printf("이름을 입력하세요 : ");
scanf_s("%s", fInput->sFirstName, (unsigned)sizeof(fInput->sFirstName));
printf("나이를 입력하세요 : ");
scanf_s("%hd", &fInput->iAge);
printf("전화 번호를 입력하세요 : ");
scanf_s("%s", fInput->sTelNum,(unsigned)sizeof(fInput->sTelNum));
}
void FRPrint(int fr)
{
char sFR[8] = { 0 };
switch (fr) {
case 0:
strcpy_s(sFR,8, "Father"); break;
case 1:
strcpy_s(sFR,8, "Mother"); break;
case 2:
strcpy_s(sFR,8, "Brother"); break;
case 3:
strcpy_s(sFR,8, "Sister"); break;
default:
strcpy_s(sFR, 8, "Unknown"); break;
}
printf("%s\t", sFR);
}
int main(void)
{
int iNum = 0;
char sFatherFamilyName[4] = { 0 }, sMotherFamilyName[4] = { 0 };
MEM_s* sPtr = NULL;
printf("가족의 인원을 입력하세요 : ");
scanf_s("%d", &iNum);
sPtr = (MEM_s*)malloc((unsigned)sizeof(MEM_s) * (iNum) * 1);
printf("가족(아빠)의 성을 입력하세요 : ");
scanf_s("%s", sFatherFamilyName, (unsigned)sizeof(sFatherFamilyName));
printf("가족(엄마)의 성을 입력하세요 : ");
scanf_s("%s", sMotherFamilyName, (unsigned)sizeof(sMotherFamilyName));
for (int i = 0; i < iNum; i++) {
structInput(&sPtr[i], i);
if (sPtr[i].eFR == Mother) {
strcpy_s(sPtr[i].sLastName,MAX_LN, sMotherFamilyName);
}
else {
strcpy_s(sPtr[i].sLastName,MAX_LN, sFatherFamilyName);
}
}
puts("\n#######################################");
printf("관계\t성명\t나이\t전화번호\n");
for (int i = 0; i < iNum; i++) {
FRPrint(sPtr[i].eFR);
printf("%s %s\t", sPtr[i].sLastName, sPtr[i].sFirstName);
printf("%2d\t", sPtr[i].iAge);
printf("%s\n", sPtr[i].sTelNum);
}
free(sPtr);
return 0;
}
Output
'C\C++' 카테고리의 다른 글
String 관련 예제 (0) | 2022.02.27 |
---|---|
구조체 실습과제 01 (0) | 2022.02.23 |
소수 구하기 2 (0) | 2022.02.18 |
소수 구하기 (0) | 2022.02.17 |
Pointer & Array Ex01 (0) | 2022.02.17 |