1장 연습문제

1장 연습문제

1.1

#include int main(int argc, const char * argv[]) { double x,y; printf("2개의 실수 입력 : "); scanf("%lf %lf",&x;,&y;); printf("%lf + %lf = %lf

",x,y,x+y); printf("%lf - %lf = %lf

",x,y,x-y); printf("%lf * %lf = %lf

",x,y,x*y); printf("%lf / %lf = %lf

",x,y,x/y); return 0; }

1.2

#include int main(){ int x,y; printf("2개의 정수 입력 : "); scanf("%d %d",&x;,&y;); for(int i=1;i<=y;i++){ printf("\t%d \t%d \t%.1f

",i,i*i,(double)i/3); } }

1.3

#include int main(){ int arr[10]; for(int i=0;i<10;i++){ arr[i]=i*i; printf("%d

",arr[i]); } }

1.4

#include int main(){ for(int i=0;i<2;i++){ int j =2; while(i

"); } for(int i=2;i>=0;i--){ int j=2; while(i

"); } }

1.5

#include int main(){ int a = 1; int b = 2; int *p; p=&a; *p=100; printf("%d

",*p); p=&b; *p=200; printf("%d

",*p); }

1.6

#include #include #include int main(){ int *p = (int *)malloc(sizeof(int)*10); int *p2; srand((unsigned) time(NULL)); p2 = p; for(int i=0;i<10;i++) p2[i] = rand(); for(int i=0;i<10;i++) printf("%d

",p2[i]); }

1.8

#include #include void StrCat(char *c1, char *c2){ int len = strlen(c1); c1[len] = 0; memcpy(c1+len,c2,strlen(c2)); } int main(){ char str1[100] = "C++ "; char *str2 = "Programming"; StrCat(str1, str2); printf("str1 : %s

", str1); return 0; }

1.9

#include #include int power(int x, int y){ if(y>0) return x * power(x,y-1); else return 1; } int main(){ int a =2; int b =3; printf("%d^%d : %d

",a,b,power(a,b)); return 0; }

1.11

#include struct Point2 { int x; }; void Swap(struct Point2 *p1, struct Point2 *p2) { struct Point2 Po; Po.x = p2->x; p2->x = p1->x; p1->x = Po.x; }; int main(){ struct Point2 A = {3}; struct Point2 B = {6}; printf("Swap함수 전 : %d, %d

",A.x,B.x); Swap(&A;,&B;); printf("Swap함수 후 : %d, %d

",A.x,B.x); return 0; }

1.12

#include #include #include typedef struct _node { int data; struct _node *left; //왼쪽 struct _node *right; //오른쪽 }Node; void InorderTraverse(Node *Root) //중위순회 { if (Root == NULL) return; InorderTraverse(Root->left); printf("%d ", Root->data); InorderTraverse(Root->right); } int main(void) { int i; Node *Root = NULL; //루트 노드 Node *InitialRoot; //기존 루트노드 Node *Parent = NULL; //부모 노드 Node *Current; for (i = 1; i <= 5; i++) { //노드 생성 Current = (Node*)malloc(sizeof(Node)); Current->data = rand() % 10 + 1; printf("%d번째 데이터:%d

", i, Current->data); Current->left = NULL; Current->right = NULL; if (Root == NULL) { Root = Current; printf("%d번째 노드 루트에 저장되었습니다

", i); InitialRoot = Root; //기존 루트노드 저장 continue; } while (1) { Parent = InitialRoot; printf("InitialRoot:%d

", InitialRoot->data); if (InitialRoot->data > Current->data) { if (InitialRoot->left) //왼쪽 데이터가 존재한다면 InitialRoot = InitialRoot->left; else //데이터 삽입 { InitialRoot->left = Current; printf("%d번째 데이터 왼쪽으로 갔습니다

", i); break; } } else { if(InitialRoot->right) InitialRoot = InitialRoot->right; else { InitialRoot->right = Current; printf("%d번째 데이터 오른쪽으로 갔습니다

", i); break; } } } Parent = Current; InitialRoot = Root; //초기화 } InorderTraverse(InitialRoot); return 0; }

from http://hye0403.tistory.com/94 by ccl(A) rewrite - 2021-10-14 17:00:29