1. 2020년 8월 22일, 78번 문제
main(void) {
int i;
int sum = 0;
for(i=1; i<=10; i=i+2)
sum = sum + i;
printf("%d", sum);
}
for반복문에서 i의 초기값은 1, i가 10보다 같거나 작을 때까지 반복, i는 2씩 증가
i=1, 3, 5, 7, 9까지 진행
i=1일 때 sum=0+1=1;
i=3일 때 sum=1+3=4;
i=5일 때 sum=4+5=9;
i=7일 때 sum=9+7=16;
i=9일 때 sum=16+9=25;
i=11이면 i<=10이라는 조건에 위배되므로 반복문을 빠져나온다.
sum의 값을 정수로 출력하는 문제이므로 답은 25
2. 2021년 5월 15일, 63번 문제
#include <stdio.h>
int main(int argc, char *argv[]) {
int a = 4;
int b = 7;
int c = a | b;
printf("%d", c);
return 0;
}
a=4, 4를 2진수로 표현하면 00000100
b=7, 7을 2진수로 표현하면 00000111
c=a|b, a|b연산은 a와 b를 자리수끼리 비교해서 1이 하나라도 포함되어 있다면 1로 표기→00000111
00000111을 2진수로 표기하면 7이므로 정답은 7
3. 2021년 5월 15일, 72번 문제
#include <stdio.h>
int main(int argc, char *argv[]_ {
char a;
a = 'A' + 1;
printf("%d", a);
return 0;
}
char a; 는 문자열 a라고 선언
a = 'A' + 1; A는 아스키코드번호로 65, 65+1=66;
a를 정수형으로 출력하라는 문제이므로 답은 66
4. 2021년 5월 15일, 73번 문제
#include <stdio.h>
int main(int argc, char *argv[]) {
int a[2][2] = {{11, 22}, {44, 55}};
int i, sum = 0;
int *p;
p = a[0];
for(i=1; i<4; i++)
sum += *(p + i);
printf("%d", sum);
return 0;
}
a[2][2]는 a의 2행 2열 배열이다.
주소는 임의로 100부터 시작
배열은 연속된 물리적 공간이므로 주소도 연속적으로 생성
a의 주소 : 100
a[0]의 대표 주소 : 100
a[1]의 대표 주소 : 102
a[0] | 값 | 11 | 22 |
주소 | 100 | 101 | |
a[1] | 값 | 44 | 55 |
주소 | 102 | 103 |
*p는 포인터 변수
p=a[0]은 a[0]의 주소인 100이 들어가 있다.
for문 시작 : i의 초기값 1, i가 1~3까지 반복, i는 1씩 증가
sum= sum+*(p+i)
i=1일 때
sum=0+*(100+1)
*101은 주소101이 가리키는(point) 값 22
sum=0+22=22
i=2일 때
sum=22+*(100+2)
*102는 주소102가 가리키는(point) 값 44
sum=22+44=66
i=3일 때
sum=66+*(100+3)
*103은 주소103이 가리키는(point) 값 55
sum=66+55=121
따라서 답은 121
5. 2021년 8월 14일, 64번 문제
#include <stdio.h>
#include <string.h>
int main(void) {
char str[50] = "nation";
char *p2 = "alter";
strcat(str, p2);
printf("%s", str);
return 0;
}
strcat : 문자열 이어붙이기
str에 있는 "nation"과 p2에 있는 "alter"를 합치면 "nationalter"라는 단어가 된다.
6. 2021년 8월 14일, 66번 문제
#include <stdio.h>
int main(void) {
int a = 3, b = 4, c = 2;
int r1, r2, r3;
r1 = b <= 4 || c == 2;
r2 = (a > 0) && (b < 5);
r3 = !c;
printf("%d", r1+r2+r3);
return 0;
}
r1 = b<=4 || c == 2 ;
b<=4 -> 4<=4(참)
c==2 -> 2==2(참)
참 || 참 = 참(1)
r1 = 1
r2 = (a>0) && (b<5) ;
a>0 -> 3>0(참)
b<5 -> 4<5(참)
참 && 참 = 참(1)
r2 = 1
r3 = !c;
!는 반대, c는 값이 들어있어 참이므로 참의 반대는 거짓(0)
r3 = 0
r1+r2+r3 = 1+1+0 = 2
7. 2021년 8월 14일, 71번 문제
#include <stdio.h>
int main(void) {
int n = 4;
int *pt = NULL;
pt = &n;
printf("%d", &n + *pt - *&pt + n);
return 0;
}
n | 값 | 4=*pt |
주소 | 100(임의)=&n=pt | |
pt | 값 | 100=*&pt |
주소 | 200(임의)=&pt |
&은 주소, *은 ~가 가리키는(point) 값
&n + *pt - *&pt + n = 100 + 4 - 100 + 4 = 8
'개발자 되기 > 자격증' 카테고리의 다른 글
[정보처리기사] PYTHON 필기 기출 문제 해설 (0) | 2022.04.14 |
---|---|
[정보처리기사] JAVA 필기 기출 문제 해설 (0) | 2022.04.14 |
[정보처리기사] 필기 5과목 빈출 정리 (0) | 2022.04.13 |
[정보처리기사] 필기 4과목 빈출 정리 (0) | 2022.04.13 |
[정보처리기사] 필기 3과목 빈출 정리 (0) | 2022.04.12 |