[24년 1회]
#include <stdio.h>
int main() {
int v1 = 0, v2 = 35, v3 = 29;
if(v1 > v2 ? v2 : v1) {
v2 = v2 << 2;
} else {
v3 = v3 << 2;
}
printf("%d", v2+v3);
}
정답 : 151
[풀이]
if (v1 > v2 ? v2 : v1) → if(v1) → if(0) => else 실행
v3 = v3 << 2; → 왼쪽으로 2번 시프트 = 4배
29 * 4 = 116
v2 + v3 = 151
#include <stdio.h>
#include <string.h>
void reverse(char* str) {
int len = strlen(str);
char temp;
char* p1 = str;
char* p2 = str + len - 1;
while(p1<p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main(int argc, char* argv[]){
char str[100] = "ABCDEFGH";
reverse(str);
for(int i=1; i<len; i+=2){
printf("%c", str[i]);
}
printf("\n");
return 0;
}
정답 : GECA
[풀이]
reverse 함수 → 문자열 뒤집는 함수
str = "HGFEDCBA"
main에 for 문은 i가 2씩 늘어나면서 그 인덱스 문자를 출력
1,3,5,7 인덱스 출력
#include <stdio.h>
typedef struct {
int accNum;
double bal;
} BankAcc;
double sim_pow(double base, int year) {
int i;
double r = 1.0;
for(i=0; i<year; i++){
r = r*base;
}
return r;
}
void initAcc(BankAcc *acc, int x, double y) {
acc -> accNum = x;
acc -> bal = y;
}
void xxx(BankAcc *acc, double *en) {
if(*en > 0 && *en < acc -> bal) {
acc -> bal = acc -> bal-*en;
}
}
void yyy(BankAcc *acc) {
acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}
int main() {
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0);
double amount = 100.0;
xxx(&myAcc, &amount);
yyy(&myAcc);
printf("%d and %.2f", myAcc.accNum, myAcc.bal);
return 0;
}
정답 : 9981 and 2795.10
#include <stdio.h>
#include<ctype.h<
int main() {
char*p = "It is 8";
char result[100];
int i;
for(i=0; p[i]!='\0'; i++) {
if(isupper(p[i]))
result[i] = (p[i]-'A'+5)%25 + 'A';
else if(islower(p[i]))
result[i] = (p[i]-'a'+10)%26 + 'a';
else if(isdigit(p[i]))
result[i] = (p[i]-'0'+3)%10 + '0';
else if(!(isupper(p[i]) || islower(p[i]) || isdigit(p[i])))
result[i] = p[i];
}
result[i] = '\0';
printf("%s\n", result);
return 0;
}
정답 : Nd sc 1
문자를 아스키코드로 변환하여 풀이
[24년 2회]
#include <stdio.h>
int main() {
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int* parr[2] = {arr[1], arr[2]};
printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
return 0;
}
정답 : 21
[풀이]
2차원 배열
1 2 3
4 5 6
7 8 9
parr[2] → [4, 5, 6] , [7, 8, 9]
parr [1][1] = 8
parr [1] + 2 => parr포인터 주소 첫번째 인덱스에 2칸을 더 간 주소 = parr[1][2] = 9
**parr = 4
8 + 9 + 4 = 21
#include <stdio.h>
#include <string.h>
void sumFn(char* d, char* s) {
int sum = 0;
while (*s) {
*d = *s;
d++;
s++;
}
*d = '\0';
}
int main() {
char* str1 = "first";
char str2[50] = "teststring";
int result = 0;
sumFn(str2, str1);
for (int i=0; str2[i] != '\0'; i++) {
result += i;
}
printf("%d", result);
return 0;
}
정답 : 10
[풀이]
sumFn() 함수로 str2 를 "first"로 변경
main() 함수의 for문에서 first의 길이만큼 반복
0 + 1 + 2 + 3 + 4 = 10
#include <stdio.h>
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap(a, b);
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
default:
b += 3;
break;
}
print("%d", a-b);
}
정답 : -13
[풀이]
main함수에서 호출된 swap 함수가 적용되지 않기 때문에 a, b의 값은 그대로 유지 (포인터가 아니라 그냥 매개변수라서)
a = 11 b = 19
조건문에서 case 11을 실행하면 a = 11 b = 21, default 실행 a = 11 b = 24
11-24 = -13
#include <stdio.h>
struct node {
int n1;
struct node *n2;
};
int main() {
struct node a = {10, NULL};
struct node b = {20, NULL};
struct node c = {30, NULL};
struct node *head = &a;
a.n2 = &b;
b.n2 = &c;
printf("%d\n", head->n2->n1);
return 0;
}
정답 : 20
[풀이] - chatGPT
- 구조체 정의:
- struct node는 두 개의 멤버를 가지고 있습니다:
- int n1: 정수를 저장하는 필드.
- struct node *n2: 다음 노드를 가리키는 포인터로, 다음 노드의 주소를 저장합니다. 이는 연결 리스트 구조를 구현할 때 사용됩니다.
- struct node는 두 개의 멤버를 가지고 있습니다:
- 노드 선언 및 초기화:
- 세 개의 노드 a, b, c를 선언하고 각각 초기화합니다.
- n1 필드는 각각 10, 20, 30으로 초기화됩니다.
- n2 필드는 NULL로 초기화됩니다. 이는 아직 연결되지 않았음을 의미합니다.
- 노드 연결:
- 포인터 head는 첫 번째 노드 a의 주소를 저장하고 있습니다. 즉, head는 연결 리스트의 시작점입니다.
- a.n2 = &b;: 노드 a의 n2가 노드 b의 주소를 가리키도록 합니다. 즉, a 다음에 b가 연결됩니다.
- b.n2 = &c;: 노드 b의 n2가 노드 c의 주소를 가리키도록 합니다. 즉, b 다음에 c가 연결됩니다.
- 이렇게 하면 연결 리스트는 a -> b -> c의 형태로 구성됩니다.
- 값 출력:
- head는 현재 노드 a를 가리키고 있습니다.
- head->n2는 노드 b를 가리키게 됩니다. 즉, a.n2의 값, 즉 b의 주소를 따라갑니다.
- head->n2->n1은 노드 b의 n1 값인 20을 의미합니다.
- 따라서 20이 출력됩니다
'정보처리기사[실기]' 카테고리의 다른 글
[JAVA] 21년 기출 문제 풀이 (1회 ~ 4회) (0) | 2024.10.11 |
---|---|
[JAVA] 20년 기출 문제 풀이 (1회 ~ 4회) (0) | 2024.10.07 |
[C언어] 23년 기출 문제 풀이 (1회 ~ 4회) (0) | 2024.10.01 |
[C언어] 22년 기출 문제 풀이 (1회 ~ 4회) (0) | 2024.09.19 |
[6과목_프로그래밍 언어 활용] 아스키코드 ASCII (0) | 2024.09.12 |