쉽게 풀어쓴 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;
}
댓글
댓글 쓰기