요르딩딩

쉽게 풀어쓴 C언어 Express(9장) 본문

[C]

쉽게 풀어쓴 C언어 Express(9장)

요르딩딩 2019. 5. 5. 14:18
728x90

01. 다음의 소스 안에 적합한 변수를 선언하여 보라.

#include <stdio.h>

void f(void);

 

int main(void)

{   ...   }

void f(void)

{   ...   }

 

1.함수 f()안에서만 사용하는 int형 변수 number

2. 모든 함수에서 사용하는 double형 변수 radio

3.함수 f()안에서 사용되고 CPU 레지스터에 저장되어야 하는 변수 index

4.모든 함수에서 사용되고 다른 소스 파일에서 정의된 변수 counter

5.함수 main()에서 사용되고 이전의 값이 유지되는 변수 setting

 

:

#include <stdio.h>

void f(void);

double radio;    //2

extern int couter;    //4

 

int main(void){

  static int setting;    //5

  return 0;

}

void f(void){

  int number;    //1

  register int index;   //3

}

-----------------------------------------------------------------------------

3.프로그램의 출력을 쓰고, 이유를 설명하라.

(a)

#include <stdio.h>

void f(void);

int i;

int main(void){

  for(i =0; i<3; i++)

  f();

  return 0;

}

void f(void){

  for(i =0; i<5; i++)

  printf("#");

}

==> i가 전역변수이므로 for문을 반복하지 않는다.

 

(b)

#include <stdio.h>

void f(int);

int n=10;

int main(void){

  f(n);

  printf("n=%d\n,n");

  return 0;

}

void f(void){

  n=20;

}

==>함수 fn=20;은 지역변수인데 값을 반환하지 않으므로 10이 출력된다.

 

(c)

#include <stdio.h>

void f(int);

int x=1;

int main(void){

 int x=2;

  {

   int x=3;

   printf("%d\n,x");

  }

 printf("%d\n,x");

return 0;

}

==> 3,2 출력, 전역변수보다 우선인 지역변수 3 출력 후 그다음 지역변수인 2가 출력된다.

 

(d)

#include <stdio.h>

void f(void);

 

int main(void){

  f();

  f();

  return 0;

}

void f(void)

{

  static int count =0;

  printf("%d\n" ,count++);

}

 

==>0,1 출력 , 정적변수의 값이 누적된다.

-----------------------------------------------------------------------------

5.다음 함수를 주석과 같이 호출하는 경우에 출력되는 내용과 함수의 반환 값을 구하라.

(a)

//sum(5)로 호출

int sum(int n){

  printf("%d\n,n");

  if(n<1) return 1;

  else return (n + sum(n-1));

}

==>5,4,3,2,1,0,16

 

(b)

//recursive(5)로 호출

int recursive(int n){

  printf("%d\n", n);

  if(n<1) return 2;

  else return(2*recursive(n-1) +1);

}

 

==>5,4,3,2,1,0,95

 

 

 

728x90

'[C]' 카테고리의 다른 글

생활코딩(1)  (0) 2019.05.08
Comments