Q21) C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h> main() { int num1 = 5; int num2 = -5; printf("%d, %d", ~num1, ~num2); } |
A)
-6, 4
해설)
비트 NOT 연산자를 사용하게 되면 양수일 때는 부호와 상관없이 1 증가 후, 음수로 변환하고, 음수일 때는 부호와 상관없이 1감소 후 양수로 변환한다.
Q22) C 프로그램의 실행 결과를 쓰시오.
#define VALUE1 1 #define VALUE2 2 main() { float i; int j, k, m; i = 100 / 300; j = value1 & value2; k = value1 | value2; if(j && k || i) m = i + j; else m = j + k; printf("i = %.1f j = %d k = %d m = %03d \n", i, j, k, m); } |
A)
i = 0.0 j =0 k = 3 m = 003
해설)
define VALUE1 1는 메크로 상수이다. 매크로 VALUE1에 1를 정의한다. define VALUE2 2는 매크로 상수이다. 매크로 VALUE2에 2를 정의한다.
i = 100/300은 정수 나누기 정수이다. 몫이 0이므로 i에 0이 저장된다.
value1 & value2 결과값은 0이다. j에 0이 저장된다.
value1 | value2 결과값은 3이다. k에 3이 저장된다.
j && k || i 연산의 결과값은 0이다. 고로 else 문이 실행된다. j + k의 결과값은 3이다. 변수 m에 3이 저장된다.
%.1f를 하면 실수값으로 소수점 첫째자리까지 출력된다. 0.0이 출력된다.
%03d를 하면 3자리까지 출력된다. 003이 출력된다.
나머지 값들은 다 그대로 출력된다.
Q23) C 프로그램의 실행 후, 출력 결과 값은?
void main(void) { int a, b; a = 20; b = (a > 20) ? a+a : a*a; printf("b=%d \n", b); } |
A)
b=40
해설)
b == (a > 20) ? a+a : a*a; 는 삼항 연산자이다. a > 20이 참이므로 a+a값이 실행되게 된다. a+a는 40이다. 변수 b에 40이 저장되게 된다.
Q24) 다음 프로그램 조건문에 대해 삼항 조건 연산자를 사용하여 표현하시오.
int i = 7, j = 9; int k; if(i > j) k = i - j; else k = i + j; |
A)
k = (i > j) ? (i - j) : (i + j);
Q25) 다음 C 프로그램의 실행 결과는?
#include <stdio.h> int main() { int a=0, b=1; switch(a) { case 0 : printf("%d \n", b++); break; case 1 : printf("%d \n", ++b); break; default : printf("%d \n", b); break; } return 0; } |
A)
1
해설)
a는 0이므로 case 0번부터 break를 만날 때까지 수행한다.
case 0 : printf("%d \n", b++); break; 변수 b에 저장된 값을 출력하는데 b++이므로 출력 후에 b=b+1이 된다. b에 저장된 값은 1이므로 1이 출력된다.
Q26) 다음 C 프로그램의 실행 결과는?
#include <stdio.h> int main() { switch(3) { case 1: c += 3; case 2: c++; case 3: c = 0; case 4: c += 3; case 5: c -= 10; default: c--; } printf("%d", c); return 0; } |
A)
-8
해설)
switch 제어문에 3값이 들어왔기 때문에, case 3부터 break를 만날 때까지의 구문을 수행한다.
해당 프로그램에는 break가 없기 때문에 case 3부터 default까지 모든 구문을 수행한다.
c 변수에 0 대입 -> 0
c 변수에 3을 증가 -> 3
c 변수에서 10을 감소 -> -7
c 변수에서 1감소 -> -8
Q27) 다음 C 프로그램의 실행 결과는?
#include <stdio.h> int main() { int a, b; a = b = 1; if(a == 2) b = a + 1; if(a == 2) b = a + 1; else if(a == 1) b = b + 1; else b = 10; printf("%d, %d\n", a, b); return 0; } |
A)
1, 2
해설)
a, b 변수에 각각 1을 저장한다.
조건문 if, else if, if문이다.
첫번째 조건식은 만족하지 않고 두번째 조건식을 만족하므로 b = b+1; 연산을 수행한다 연산후에 b에 저장된 값은 2가 된다.
a, b에 저장된 값을 출력하므로 답은 1, 2이다.
Q28) 다음은 어느 학생이 C언어로 작성한 학점 계산 프로그램이다. 출력 결과는?
#include <stdio.h> int main() { int score = 85; char grade; if (score >= 90) grade='A'; if (score >= 80) grade='B'; if (score >= 70) grade='C'; if( score < 70) grade='F'; printf("학점 : %c\n", grade); return 0; |
A)
학점 : C
해설)
score에는 85개 저장된다.
총 4번의 if문을 수행하게 된다.
첫번째 if문 안의 실행식은 실행되지않는다. 두번째 if 문 안에 실행식은 실행되고 grade에는 C가 저장된다. 세번째 if문 안에 실행식은 실행되고 grade에는 C가 저장되게 된다. 네번째 if문은 실행되지 않는다. grade에는 최종적으로 C가 저장된다.
학점 : C가 출력된다.
Q29) 다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h> int main() { int j; int sum = 0; for (j = 2; j <= 70; j += 5) sum = sum + 1; printf("%d", sum); } |
A)
14
해설)
for (j = 2; j <= 70; j += 5)
sum = sum + 1;
j가 2부터 67까지 5씩 증가하면서 sum값이 1씩 더해진다. 총 14번 반복되므로 sum에 저장된 값은 14가 된다. 고로 답은 14이다.
Q30) 다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h> int main() { int count, sum = 0; for( count = 1; count <= 10; count++) { if((count % 2) == 0) continue; else sum += count; } printf("%d\n", sum); } |
A)
25
해설)
count 값을 1부터 시작해서 10보다 작은 동안 반복문을 수행한다.
짝수면 다음 반복으로 넘어가고 홀수면 sum = sum + count를 한다.
count가 1, 3, 5, 7, 9일떄 sum = sum + count를 한다. sum의 값은 최종적으로 25가 된다. 답은 25이다.
'자격증 > 정보처리기사 실기 문제 풀이' 카테고리의 다른 글
흥달쌤 정보처리기사 실기 프로그램 문제(C언어 문제 31~40) (0) | 2023.04.10 |
---|---|
흥달쌤 정보처리기사 실기 프로그램 문제(C언어 문제11~20) (0) | 2023.04.08 |
흥달쌤 정보처리기사 실기 프로그램 문제(C언어 문제 1~10) (0) | 2023.04.07 |
흥달쌤 정보처리기사 실기 데이터베이스 문제(DML(Data Manipulation Language)) (0) | 2023.04.06 |
흥달쌤 정보처리기사 실기 데이터베이스 문제(DCL) (0) | 2023.04.05 |