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
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch14
- jpa 활용2 - api 개발 고급
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch1
- 스프링 mvc1 - 스프링 mvc
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch6
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch11
- 스프링 db2 - 데이터 접근 기술
- 2024 정보처리기사 수제비 실기
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch4
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch7
- 게시글 목록 api
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch13
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch3
- 스프링 입문(무료)
- @Aspect
- 스프링 mvc2 - 타임리프
Archives
- Today
- Total
나구리의 개발공부기록
Chapter 02 - C언어(기출 문제_4) 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용
Chapter 02 - C언어(기출 문제_4)
소소한나구리 2024. 6. 16. 14:512024년도 수제비 정보처리기사 실기책(6판) 내용 정리
21. 이진수를 십진수로 변환하는 C코드의 Ⓐ,Ⓑ에 적합한 코드를 작성
문제 및 풀이
#include <stdio.h>
int main() {
int input = 101110;
int di = 1;
int sum = 0;
while (1){ // 1 == true
if (input==0) break; // false 면 break;
else { // 반복문이 진행되면 코드를 실행
// input의 값을 2진수라고 보고 각 자리의 1의 값을 더하는 코드
sum = sum + (input Ⓐ Ⓑ) * di; // input % 10 -> 연산 결과가 input의 맨 마지막 자리가 됨
di = di * 2;
input = input / 10;
}
}
printf("%d", sum);
return 0;
}
// Ⓐ : %
// Ⓑ : 10
// &,2 or &,1도 됨
22. 다음 프로그램에서 43215로 출력되도록 밑줄에 들어갈 코드를 보기에서 골라 작성
보기 : n, i, +, %, 1, 5, [, ], (, )
실행결과 : 43215
문제 및 풀이
#include <stdio.h>
int main() {
int n[5] = {5, 4, 3, 2, 1};
int i;
// n의 값을 0부터 순서대로 하나씩 꺼내는 반복문
for(i=0; i<5; i++){
// n[(i+1)%5]
// 1%5==1, 2%5==2, 3%5==3, 4%5==4, 5%5==0,
// 연산결과의 나머지를 n의 인덱스 값으로 지정
printf("%d", _____________);
// 출력결과가 43215 -> 5가 제일 뒤로 가야함,
}
return 0;
}
// n[(i+1)%5]
23. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
int main() {
int n[3] = {73, 95, 82};
int i, sum = 0;
for (i=0; i<3; i++){ // 0 ~ 2까지 반복
sum += n[i]; // sum의 변수에 꺼낸 값을 합산
}
// 73+95+82 = 250
switch(sum/30){ // 250 / 30 연산결과의 case로 이동, case 8로 이동
case 10:
case 9: printf("A");
case 8: printf("B"); // B 출력, break 가 없어서 다음 case문 실행
case 7: // 아무것도없음 다음 실행
case 6: printf("C"); // C 출력, 마지막 케이스문,
default: printf("D"); // case문에 브레이크문이 없었으므로 실행, D출력
}
return 0;
}
// BCD 출력
24. C코드의 출력 결과 작성
문제 및 풀이
#include <stdio.h>
#define MAX_SIZE 10 // 상수값 정의
int isWhat[MAX_SIZE]; // MAX_SIZE의 값을 길이로하는 int 배열 선언
int point = -1; // point라는 변수에 -1값 저장
int isEmpty(){ // isEmpty 함수 정의
// point의 값이 -1이면 1을 반환하는 함수
if(point == -1) return 1;
return 0;
}
int isFull(){ // isFull 함수 정의
// point의 값이 10이면 1을 반환하는 함수 정의
if(point==10) return 1;
return 0;
}
void into(int num){ // into 함수 정의
// point의 값이 10보다크거나 같으면 Full 이라는 문자열 출력
if(point>=10) printf("Full");
// 매개변수로 입력된 num의 값을 int타입 배열 point+1연산 후 isWhat의 인덱스 위치에 저장
isWhat[++point] = num;
}
int take(){ // take 함수 정의
// isEmpty함수의 호출 결과가 1이면 Empty라는 문자열 출력
if(isEmpty()==1) printf("Empty");
// int 타입 배열 isWhat의 point의 인덱스 위치의 값을 반환하고 point의 값을 1감소
return isWhat[point--];
}
int main(){
into(5); // into 함수를 호출, 아규먼트값 5,
// point는 0, isWhat[0]에 5가 저장됨, isWhat[] = {5}
into(2); // into 함수를 호출, 아큐먼트값 2,
// point는 1, isWhat[1]에 2가 저장됨, isWhat[] = {5,2}
while(!isEmpty()){ // isEmpty()호출 결과가 1이 아니면 반복 (0 or false이면 반복)
printf("%d", take()); // take함수의 결과를 출력
// 2를 출력, point는 0이 됨, isWhat[] = {5}
into(4); // into 함수 호출, 아규먼트 값 4
// point는 1, isWhat[1]에 4가 저장됨, isWhat[] = {5,4}
into(1); // into 함수 호출, 아규먼트 값 1
// point는 2, isWhat[2]에 1이 저장됨, isWhat[] = {5,4,1}
printf("%d", take()); // take함수의 결과를 출력
// 1을 출력, point는 1이됨, isWhat[] = {5,4}
into(3); // into 함수 호출, 아규먼트 값3
// point는 2, isWhat[2]에 3이 저장됨, isWhat[] = {5,4,3}
printf("%d", take()); // take함수의 결과를 출력
// 3을 출력, point는 1이됨, isWhat[] = {5,4}
printf("%d". take()); // take함수의 결과를 출력
// 4를 출력, point는 0이됨, isWhat[] = {5}
into(6); // into 함수 호출, 아규먼트 값 6
// point는 1이되고, isWhat[1]에 6이 저장됨, isWhat[] = {5,6}
printf("%d", take()); // take함수의 결과를 출력
// 6을 출력, point는 0이됨, isWhat[] = {5}
printf("%d", take()); // take함수의 결과를 출력
// 5를 출력, point는 -1이됨, isWhat[] = {}
}
return 0;
}
//213465
25. C프로그램에 홍길동, 김철수, 박영희 순서로 입력시 출력 결과 작성
문제 및 풀이
#include <stdio.h>
char n[30];
char *soojebi(){ // 포인터 함수 soojebi 정의
gets(n); // 문자열을 입력받아 n에 저장, 선언된 n의 길이보다 긴 문장을 받으면 스택오버플로우 에러가 발생됨
return n;
}
int main() {
char *p1 = soojebi(); // 포인터 변수 p1에 soojebi()함수 반환값의 주소를 저장(배열 n의 주소)
// "홍길동" 문자열이 담긴 주소가 저장됨
char *p2 = soojebi(); // 포인터 변수 p2에 배열 n의 주소를 저장
// "김철수" 문자열이 담긴 주소가 저장됨 -> p1도 동일한 주소를 가르킴
char *p3 = soojebi(); // 포인터 변수 p3에 배열 n의 주소를 저장
// "박영희" 문자열이 담긴 주소가 저장됨 -> p1,p2도 동일한 주소를 가르킴
// p1, p2, p3이 같은 문자열 주소를 가지고 있음 -> 셋중에 하나를 수정하면 원래의 문자열이 수정됨
printf("%s\n", p1); // p1주소가 가르키는 값을 출력 -> 박영희 출력
printf("%s\n", p2); // p2주소가 가르키는 값을 출력 -> 박영희 출력
printf("%s\n", p3); // p3주소가 가르키는 값을 출력 -> 박영희 출력
return 0;
}
// 출력결과
// 박영희
// 박영희
// 박영희
26. 잔돈의 개수를 구하는 프로그램, a,b,c,d는 각각 1000,500,100,10원의 개수, ①,②,③,④에 들어갈 코드를 보기에 있는 문자, 숫자, 기호를 이용해 순서대로 작성 (코드의 길이를 최소화해서 구현해야 함)
보기 : m, i, d, %, /, 0~9, (, )
실행결과
- 1000원 : 4개
- 500원 : 1개
- 100원 : 1개
- 10원 : 2개
문제 및 풀이
#include <sidio.h>
int main(){
int m = 4620;
int a, b, d, d;
// m을 1000으로 나눈 몫은 1000의 개수를 뜻함
a = ①; // m / 1000, a = 4
// 한줄로 표현해야 하기에 추가적인 변수를 선언할 수 없으므로 m의 값을 이용
// m을 1000으로 나눈 나머지의값은 천의 자리가 제외된 나머지가 반환됨,
// 해당 값에 구하고자하는 개수의 값을 / 연산하면 몫은 그 개수가 됨
b = ②; // (m % 1000) / 500, b = 1
// 나머지는 동일한 연산
c = ③; // (m % 500) / 100, c = 1
d = ④; // (m % 100) / 10, d = 2
printf("1000원 : %d개\n", a);
printf("500원 : %d개\n", b);
printf("100원 : %d개\n", c);
printf("10원 : %d개\n", d);
return 0;
}
// ① : m / 1000
// ② : (m % 1000) / 500
// ③ : (m % 500) / 100
// ④ : (m % 100) / 10
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 02 - C언어(예상문제) (2) | 2024.06.17 |
---|---|
Chapter 02 - C언어(기출 문제_5) (1) | 2024.06.16 |
Chapter 02 - C언어(기출 문제_3) (1) | 2024.06.15 |
Chapter 02 - C언어(기출 문제_2) (1) | 2024.06.13 |
Chapter 02 - C언어(기출 문제_1) (1) | 2024.06.03 |