1. 출력 결과
#include <stdio.h>
void main(){
int a = 100;
char c = 'Z';
switch(a/10){
case 10:
case 9: c = 'A'; break;
case 8: c = 'B'; break;
default: c = 'F';
}
printf("%c\n", c);
}
<정답>
A
2. 출력 결과
#include <stdio.h>
void main( ){
int i, j;
int temp;
int a[5] = {14, 22, 53, 45, 1};
for(i=0; i<4; i++){
for(j=0; j<4-i; j++){
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(i=0; i<3; i++){
printf("%d\n", a[i]);
}
}
<정답>
1
14
22
3. 출력 결과
#include <stdio.h>
void main( ){
int a = 0, b = 1;
printf("%d\n", a && b);
printf("%d\n", a || b);
}
<정답>
0
1
<해설>
참 거짓 판단 후 출력
참 - 1 / 거짓 - 0
4. 출력 결과
#include <iostream>
void main(){
int score = 95;
switch(score/10){
case 10: std::cout << "수";
case 9: std::cout << "수";
case 8: std::cout << "우";
case 7: std::cout << "미";
case 6: std::cout << "양";
default: std::cout << "가";
}
<정답>
수우미양가
<해설>
break가 없음
* 만약 int score=100; 이면 수수미양가로 출력
* 개행 명령어 : std::endl 이면
수
우
미
양
가
로 출력
5. 출력 결과
#include <stdio.h>
void main(){
int ret = 4;
switch(++ret){
case 5: ret+=2;
case 3: ret++; break;
case 4: ret++;
default: ret*=2;
}
printf("%d\n", ret);
}
<정답>
8
6. 출력 결과
#include <iostream>
void main(){
int s = 0;
int i;
for(i=1; i<=10; i++){
if(i==2)
continue;
else if(i==4)
break;
s += i;
}
std::cout << i << " " << s;
}
<정답>
4 4
<해설>
std::cout << i << " " << s; ---> 결과) 4 4
std::cout << i << s; ---> 결과) 44
continue는 반복문 처음으로 돌아감
7. 실행 결과
#include <iostream>
int fn(int n) {
if( n <= 1 )
return 1;
else
return n*fn(n-1);
}
void main() {
std::cout << fn(4);
}
<정답>
24
<해설>
* 재귀함수 - 자기 자신을 부르는 함수
1. fn(4)의 결과값을 출력 ( fn이라는 함수 호출할 때 4를 넘겨줌 )
2. int fn(int n) => n은 4
3. 4일 경우 else문 실행
4. n*fn(n-1) 반환 => 4*fn(3) 출력
5. 이렇게 fn(3), fn(2), fn(1)까지 return
6. fn(1)은 if문에 만족하므로 1 반환
7. fn(1) = 1 / fn(2) = 2 / fn(3) = 6
8. fn(4) = 4*fn(3) = 24
8. 출력 결과
#include <stdio.h>
int f(int i);
void main(){
printf("%d %d %d", f(1), f(5), f(-2));
}
int f(int i){
if(i<=2)
return 1;
else
return f(i-1)+f(i-2);
}
<정답>
1 5 1
<해설>
최초 : f(5)
두번째 : (f(4) + f(3))
세번째 : (f(3) + f(2)) + (f(2) + f(1))
네번째 : (f(2) + f(1) + 1 ) + (1 + 1)
result : (1 + 1 + 1) + (1 + 1) = 5
9. 출력 결과
#include <stdio.h>
int hrd(int n) {
if( n <= 0 )
return 1;
else
printf("%d ", n);
hrd(n-1);
}
int main() {
hrd(5);
return 0;
}
<정답>
5 4 3 2 1
10. 출력 결과
#include <iostream>
using namespace std;
void main(){
int a[5] = {1, 2};
int s = 0;
for(int i=2; i<4; i++){
s += a[i];
}
cout << s;
}
<정답>
0
11. 밑줄 내용(소스코드는 sum이라는 변수에 100개의 정수형 배열 a에 저장된 값들의 합을 구한다.)
#include <stdio.h>
void main(){
int a[100] = {1, 2, 3, 4, 5};
int sum = 0;
for(____________________){
sum = sum + a[i];
}
printf("%d\n", sum);
}
<정답>
i=0; i<100; i++
또는
int i=0; i<100; i=i+1 또는
int i=0; i<=99; i++ 또는
int i=99; i>=0; i-- 또는
int i=99; i>-1; i-- 또는
char i=0; i<100; i++ 등..
<해설>
for(int i = 0; i < a.length; i++) 는 클래스나 구조체에서 사용가능함 ( C에서 변수 뒤에 표현 X )
12. 출력 결과
#include <stdio.h>
int num(int a, int b){
if( a > b ) {
return a;
}
else {
return b;
}
}
void main(){
printf("%d\n", num(10, 20) + num(30, 20));
}
<정답>
50
13. 출력 결과
#include <iostream>
void main(){
int arr[2][2];
int count = 0;
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
arr[i][j] = ++count;
}
}
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
std::cout << arr[j][i] << " ";
}
}
}
<정답>
1 3 2 4
<해설>
i j count
0 0 1
0 1 2
1 0 3
1 1 4
arr[j][i]
1 3 2 4
14. 출력 결과
#include <stdio.h>
void main(){
int i, j;
int temp;
int a[5] = {5, 4, 3, 2, 1};
for(i=1; i<2; i++){
j=i-1;
while((a[j] > a[j+1]) && (j>=0)){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
j--;
}
}
for(i=0; i<5; i++){
printf("%d, ",a[i]);
}
}
<정답>
4, 5, 3, 2, 1
<해설>
삽입 정렬을 1회전 한 후의 결과
'정보처리기사' 카테고리의 다른 글
[정보처리기사 이론 정리]용어 정리 (0) | 2022.03.24 |
---|---|
[정보처리기사 이론 정리]OSI 7 계층 (0) | 2022.03.24 |
[정보처리기사 이론 정리]응집도와 결합도 (0) | 2022.03.24 |
[정보처리기사 이론 정리]제품 소프트웨어 매뉴얼 (0) | 2022.03.24 |
[정보처리기사 이론 정리]간접 연계 방식 기술 (0) | 2022.03.24 |