언어/C

[C언어] 정보처리기사 프로그래밍 문제 풀이

새벽물망초 2022. 2. 10. 15:50

C언어

01 반복문

#include <stdio.h>

    main() {
    int k = 2, j;
    while(1) {
        j = 2;
        while(k % j != 0)
            j++;
        if (k==j)
            printf("%d ", k);
        if (K < 7)
            k++;
        else
            break;
    }
}

2%2 = 0, k=3

3%2=1, j=3, k=4

4%2=0, k=5

5%2=1, j=3
5%3=2, j=4
5%4=1 j=5
5%5=0, k=6

6%2=0, k=7


7%2=1, j=3
7%3=1, j=4
7%4=3, j=5
7%5=2, j=6
7%6=1, j=7
7=7 -> break

출력 : 2 3 5 7

오답노트 : ★while은 조건이 만족하면 while내에서 계속 돈다

 

 

02 for문

#include <stdio.h>

void main(){
	int a=0, i;
    
    for(i=3; i<100; i*=3)
    	a += i;
        
    printf("%d", i);
}

변수 a=0, i=3 설정

i가 100미만 일 때 까지 a = a + i 실행하고, i = i * 3 실행

(for문이 한줄이면 그 한줄만 실행함)

i=3이고 a=a+i이므로, 0+3 해서 a=3, i=i*3 이므로 3*3 해서 i=9 가 됨

i=9이고 a=a+i이므로, 3+9 해서 a=12, i=i*3 이므로 9*3 해서 i=27 이 됨

i=27, 12+27=39, a=39 / 27*3=81, i=81

i=81 39+81=120, a=120 / 81*3=243, i=243

i=243, i<100 에 만족하지 않으므로 반복문 종료

printf(d)이므로 243 출력

 

 

03

#include <stdio.h>

int main() {
  int i;
  
  for (i = 0; i < 10; i++) {
    if (i == 4) {
      break;
    }
    printf("%d ", i);
  }
   
  return 0;
}

 

i=0 부터 i++하다가 i==4가 되면 반복문 종료

[출력]

0 1 2 3

 

 

04

int i;

for (i = 0; i < 10; i++) {
  if (i == 4) {
    continue;
  }
  printf("%d ", i);
}

i==4가 되면 실행하지 다음 코드를 실행하지 않고 반복문의 처음으로 돌아감

따라서, i=4 에서 i++ 한 5부터 수행됨

[출력]

0 1 2 3 5 6 7 8 9

 

 

05

int i = 0;

while (i < 10) {
  if (i == 4) {
    break;
  }
  printf("%d ", i);
  i++;
}

[출력]

0 1 2 3

 

 

06

int i = 0;

while (i < 10) {
  i++;
  if (i == 4) {
    continue;
  }
  printf("%d ", i);
}

i++이 맨 앞에 있어서 1 부터 출력되는거 아닌가

[출력]

0 1 2 3 5 6 7 8 9

 

 

★break : 조건이 맞으면 거기서 끝

continue : 해당 코드가 실행되면 다음 코드를 실행하지 않고 해당 반복문의 처음으로 돌아간다


 

07 삼항연산자

#include <stdio.h> 

int main()
{
    int num1 = 5;
    int num2;
 
    num2 = num1 ? 100 : 200;    // num1이 참이면 num2에 100을 할당, 거짓이면 num2에 200을 할당
 
    printf("%d\n", num2);    // 100: num1이 5이므로 참. num2에는 100이 할당됨
 
    return 0;
}

[출력] 

100

 

삼항연산자

num2 = num1 ? 100 : 200; ?는 num1 변수 자체를 참인지 거짓인지 판단합니다. 또한, 삼항 연산자는 if조건문과 마찬가지로 0일 때 거짓, 0이 아닐 때는 참으로 동작합니다. 따라서 num1에 들어있는 5는 참이므로 : 앞의 100이 할당됩니다. 만약 num1 0을 넣으면 : 뒤의 200이 할당됩니다.

 

 

08

책 문제


09 출력

%d: 10진수(정수형)

%o: 8진수

%x: 16진수

비트 연산자는 바이트 단위보다 더 작은 비트 단위로 연산하는 연산자입니다.

  • 비트(Bit): 2진수를 저장하는 단위입니다. 컴퓨터에서 사용할 수 있는 최소 단위이며 0과 1을 나타냅니다.
  • 바이트(Byte): 8비트 크기의 단위입니다.