[C언어] 정보처리기사 프로그래밍 문제 풀이
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비트 크기의 단위입니다.