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
- @Aspect
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch1
- jpa 활용2 - api 개발 고급
- 2024 정보처리기사 시나공 필기
- 스프링 mvc1 - 서블릿
- 게시글 목록 api
- 스프링 고급 - 스프링 aop
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch7
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch3
- 스프링 입문(무료)
- 자바의 정석 기초편 ch8
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch12
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch14
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch13
- 스프링 db2 - 데이터 접근 기술
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 스프링 mvc
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch4
- 스프링 mvc2 - 타임리프
Archives
- Today
- Total
나구리의 개발공부기록
Chapter 02 - C언어(기출 문제_1) 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용
Chapter 02 - C언어(기출 문제_1)
소소한나구리 2024. 6. 3. 21:102024년도 수제비 실기책(6판) 내용 정리
1. C코드의 출력 결과 작성
#include <stdio.h>
int main() {
int i, j;
int temp;
int a[5] = {75, 95, 85, 100, 50};
for(i=0; i<4; i++) {
for(j=0; j<4-1; j++) {
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i=0; i<5; i++) {
printf("%d", a[i[);
}
return 0;
}
풀이
#include <stdio.h>
int main() {
int i, j;
int temp;
// 길이가 5인 int타입 배열 변수 a에 아래의 값들을 저장
int a[5] = {75, 95, 85, 100, 50};
// 2중 반복문, i의 값이 0부터 4미만(3)까지(4번) 반복
for(i=0; i<4; i++) {
// i의 반복문이 1번 실행 될 때마다 j의 값이 4-i 미만 까지 반복
for(j=0; j<4-i; j++) {
// 반복문이 돌 때 a[j]의 값이 a[j+1]의 값보다 크면 if문의 코드를 실행
if(a[j] > a[j+1]) { // a[j]의 값과 a[j+1]의 값의 위치를 바꾸는 코드가 실행됨
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
// 5번 출력하기위한 반복문, i의 값이 0부터 5미만(4)까지(5번) 반복
for(i=0; i<5; i++) {
printf("%d ", a[i]); // a배열의 i위치의 값을 10진 정수의 형태로 출력
// 50 75 85 95 100 출력
}
return 0;
}
i = 0 일때 j의 값이 4 - 0 미만(4)까지 반복 → a = {75, 85, 95, 50, 100}
- j = 0 : a[0] == 75, a[1] == 95 , if문 실행 X
- j = 1 : a[1] == 95, a[2] == 85, a[1] > a[2] 이므로 if문의 코드 실행 → a[1] == 85, a[2] == 95
- j = 2 : a[2] == 95, a[3] == 100, if문 실행 X
- j = 3 : a[3] == 100, a[4] == 50, a[3] > a[4] 이므로 if문의 코드 실행 → a[3] == 50, a[4] == 100
i = 1 일때 j의 값이 4 - 1 미만(3) 까지 반복 → a = {75, 85, 50, 95, 100}
- j = 0 : a[0] == 75, a[1] == 85, if문 실행 X
- j = 1 : a[1] == 85, a[2] == 95, if문 실행 X
- j = 2 : a[2] == 95, a[3] == 50, a[2] > a[3] 이므로 if문의 코드 실행 → a[2] == 50, a[3] == 95
i = 2일때 j의 값이 4 - 2 미만(2) 까지 반복 → a = {75, 50, 85, 95, 100}
- j = 0 : a[0] == 75, a[1] == 85, if문 실행 X
- j = 1 : a[1] == 85, a[2] == 50, a[1] > a[2] 이므로 if문의 코드 실행 → a[1] == 50, a[2] == 85
i = 3일때 j의 값이 4 - 3 미만(1) 까지 반복 → a = {50, 75, 85, 95, 100}
- j = 0 : a[0] == 75, a[1] == 50, a[0] > a[1] 이므로 if문의 코드 실행 → a[0] == 50, a[2] == 75
2. C코드의 출력 결과 작성
#include <stdio.h>
int main() {
int i = 0, c = 0;
while(i>10) {
i++;
c *= i;
}
printf("%d", c);
}
풀이
#include <stdio.h>
int main() {
int i = 0, c = 0; // int타입 변수 i, c에 값을 0으로 초기화하여 선언
while(i<10) { // i의 값이 10미만(9)이 될때까지 반복(10번)
i++; // i의 값을 1 증가
c *= i; // 증가한 i의 값과 c의 값을 곱하기 연산
}
printf("%d", c); // c의 값을 출력, 0 이 출력됨
}
while 문 실행
- while문의 조건에 부합하여 반복문이 실행 되어도 c의 값이 0이기 때문에 i의 값이 계속 증가 되어도 0 * i가 되어 c는 0이 됨
- 반복문이 종료 되어도 c의 값은 계속 0이 됨
3. C코드의 출력 결과 작성
#include <stdio.h>
int r1() { // int 타입 4를 반환하는 r1 함수
return 4;
}
int r10() { // 30 + 4(r1함수의 반환값)의 연산결과를 반환하는 r10 함수
return (30+r1());
}
int r100() { // 200 + 34(r10함수의 반환값)의 연산결과를 반환하는 r100 함수
return (200+r10());
}
int main() {
printf("%d\n", r100()); // r100의 연산결과를 10진 정수의 형태로 출력, 234
return 0;
}
4. 헝가리안 표기법(Hungarian Case)에 대해서 서술
- 식별자 표기 시 접두어에 자료형을 붙이는 표기법
- int형일 경우 n, char 형일 경우 c, 문자형일 경우 sz를 붙힘
그외 표기법
- 카멜 표기법 : 여러 단어가 이어지면 첫 단어 시작만 소문자, 각 단어의 첫글자는 대문자로 표기
- 파스칼 표기법 : 여러 단어가 이어지면 각 단어의 첫글자는 대문자로 지정하는 표기법
- 스네이크 표기법 : 여러 단어가 이어지면 단어 사이에 언더바를 넣는 표기법
5. C코드의 출력 결과 작성
#include <stdio.h>
int main() {
char *p = "KOREA";
printf("%s\n", p);
printf("%s\n", p+3);
printf("%c\n", *p);
printf("%c\n", *(p+3));
printf("%c\n", *p+2);
return 0;
}
풀이
#include <stdio.h>
int main() {
char *p = "KOREA"; // 문자 타입 포인터 변수 p에 문자열 "KOREA"가 저장된
// 별도의 메모리주소를 저장
printf("%s\n", p); // p == &p[0](p의 0번째 주소), KOREA가 저장된 주소의 값을
// 시작부터 널값까지 문자열로 출력, KOREA
printf("%s\n", p+3); // p+3 = &p[3], p의 3번인덱스 부터 널값까지 문자열로 출력, EA
printf("%c\n", *p); // *p == p[0], p[0]의 값을 문자 타입으로 출력, K
printf("%c\n", *(p+3)); // *(p+3) == p[3], p[3]의 값을 문자타입으로 출력, E
// *p+2 == p[0]+2, p[0]의 값은 K, K+2 이므로 K+2가 아스키 코드로 연산됨
// 연산된 값을 문자 타입으로 출력, M
printf("%c\n", *p+2);
return 0;
}
6. C코드의 출력 결과 작성
#include <stdio.h>
struct Soojebi {
char name[10];
int age;
};
int main() {
struct Soojebi s[] = {"Kim", 28, "Lee", 38, "Seo", 50, "Park", 35};
struct Soojebi *p;
p = s;
P++;
printf("%s\n", p->name);
printf("%d\n", p->age);
}
풀이
#include <stdio.h>
struct Soojebi { // 구조체 Soojebi 선언
char name[10]; // 구조체의 처음 변수는 길이가 10인 문자 배열
int age; // 두번째 변수는 int타입 변수
}; // 구조체 선언 종료는 ;으로
int main() {
// 구조체 초기화 - 순서대로 저장됨
// 구조체 s[0] = "kim", 28 이, s[1] = "Lee", 38 이런식으로 저장됨
struct Soojebi s[] = {"Kim", 28, "Lee", 38, "Seo", 50, "Park", 35};
struct Soojebi *p; // 구조체 포인터 변수 p를 선언
p = s; // 포인터 변수 p가 구조체 배열 s의 주소값(&s[0])을 가리킴
P++; // p의 값을 1 증가
// 구조체 포인터 p가 가르키는 name의 값을 문자열로 출력
printf("%s\n", p->name); // p가 1 증가 했으므로 p+1 == s[1]의 name의 값을 출력, LEE
// 구조체 포인터 p가 가르키는 age의 값을 정수로 출력
printf("%d\n", p->age); // 마찬가지로 p+1 == s[1]의 age의 값을 출력, 38
return 0;
}
7. C코드의 출력 결과 작성
#include <stdio.h>
int main() {
int ary[3] = {1};
int s = 0;
int i = 0;
ary[1] = *(ary+0)+2;
ary[2] = *ary+3;
for(i=0; i<3; i++) {
s = s + ary[i];
}
printf("%d",s);
return 0;
}
풀이
#include <stdio.h>
int main() {
int ary[3] = {1}; // ary[0] = 1
int s = 0;
int i = 0;
// *(ary+0) == ary[0], ary[0]는 1이므로 1 + 2가됨
ary[1] = *(ary+0)+2; // 1 + 2를 ary[1]에 저장
// *ary == ary[0], 1 + 3이 됨
ary[2] = *ary+3; // 1 + 3을 ary[2]에 저장
for(i=0; i<3; i++) { // 0 ~ 2 까지 3번 반복
s = s + ary[i]; // 1 + 3 + 4 = s, 누적저장
}
printf("%d",s); // 정수형으로 출력, 8
return 0;
}
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 02 - C언어(기출 문제_3) (1) | 2024.06.15 |
---|---|
Chapter 02 - C언어(기출 문제_2) (1) | 2024.06.13 |
Chapter 02 - C언어(포인터) (1) | 2024.05.27 |
Chapter 02 - C언어(함수) (0) | 2024.05.24 |
Chapter 02 - C언어(배열, 문자열, 구조체) (0) | 2024.05.21 |