개요
구조체를 이용하여 복소수를 다음과 같이 정의하고 복소수의 덧셈을 수행하는 함수를 작성하고 테스트하시오. |
Code
#include<stdio.h>
typedef struct complex{
double real;
double imag;
}Com_s;
Com_s com_add(Com_s c1, Com_s c2);
int main(void)
{
Com_s c1, c2, res;
printf("Input 1st complex No. : ");
scanf_s("%lf %lf",&c1.real,&c1.imag);
printf("Input 2nd complex No. : ");
scanf_s("%lf %lf", &c2.real, &c2.imag);
res = com_add(c1,c2);
printf("Result : %0.2lf %c %0.2lfi", res.real,(res.imag<0)?'-':'+',res.imag);
return 0;
}
Com_s com_add(Com_s c1, Com_s c2)
{
Com_s res;
res.real = c1.real + c2.real;
res.imag = c1.imag + c2.imag;
return res;
}
Output
개요
각각의 음식에 대하여 음식의 이름, 칼로리 정보를 구조체로 표현한다. 각각의 식사 코스에서 등장하는 음식들을 구조체의 배열로 표현하고 각 식사 코스의 전체 칼로리를 계산히는 프로그램을 작성하라. |
Code
#include<stdio.h>
#define C_NO 3
typedef struct food {
char name[100];
int calories;
}f_s;
int sumCal(f_s couse[], int index);
void printCours(f_s couse[], int index);
int main(void)
{
int iSumCal = 0;
f_s fCours[C_NO] = { {"food1",350},{"food2",530 },{"food3",620} };
printCours(fCours, C_NO);
printf("총 %d 칼로리 입니다.", sumCal(fCours, C_NO));
return 0;
}
int sumCal(f_s couse[], int index)
{
int iSum = 0;
for (int i = 0; i < index; i++) {
iSum += couse[i].calories;
}
return iSum;
}
void printCours(f_s couse[], int index)
{
for (int i= 0;i<index;i++)
{
printf("%s : %d cal\n", couse[i].name, couse[i].calories);
}
}
Output
개요
전화번호부를 구성하기 위하여 이름, 집전화번호, 휴대폰 번호로 구성되는 구조체를 정의한 후에 이 구조체의 배열을 선언하여 전화번호부를 구성한다. 5명의 데이터를 사용자로부터 받아서 저장하여 보라, 사용자로부터 이름을 입력받아서 전화번호를 검색하는 프로그램을 작성하라. |
Code
#include<stdio.h>
#include<string.h>
#define U_SIZEOF (unsigned)sizeof
#define PB_SIZE 5
typedef struct PhoneBook {
char name[20];
char homePhone[20];
char cellPhone[20];
}pb_t;
void input_pb(pb_t arr_pb[]);
void search_pb(pb_t arr_pb[]);
int main(void)
{
pb_t arrPB[PB_SIZE] = { 0 };
input_pb(arrPB);
search_pb(arrPB);
return 0;
}
void input_pb(pb_t arr_pb[])
{
for (int i = 0; i < PB_SIZE; i++) {
printf("이름 : ");
scanf_s("%s", &arr_pb[i].name, U_SIZEOF(arr_pb->name));
printf("집전화 : ");
scanf_s("%s", &arr_pb[i].homePhone, U_SIZEOF(arr_pb->homePhone));
printf("휴대전화 : ");
scanf_s("%s", &arr_pb[i].cellPhone, U_SIZEOF(arr_pb->cellPhone));
puts("========================================================");
}
}
void search_pb(pb_t arr_pb[])
{
char inStr[20] = { 0 };
puts("========================================================");
printf("검색 이름을 입력하세요 : ");
scanf_s("%s", inStr, U_SIZEOF(inStr));
for (int i = 0; i < PB_SIZE; i++) {
if (strcmp(arr_pb[i].name, inStr) == 0) {
printf("이름 : %s\n집전화 : %s\n휴대전화 : %s\n", arr_pb[i].name, arr_pb[i].homePhone, arr_pb[i].cellPhone);
}
}
}
Output
개요
삼각형, 사각형, 원을 동시에 표현할 수 있는 공용체를 설계하라. 삼각형은 밑변과 높이, 사각형은 가로와 세로, 원은 반지름만을 저장하도록 하라. 현재의 공용체가 표현하고 있는 도형의 종류는 열거형 변수를 사용하여 나타낸다. 사용자로부터 도형의 종류와 도형의 데이터를 받아서 저장하여 보자 |
Code
#include<stdio.h>
typedef struct shape {
int type;
union {
struct { int base, height; } tri;
struct { int width, height; } ract;
struct { int radius; } circ;
} data;
}sh_t;
typedef enum typeE{tri=1,ract=2,circ=3}t_e;
sh_t input_sh(void);
void output_sh(sh_t outShape);
int main(void)
{
sh_t shape1 = { 0 };
shape1 =input_sh();
output_sh(shape1);
return 0;
}
sh_t input_sh(void)
{
sh_t inShape = { 0 };
printf("도형의 종류를 입력하세요(삼각형(1), 사각형(2), 원(3)) : ");
scanf_s("%d", &inShape.type);
switch (inShape.type)
{
case tri:
printf("밑변을 입력하세요 :");
scanf_s("%d", &inShape.data.tri.base);
printf("높이를 입력하세요 :");
scanf_s("%d", &inShape.data.tri.height);
break;
case ract:
printf("너비를 입력하세요 :");
scanf_s("%d", &inShape.data.ract.width);
printf("높이를 입력하세요 :");
scanf_s("%d", &inShape.data.ract.height);
break;
case circ:
printf("반지름을 입력하세요 :");
scanf_s("%d", &inShape.data.circ.radius);
break;
default:
break;
}
return inShape;
}
void output_sh(sh_t outShape)
{
switch (outShape.type)
{
case tri:
printf("도형은 삼각형입니다.\n");
printf("밑변은 %d , 높이는 %d 입니다.\n", outShape.data.tri.base, outShape.data.tri.height);
break;
case ract:
printf("도형은 사각형입니다.\n");
printf("너비은 %d , 높이는 %d 입니다.\n", outShape.data.ract.width, outShape.data.ract.height);
case circ:
printf("도형은 원형입니다.\n");
printf("반지름은 %d 입니다.\n", outShape.data.circ.radius);
default:
break;
}
}
Output
개요
데이터 베이스의 기능을 하는 간단한 프로그램을 작성하여 보자. 이 프로그램은 mp3와 같은 음악 파일을 관리한다. 사용자는 음악 파일을 추가, 삭제, 출력할 수 있으며 제목을 가지고 특정 곡을 탐색할 수 있다. 사용자 인터페이스는 다음과 같다 |
목표
=========== 1. 추가 2. 출력 3. 검색 4. 종료 =========== 메뉴를 선택하시오: 1 제목: My Boy Lollipop 가수: Millie Small 저장된 위치: c:\mp3\oldpop 분류(가요, 팝, 클래식, 영화음악) : 팝 |
Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define U_SIZEOF (unsigned)sizeof
#define STRMAX1 20
#define STRMAX2 100
typedef struct songList
{
char songName[STRMAX1];
char singer[STRMAX1];
char folder[STRMAX2];
char category[STRMAX1];
}sl_t;
enum songCategory{kpop,pop,classic,ost}st_e;
int menuPrint(void);
int songAdd(sl_t sData[], int index);
void songPrint(sl_t sData[], int size);
void songSearch(sl_t sData[], int size);
int main(void)
{
int iSel,sizeSL=0;
sl_t slPtr[] = { 0 };
do {
iSel = menuPrint();
switch (iSel)
{
case 1:
sizeSL = songAdd(slPtr,sizeSL);
break;
case 2:
songPrint(slPtr,sizeSL);
break;
case 3:
songSearch(slPtr,sizeSL);
break;
default:
break;
}
} while (iSel != 4);
return 0;
}
int menuPrint(void)
{
int selMenu;
puts("==============");
puts("1. 추가");
puts("2. 출력");
puts("3. 검색");
puts("4. 종료");
puts("==============");
printf("메뉴를 선택하시오 : ");
scanf_s("%d", &selMenu);
return selMenu;
}
int songAdd(sl_t sData[],int index)
{
printf("제목 : ");
scanf_s("%s", &sData[index].songName,U_SIZEOF(sData[index].songName));
printf("가수 : ");
scanf_s("%s", &sData[index].singer,U_SIZEOF(sData[index].singer));
printf("저장된 위치 : ");
scanf_s("%s", &sData[index].folder,U_SIZEOF(sData[index].folder));
printf("분류(가요,팝,클래식,영화음악) : ");
scanf_s("%s", &sData[index].category,U_SIZEOF(sData[index].category));
return ++index;
}
void songPrint(sl_t sData[],int size)
{
for(int cnt=0;cnt<size;cnt++){
printf("제목 : %s\n", sData[cnt].songName);
printf("가수 : %s\n", sData[cnt].singer);
printf("저장된 위치 : %s\n", sData[cnt].folder);
printf("분류(가요, 팝, 클래식, 영화음악) : %s\n", sData[cnt].category);
}
}
void songSearch(sl_t sData[],int size)
{
char songName[STRMAX1] = { 0 };
printf("제목을 입력하세요 : ");
scanf_s("%s", songName, U_SIZEOF(songName));
for(int cnt=0;cnt<size;cnt++){
if (strcmp(songName, sData[cnt].songName) == 0) {
printf("제목 : %s\n", sData[cnt].songName);
printf("가수 : %s\n", sData[cnt].singer);
printf("저장된 위치 : %s\n", sData[cnt].folder);
printf("분류(가요, 팝, 클래식, 영화음악) : %s\n", sData[cnt].category);
break;
}
}
}
Output
'C\C++' 카테고리의 다른 글
포인터 문제 (0) | 2022.03.02 |
---|---|
배열 문제 (0) | 2022.03.02 |
최대 최소 구하기(bubble sort) (0) | 2022.02.28 |
String 관련 예제 (0) | 2022.02.27 |
구조체 실습과제 01 (0) | 2022.02.23 |