중간고사 익일 10시 30분 창조관 447호

12p 부터 시작

test1.c                                   test2.c
------                                   ------
int a;                                     extern int a;                      ..... test1.c, test2.c 공유
static int b;                            static int b;                        ..... 독립적인 저장공간 사용
main()                                   func()
{                                          {
...                                         ...
   func();                               }
...
}

사용자 삽입 이미지


사용자 삽입 이미지
사용자 삽입 이미지

<- 직접 재귀 함수

                                                  간접 재귀 함수 ->







하노이의 탑
#include <stdio.h>

void hanoi(int n, char a, char b, char c);

int main(void)
{
 /* 3개의 원반을 옮기는 하노이 탑 문제 */
 /*초기막대 a, 작업막대 b, 목표막대 c */
 return 0;
}

void hanoi(int n, char a, char b, char c)
{
 if (n<1)
  printf("invalid number of discs\n");
 else if ( n==1 )
  printf("원반 %d : %c ==> %c\n", n, a, c);
 else {
  hanoi(n-1, a, c, b);
  printf("원반 %d : %c ==> %c\n", n, a, c);
  hanoi(n-1, b, a, c);
 }
}


==== 실습시간 ====
1. nCr 구하기
#include <stdio.h>

double factorial(int k);

int main(void)
{
 int a, b;
 double c;

 printf("nCr을 구해봅시다!\n");
 printf("n의 값을 입력하세요 : ");
 scanf("%d",&a);
 printf("r의 값을 입력하세요(n값보다 작게) : ");
 scanf("%d",&b);

 c=factorial(a)/(factorial(b)*factorial(a-b));
 printf("결과는 %g 입니다.",c);

 return 0;
}

double factorial(int k)
{
 int i;
 double j;
 j=1.0;

 for(i=1;i<=k;i++)
  j *= i;
 return(j);
}

또는

#include <stdio.h>

double factorial(int k);

int main(void)
{
 int a, b;
 double c;

 printf("nCr을 구해봅시다!\n");
 printf("n의 값을 입력하세요 : ");
 scanf("%d",&a);
 printf("r의 값을 입력하세요(n값보다 작게) : ");
 scanf("%d",&b);

 c=factorial(a)/(factorial(b)*factorial(a-b));
 printf("결과는 %g 입니다.",c);

 return 0;
}

double factorial(int k)
{
 int i;
 double j;
 j=1.0;

 for(i=k;i>=1;i--)
  j *= i;
 return(j);
}

p139 (5.3.2)
#include <stdio.h>

사용자 삽입 이미지

void print_star(int k, int n);

int main(void)
{
 int a,b;

 scanf("%d",&a);
 for(b=1;b<=a;b++)
  print_star(b,b);
 
 return 0;
}

void print_star(int k, int n)
{
 int i,j;

 for(i=1;i<=k;i++)
  putchar(' ');
 for(j=1;j<=n;j++)
  putchar('*');
 putchar('\n');
}

p.139 연습문제 5.3.2.b

사용자 삽입 이미지

#include <stdio.h>

void print_star(int k, int n);

int main(void)
{
 int a,b;

 scanf("%d",&a);
 for(b=1;b<=a;b++)
  print_star(a-b,2*b-1);

 return 0;
}

void print_star(int k, int n)
{
 int i,j;

 for(i=1;i<=k;i++)
  putchar(' ');
 for(j=1;j<=n;j++)
  putchar('*');
 putchar('\n');
}

by Joe & Soohy 2007. 1. 4. 09:44