본문 바로가기
프로그래밍/c언어

열혈강의 c 28장 도전 프로그래밍 four 1,2,3

by -현's- 2011. 4. 13.
반응형


1. 간단한 도서 관리용 프로그램을 작석해 보자. [제목, 저자, 페이지수]에 대한 정보를 저장할 수 있는 구조체를 정의하고,
구조체 배열을 선언해서 도서에 대한 정보를 저장하는 구조를 작성해 보자.main함수는 사용자로부터 3권의 도서에 대한 정보를 입력받고, 입력이 끝나면
도서에 대한 내용을 출력해 주도록 구현을 하자.

#include<stdio.h>
struct book
{
char juja[100];
char name[100];
int page;
};

int main()
{

int i;
struct book a[3];

printf("도서정보입력\n");

for(i=0; i<3; i++)
{
printf("저자:\n");
scanf("%s", a[i].juja);

printf("제목:\n");
scanf("%s", a[i].name);

printf("페이지수:\n");
scanf("%d", &a[i].page);
}

printf("도서정보출력:\n");
for(i=0; i<3; i++)
{
printf("book%d 저자:%s, 제목: %s, 페이지수: %d\n", i+1, a[i].juja, a[i].name, a[i].page);
}

return 0;
}


2. 도전1에서 구현한 프로그램에 변경을 조금 가하자. 구조체 배열을 선언하는 것이 아니라, 구조체 포인터 배열을 선언하고 구조체 변수를
동적으로 할당하는 형태로 프로그램을 재구성해 보자.


#include<stdio.h>
#include<stdlib.h>

struct book
{
char juja[100];
char name[100];
int page;
};

int main()
{

int i;
struct book *a;

a=(struct book*)malloc(sizeof(struct book)*3);

printf("도서정보입력\n");

for(i=0; i<3; i++)
{
printf("저자:\n");
scanf("%s", a[i].juja);

printf("제목:\n");
scanf("%s", a[i].name);

printf("페이지수:\n");
scanf("%d", &a[i].page);
}

printf("도서정보출력:\n");
for(i=0; i<3; i++)
{
printf("book%d 저자:%s, 제목: %s, 페이지수: %d\n", i+1, a[i].juja, a[i].name, a[i].page);
}

free(a);


return 0;
}


3. 복소수를 나타내는 구조체를 정의하고, 복수수 덧셈과 곱셈을 위한 함수를 각각 정의하자.
그리고 main 함수에서는 두 개의 복소수를 사용자로부터 입력받아서 덧셈과 곱셈 연산의 결과를 출력해 주는 프로그램을 작성하자


#include<stdio.h>

struct cn {
 double a;
 double b;
};

int main()
{
 struct cn cn1, cn2;

 printf("복소수 입력(실수, 허수)\n");
 scanf("%lf %lf", &cn1.a, &cn1.b);
 
 printf("복소수 입력(실수, 허수)\n");
 scanf("%lf %lf", &cn2.a, &cn2.b);

 

 printf("합의 결과]실수부: %lf, 허수부:%lf \n", cn1.a+cn2.a, cn1.b+cn2.b);
 printf("곱의 결과]실수부: %lf, 허수부:%lf \n", cn1.a*cn2.a-cn1.b*cn2.b, cn1.b*cn2.a+cn1.a*cn2.b);


 return 0;
}

 

반응형

댓글