Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 mvc2 - 검증
- 스프링 mvc2 - 타임리프
- 스프링 입문(무료)
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch1
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch13
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch4
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch7
- jpa - 객체지향 쿼리 언어
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch2
- 타임리프 - 기본기능
- 스프링 mvc2 - 로그인 처리
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch6
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch12
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch3
- 게시글 목록 api
- @Aspect
- 2024 정보처리기사 수제비 실기
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch8
Archives
- Today
- Total
나구리의 개발공부기록
Chapter 02 - C언어(예상문제) 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용
Chapter 02 - C언어(예상문제)
소소한나구리 2024. 6. 17. 22:112024년도 수제비 정보처리기사 실기책(6판) 내용 정리
1. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int Soojebi(int num) {
int i;
// 1. 2 < 2, 1반환
for(i=2; i<num; i++){ // 2부터 매개변수의 수까지 반복문 실행
// 2. 2 < 3, 3 % 2 == 1, 1반환
// 3. 2 < 4, 4 % 2 == 0, 0반환
// 4. 2 < 5, ... 5 % 4 == 1, 1반환
// 5. 2 < 6, 6 % 2 == 0, 0반환
// 6. 2 < 7, ... 7 % 6 == 1, 1반환
// 7. 2 < 8, 8 % 2 == 0, 0반환
// 8. 2 < 9, ... 9 % 3 == 0, 0반환
if(num % i == 0)
return 0;
}
return 1;
}
int main(){
int num = 10, cnt=0, i;
// 2 ~ 9까지 반복문 실행 (8번)
for(i=2; i<num; i++)
cnt += Soojebi(i); // 반복문 진행 되는 동안 함수의 결과를 cnt에 저장
// Soojebi(2) == 1
// Soojebi(3) == 1
// Soojebi(4) == 0
// Soojebi(5) == 1
// Soojebi(6) == 0
// Soojebi(7) == 1
// Soojebi(8) == 0
// Soojebi(9) == 0
printf("%d\n", cnt); // cnt 반환
}
// 4
2. 1에서 6사이에 숫자를 10번 임의로 생성한 값을 hist라는 배열에 저장, 1 ~ 6까지 몇 번 발생했는지 출력하는 코드를 ①, ② 에 코드를 입력하여 완성
문제 및 풀이
#include <stdio.h>
#include <stdlib.h> # srand함수 사용을 위함
#include <time.h> # 시간함수사용을 위함
int main(){
int hist[6] = {0,};
int n, i = 0;
srand(time(NULL));
// 1 ~ 6 숫자를 임의로 생성한다, 길이가 6인 배열의 인덱스번호는 0 ~ 5
// 임의로 생성한 숫자에서 -1을 하면 인덱스 번호가 됨
do {
i++;
n = rand()%6 + 1; // 1 ~ 6 숫자를 임의로 생성하는 코드
hist[①] += 1; // 생성한 값을 배열에 넣는 코드, 5를 넘어가면 에러가 발생함
} while(i<10);
for(i=0; i<6; i++)
printf("h[%d]=%d\n.", i, ②); // 2번에서는 배열의 값을 출력하면됨
}
// ① : n-1
// ② : hist[i]
3. 값을 10개 입력받아 가장 작은값을 출력하는 C코드의 밑줄친 곳에 적합한 답을 작성
문제 및 풀이
#include <stdio.h>
int main() {
int num[10];
int min = 9999;
int i;
for (i=0; i<10; i++){
scanf("%d", &num[i]);
}
for(i=0; i<10; i++) {
if(min > _______){ // min값과 num[i]값을 비교해서 min이 더 크면 num[i]의 값을 min에 저장
min = num[i]
}
}
printf("%d", min);
}
// num[i]
4. 숫자 5개를 입력받아 짝수가 몇개인지 구하는 코드의 밑줄에 들어갈 가장 적합한 답을 작성
문제 및 풀이
#include <stdio.h>
int main() {
int i, cnt=0;
int arr[5];
for (i=0; i<5; i++) {
scanf("%d", &arr[i]);
}
for (i=0;i<5;i++){
if(arr[i] % 2 ______ 0) // 2로 나눈 나머지가 0일때 카운트를 증가시키면 됨
cnt = cnt + 1;
}
printf("%d", cnt);
}
// ==
5. C언어 코드의 밑줄에 들어갈 가장 적합한 답을 작성
출력결과 : value = 40
value = 30
value = 20
문제 및 풀이
#include <stdio.h>
#define MAX_SIZE 10
int stack[MAX_SIZE];
int top = -1; // 스택의 top을 뜻함
void push(int item) {
if(top >= ___①___) // stack 배열이 꽉참, 마지막 인덱스보다 크거나 같을때 문구 출력
printf("stack is full\n");
else
stack[++top] = item;
}
int pop() {
if(top == ___②___) { // stack 배열이 비어있음, stack의 값을 다 꺼냈지만 또 꺼내려고할때 문구 출력
printf("stack is empty\n");
return -1;
}
return stack[top--];
}
int is_empty(){
if(top == -1)
return 1;
else
return 0;
}
int main() {
push(20);
push(30);
push(40);
while(!is_empty()) {
printf("value = %d\n", pop());
}
}
// ① MAX_SIZE-1 or 9
// ② -1
6. C언어 코드의 밑줄에 들어갈 가장 적합한 답을 작성
출력 결과 : 54321000
문제 및 풀이
#include <stdio.h>
int main() {
char ch, str[] = "12345000";
int i, j;
for (i=0; i<8; i++){
ch = str[i];
if (_______) // ch의 값이 문자 0이면 break;
break;
}
for(j=0; j<i; j++) {
j--;
ch = str[j];
str[j] = str[i];
str[i] = ch;
}
printf("%s", str);
}
// ch == '0'
7. C코드의 실행 결과작성
문제 및 풀이
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char str1[20] = "KOREA";
char str2[20] = "LOVE";
char* p1 = NULL;
char* p2 = NULL;
p1 = str1; // 포인터 변수 p1에 str1의 주소를 저장 (&str[0])
p2 = str2; // 포인터 변수 p2에 str2의 주소를 저장 (&str[0])
str1[1]=p2[2]; // p2[2] == str2[2], str2[2]에 저장된 값을 str1[1]에 저장, KVREA
str2[3]=p1[4]; // p1[4] == str1[4], str1[4]에 저장된 값을 str2[3]에 저장, LOVA
strcat(str1, str2); // str1 문자열 뒤에 str2 문자열을 붙힘, KVREALOVA
printf("%c", *(p1+2)); // p1[2]의 값을 출력, R
return 0;
}
// R
8. C코드의 실행 결과작성
문제 및 풀이
#include <stdio.h>
int main(int argc, char *argv[]) {
int arr[2][3] = {1,2,3,4,5,6}; // 123
// 456
int (*p)[3] = NULL; // 길이가 3인 int타입 포인터 배열 선언, p[x][3]인 크기의 배열을 가리킬 수 있음
p=arr; // 포인터 배열 p에 arr의 주소를 저장
printf("%d", *(p[0]+1) + *(p[1]+2)); // p[0][1] + p[1][2] == arr[0][1] + arr[1][2]
printf("%d", *(*(p+1)+0) + *(*(p+1)+1)); // p[1][0] + p[1][1] == arr[1][0] + arr[1][1]
return 0;
}
// 89
9. C코드의 실행 결과작성
문제 및 풀이
#include <stdio.h>
int main(int argc, char *argv[]) {
int n1=1, n2=2, n3=3;
int r1, r2, r3;
r1=(n2<=2)||(n3>3); // r1 = 1
r2=!n3; // r2 = 0
r3=(n1>1)&&(n2<3); // r3 = 0
printf("%d", r3-r2+r1); // 0 - 0 + 1
return 0;
}
// 1
10. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int fn(char* a){
int i = 0;
for (i=0; a[i] != '\0'; i++); // 'H','e','l','l','o','\0' 문자 타입 배열의 마지막 인덱스값 반환
return i;
}
int main() {
char a[10] = "Hello"; // 문자 배열로 입력
printf("%d", fn(a)); // 출력 결과 반환(정수)
}
// 5
11. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
struct st{
int a;
int c[10];
};
int main(int argc, char *argv[]){
int i = 0;
struct st ob1; // 구조체 변수1 선언
struct st ob2; // 구조체 변수2 선언
ob1.a = 0;
ob2.a = 0;
for(i=0; i<10; i++){ // 구조체의 배열 c 변수에 값을 저장
ob1.c[i] = i; // 그냥 인덱스 값을 저장
// 0,1,2,3,4,5,6,7,8,9
ob2.c[i] = ob1.c[i] + i; // 인덱스 + ob1.c[i]값을 더해서 저장
// 0, 2, 4, 6, 8, 10, 12, 14, 16, 18
}
for(i=0; i<10; i=i+2){
ob1.a = ob1.a + ob1.c[i]; // 0, 2, 4, 6, 8을 더하기
ob2.a = ob2.a + ob2.c[i]; // 0, 4, 8, 12, 16을 더하기
}
printf("%d", ob1.a + ob2.a); // 위의 연산결과들을 더하기 연산
return 0;
}
// 60
12. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int f(int i);
int main() {
printf("%d %d %d", f(1), f(5), f(-2));
}
int f(int i) {
if(i<=2) // f(1), f(-2)는 각각 1을 반환
return 1;
else
return f(i-1)+f(i-2);
// 3(2.번의 연산결과 반환) + 2(3.번의 연산 결과 반환)
// 1. f(5-1) 재귀 + f(5-2) 재귀
// 2. f(4-1) 재귀 + f(4-2) 1반환 -> f(5-1)에 3반환
// 3. f(3-1) 1반환 + f(3-2) 1반환 -> f(5-2)에 2 반환
// 4. f(3-1) 1반환 + f(3-2) 1반환 -> f(4-1)에 반환
}
// 1 5 1
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 03 - 자바(기출문제_2) (0) | 2024.06.22 |
---|---|
Chapter 03 - 자바(기출문제_1) (0) | 2024.06.19 |
Chapter 02 - C언어(기출 문제_5) (1) | 2024.06.16 |
Chapter 02 - C언어(기출 문제_4) (1) | 2024.06.16 |
Chapter 02 - C언어(기출 문제_3) (1) | 2024.06.15 |