본문 바로가기
자격증/정보처리기사 실기 문제 풀이

흥달쌤 정보처리기사 실기 프로그램 문제(C언어 문제 21~30)

by 리드민 2023. 4. 9.
반응형

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이다.

반응형