쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 13-1

1.

(a)

#include <stdio.h>

struct point {
int x, y;
}
;

int equal(struct point p1, struct point p2);

int main(void) {

struct point p1 = {
1, 2
}
;

struct point p2 = {
3, 5
}
;

printf("일치 여부 = %d\n", equal(p1, p2));
return 0;
}

int equal(struct point p1, struct point p2) {

if (p1.x == p2.x && p1.y == p2.y) 
return 1; 
else 
return 0;
}

(b)

#include <stdio.h>

struct point {
int x, y;
}
;

int quadrant(struct point p);

int main(void) {

struct point p = {
-1, 2
}
;

printf("사분면 = %d\n", quadrant(p));
return 0;
}

int quadrant(struct point p) {

if (p.x > 0 && p.y > 0) 
return 1; 
else if (p.x < 0 && p.y > 0) 
return 2; 
else if (p.x < 0 && p.y < 0) 
return 3; 
else 
return 4;
}

2.

(a)

#include <stdio.h>

struct point {
int x, y;
}

;

int equal(struct point* p1, struct point* p2);

int main(void) {

struct point p1 = {
1, 2
}
;

struct point p2 = {
3, 5
}
;

printf("일치 여부 = %d\n", equal(&p1, &p2));
return 0;
}

int equal(struct point* p1, struct point* p2) {

if (p1->x == p2->x && p1->y == p2->y) 
return 1; 
else 
return 0;
}

(b)

#include <stdio.h>

struct point {
int x, y;
}
;

int quadrant(struct point* p);

int main(void) {

struct point p = {
-1, 2
}
;

printf("사분면 = %d\n", quadrant(&p));
return 0;
}

int quadrant(struct point* p) {

if (p->x > 0 && p->y > 0) 
return 1; 
else if (p->x < 0 && p->y > 0)
return 2; 
else if (p->x < 0 && p->y < 0) 
return 3; 
else 
return 4;
}

3.

#include <stdio.h>
#include <math.h>

struct point {
int x, y;
}

;

struct rectangle {

struct point a, b;
}
;

int area(struct rectangle r);
int perimeter(struct rectangle r);
int is_square(struct rectangle r);

int main(void) {

struct point p1 = {
1, 1
}
;

struct point p2 = {
2, 2
}
;

struct rectangle r;

r.a = p1;
r.b = p2;

printf("%d\n", area(r));
printf("%d\n", perimeter(r));
printf("%d\n", is_square(r));
return 0;
}

int area(struct rectangle r) {

return abs(r.a.x - r.b.x) * abs(r.a.y - r.b.y);
}

int perimeter(struct rectangle r) {

return 2 * (abs(r.a.x - r.b.x) + abs(r.a.y - r.b.y));
}

int is_square(struct rectangle r) {

return abs(r.a.x - r.b.x) == abs(r.a.y - r.b.y);
}

4.

#include <stdio.h>

struct complex {

double real;
double imag;
}

;

struct complex add(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real + c2.real;
result.imag = c1.imag + c2.imag;

return result;
}

struct complex sub(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real + c2.real;
result.imag = c1.imag + c2.imag;

return result;
}

struct complex mul(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real * c2.real - c1.imag * c2.imag;
result.imag = c1.real * c2.imag + c1.imag * c2.real;

return result;
}

void print(struct complex c) {

printf("%f+%fi\n", c.real, c.imag);

}

int main(void) {

struct complex c1 = {
1.0, 2.0
}
;

struct complex c2 = {
2.0, 3.0
}
;

struct complex c3;

c3 = add(c1, c2);

print(c3);

return 1;
}

5.

#include <stdio.h>
#include <math.h>

struct vector {

double x;
double y;
}

;

struct vector vector_add(struct vector v1, struct vector v2) {

struct vector r;

r.x = v1.x + v2.x;
r.y = v1.y + v2.y;

return r;
}

void vector_print(struct vector v) {

printf("(%f, %f)\n", v.x, v.y);
}

int main(void) {

struct vector v1 = {
1.0, 2.0
}
;

struct vector v2 = {
2.0, 3.0
}
;

struct vector v3;

v3 = vector_add(v1, v2);
vector_print(v3);

return 0;
}

댓글

이 블로그의 인기 게시물

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 10-3

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-1

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 13-2