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
- 스프링 db2 - 데이터 접근 기술
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch1
- 스프링 입문(무료)
- 자바 기본편 - 다형성
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch11
- 2024 정보처리기사 수제비 실기
- 스프링 mvc2 - 검증
- 스프링 db1 - 스프링과 문제 해결
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch2
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch9
- 게시글 목록 api
- @Aspect
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch8
- 스프링 mvc1 - 서블릿
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch12
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch5
- 자바 중급1편 - 날짜와 시간
Archives
- Today
- Total
나구리의 개발공부기록
Chapter 02 - C언어(기출 문제_5) 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용
Chapter 02 - C언어(기출 문제_5)
소소한나구리 2024. 6. 16. 18:522024년도 수제비 정보처리기사 실기책(6판) 내용 정리
27. 다음의 선택정렬 코드의 밑줄에 알맞는 코드를 작성
실행 결과 : 11 12 22 25 64
문제 및 풀이
#includ <stdio.h>
int main() {
int arr[] = {64, 25, 12, 22, 11};
// 배열 arr의 사이즈의 값을 arr[0]의 길이로 나눈 몫을 저장
int n = sizeof(arr)/sizeof(arr[0]);
int i = 0, j, tmp;
do{ // 아래코드는 무조건 1번 실행됨
j = i + 1;
do {
// arr[0]의 값이 arr[1]의 값보다 크면 자리를 바꾸는 코드가 완성되야함
if(arr[i]________arr[j]){
tmp = arr[i];
arr[i] = arr[j];
arr[i] = tmp;
}
j++;
} while (j<n);
j++;
} while (i < n-1);
for(i=0; i<=4; i++)
printf("%d ", arr[i]);
return 0;
}
// >
// 선택 정렬은 비교할 값이 비교대상의 값보다 크면 자리를 바꿔서 오름차순으로 만드는 알고리즘
28. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int main(){
int c = 0;
int i;
// 1 ~ 2023까지 반복
for (i=1; i<=2023; i++) {
// i가 4의 배수이면 c의 값을 1증가
// 1 ~ 2023까지 수중 4의 배수가 몇개있는지 구하는 코드
// 2023 / 4를 하면 4의 배수의 개수가 구해짐
if(i%4 == 0) c++;
}
printf("%d", c); // 505출력
return 0;
}
// 505
29. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
// n의 값이 sum과 같으면 1 아니면 0을 반환하는 함수
// 자기 자신을 제외한 약수의 합이 자기 자신과 같은 수 == 완전수.. 검색해서 처음암ㅋㅋ
// 자기 자신보다 작으면 부족수, 크면 과잉수라고 한다고 함
// 가장 작은 완전수들은 6, 28, 496, 8128 이다 -> 이런문제 나올때를 대비해서 어느정도 외워두자
int perfect_number(int n){
int i, sum = 0;
// 매개변수인 n의 값을 2로 나누어서 반복문을 실행
for (i = 1; i <= n/2; i++) {
// 1. 2가 매개변수로 들어옴, 1 <= 1까지 반복
// 5. 3이 매개변수로 들어옴, 1 <= 1까지 반복 -> 동일하므로 연산 생략
// 6. 4가 매개변수로 들어옴, 1 <= 2까지 반복
// 10. n == 5, 1 <= 2까지 반복 -> 동일하므로 생략
// 11. n == 6, 1 <= 3까지 반복
if(n % i == 0) // n을 i로 나눈 나머지가 0이면 i를 sum에 누적 덧셈 연산
// 2. 2 % 1 == 0, 이므로 다음 코드 실행
// 7. 4 % 1 == 0, 4 % 2 == 0,
// 12. 6 % 1, 6 % 2, 6 % 3 == 0
sum += i;
// 3. i를 sum에 누적 연산, sum = 1
// 8. sum = 1 + 2, sum = 3
// 13. sum = 1 + 2 + 3, sum =6
}
if (n == sum)
// 4. n과 sum이 같지 않음으로 0을 반환
// 9. n != sum 이므로 0을 반환
return 1;
// 14. n == sum이므로 1을 반환
return 0;
}
int main() {
int i, sum = 0;
// 2부터 100까지 반복, 99회
for (i = 2; i<=100; i++){
// perfect_number함수 호출 결과가 1이면 i의 값을 sum에 누적 덧셈 연산
if(perfect_number(i))
// 15. i가 6일때 1(true)이므로 아래 코드 실행
sum += i;
// 16. sum = 6
// 100 이하의 완전수들(6, 28)의 합을 구하는 코드임을 확인,
// sum = 6 + 28
}
printf("%d", sum); // 34
return 0;
}
// 34
30. C언어에서 구조체의 포인터로 멤버에 접근하기 위한 기호를 작성
정답 : ->
#include <stdio.h>
struct Student{
char gender;
int age;
};
int main() {
struct Student s = {'F', 20};
struct Student *p = &s;
printf("%c %d", (&s)->gender, (&s)->age);
printf("%c %d", p->gender, p->age);
return 0;
}
31. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int soojebi(int n) { // 매개변수의 값 7
// 재귀 함수
if(n<=1) {
// 1. n의 값이 1보다 크므로 else문 진행
// 3. n의값이 6 , 4, 각각 else문 진행
// 6. 4번의 n은 5, 3, 각각 else문 진행
// 7. 5번의 n은 3, 1, 3은 else문, 1은 값을 return
// 12. 9번의 n은 4, 2, 각각 else문 진행
// 13. 10번의 n은 2, 1, 2는 else문 1은 값을 return
// 14. 11번의 n은 2. 0, 2는 else문 0은 값을 return
// 19. 15번의 n은 3, 1, 3은 else문 1은 값을 return
// 21. 20번의 n은 2 else문 진행
return n;
// 8. 5번의 joojebi(4-3)의 결과를 반환
}
else {
return soojebi(n-1) + soojebe(n-3);
// 2. soojebi(7-1) + soojebi(7-3) 둘다 다시 호출
// 30. + 1 (soojebi 함수의 7-3의 반환값은 1)
// 37. 1 (joojebi 함수의 7-3의 반환값은 1) + 1 = 2, 최종 반환값은 2
// 4. soojebi(6-1) + soojebi(6-3) 둘다 다시 호출, 2번의 soojebi(n-1)
// 33. + 1
// 36. 0 + 1 = 1 return
// 5. soojebi(4-1) 다시호출 + soojebi(4-3) 1 return, 2번의 soojebi(n-3)
// 29. 0 + 1 = 1 return
// 9. soojebi(5-1) + soojebi(5-3) 둘다 다시 호출, 4번의 soojebi(n-1)
// 26. 1 +
// 35. 1 + 0 = 1 return
// 10. soojebi(3-1) 다시호출 + soojebi(3-3) 0 return, 4번의 soojebi(n-3)
// 32. 0 + 0 = 0 return
// 11. joojebi(3-1) 다시호출 + soojebi(3-3) 0 return, 5번의 soojebi(n-1)
// 28. 0 + 0 = 0 return
// 15. soojebi(4-1) 다시호출 + soojebi(4-3) 1 return, 9번의 soojebi(n-1)
// 25. 0 + 1 = 1 return
// 16. soojebi(2-1) 1 return + soojebi(2-3) -1 return, 9번의 soojebi(n-3)
// 34. 1 + -1 = 0 return
// 17. soojebi(2-1) 1 return + soojebi(2-3) -1 return, 10번의 soojebi(n-1)
// 31. 1 + -1 = 0 return
// 18. soojebi(2-1) 1 return + soojebi(2-3) -1 return, 11번의 soojebi(n-1)
// 27. 1 + -1 = 0 return
// 20. soojebi(3-1) 다시호출 + soojebi(3-3) 0 return, 15번의 soojebi(n-1)
// 24. 0 + 0 = 0 return
// 22. soojebi(2-1) 1 return + soojebi(2-3), -1 return, 20번의 soojebi(n-1), 재귀 끝
// 23. 1 + -1 = 0 return
}
}
int main() {
// 아규먼트 값이 7인 soojebi 함수의 반환값을 출력
printf("%d", soojebi(7)); // 2
return 0;
}
// 2
32. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int main() {
char *p = "KOREA"; // 문자타입 포인터 변수 p에 문자열"KOREA"의 주소를 저장
// p[0] = K ... p[4] = A, p[5] = \0
// p == 문자열의 주소, 모두 출력
printf("%s\n", p);
// p+1 == 문자열의 주소 +1, 'O'부터 끝까지 툴력
printf("%s\n", p+1);
// *p == p[0], K 출력
printf("%c\n", *p);
// p[3]의 *(값)을 출력, E 출력
printf("%c\n", *(p+3));
// *p == p[0], K에 + 4를한 아스키코드의 문자 값을 출력, K L(+1) M(+2) N(+3) O(+4), O 출력
printf("%c\n", *p+4);
return 0;
}
// KOREA
// OREA
// K
// E
// O
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 03 - 자바(기출문제_1) (0) | 2024.06.19 |
---|---|
Chapter 02 - C언어(예상문제) (2) | 2024.06.17 |
Chapter 02 - C언어(기출 문제_4) (1) | 2024.06.16 |
Chapter 02 - C언어(기출 문제_3) (1) | 2024.06.15 |
Chapter 02 - C언어(기출 문제_2) (1) | 2024.06.13 |