on
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