내가 보려고 만든 블로그

정보처리기사 실기 (c언어2) 본문

정보처리기사 공부

정보처리기사 실기 (c언어2)

hjh1023 2023. 4. 26. 18:52
반응형

재귀함수

#include <stdio.h>

int func(int a) {
  if (a <= 1) return 1;
  
  return a * func(a - 1);
}

int main() {
	
  int a;
  scanf("%d", &a);
  printf("%d", func(a));
	
  return 0;
}

만약에 scanf에 5를 넣었다면
func(5) 이렇게 되고
func(5) = 5* func(4)
func(4) = 4* func(3) 
func(3) = 3* func(2)
func(2) = 2* func(1)
func(1) = 1
이렇게 나오는 값을 쓰고 func(1)=1이니깐 func(2)는 2*1이렇게하고
func(3)은 3*2 이렇게해서 6이 나오고 func(4)는 4*6해서 24
func(5)는 5*24 는 120이다. 재귀함수는 이런식으로 계산하면 됨.
 

2진수

#include <stdio.h>
int main() {
	int input = 101110;
	int di = 1;
	int remain, sum = 0;
	while (input > 0) {
		remain = input ( ① ) ( ② );
		sum = sum + (remain * di);
		di = di * 2;
		input = input / 10;
	}
	printf("%d", sum);
}

1)% 2)10
이렇게 2진수 나오고 괄호나오면 %하고 10이라고 나오더라ㅠ 이해안되면 이렇게 외워야겠음.
 

3항연산자

#include <stdio.h>

int main() {
	int a = 10;
	int b = 20;
	int c;
	c = a > b ? a:b;
	printf("%d", c);
	return 0;
}

c = a > b ? a:b;
c의값? 이런식으로 나오면 a > b인지 보고 10>20 이렇게 되니깐 크지않음
그러면 b의값이 c로 온다. 앞의 조건문을 보고 참이면 ? 뒤에 첫번째값(a)를 선택 거짓이면 b를 선택한다.
여기서는 a>b가 거짓이니깐 b의값 20이 c로 들어온다.
 

숫자역순으로 출력하기

#include <stdio.h>
 
int main() {
 
  int number = 1234;
  int div = 10;
  int result = 0;
 
  while (number ((1) > ) 0) {
 
    result = result * div;
    result = result + number ((2) % ) div;
    number = number ((3) / ) div;
 
  }
 
  printf("%d", result);
return 0;
 
}
  1. %
  2. /

이렇게 나옴.!!
 

#include <stdio.h>
 
int main() {
 
	int a = 30; 
	int b =15;
	printf("%d%d"a & b, a|b);
	return 0;
 
}

1)a,b 이진수로 변경 
11110
01111
여기서 &면(and)
11110
01111
-----------
01110 --> 14
여기서 |면(or)
11110
01111
-----------
11111 -->31 이렇게 됨
printf("%d%d"a & b, a|b); 값은 1431이렇게 나옴

반응형