『 1~100을 이용한 알고리즘의 이해 2: C언어편 』
저자: 김득수
사용 프로그램: Visual Studio 2019
※ 본 게시글에 작성된 문제는 책 본문과 일치하지 않는 부분이 존재하며, 풀이 또한 정확하지 않습니다.
7-1. 다음 프로그램의 출력 결과는 무엇인가?
#include <stdio.h>
#include <string.h>
void main() {
int a1 = 1234;
int a2 = 1.23;
int L, inta;
char str[20] = "A 한글123";
L = strlen(str);
printf("%d \n", L);
inta = atoi(str + 6) + 1;
printf("%d \n", inta);
L = sizeof(a1);
printf("%d \n", L);
L = sizeof(a2);
printf("%d \n", L);
strcat(str, "bcd");
printf("%s \n", str);
}
문제풀이
#include <stdio.h>
#include <string.h>
// atoi 오류 발생 시 추가
#include <stdlib.h>
void main() {
int a1 = 1234;
int a2 = 1.23;
int L, inta;
char str[20] = "A 한글123";
L = strlen(str);
printf("%d \n", L);
inta = atoi(str + 6) + 1;
printf("%d \n", inta);
L = sizeof(a1);
printf("%d \n", L);
L = sizeof(a2);
printf("%d \n", L);
// 오류 발생시 strcat_s 사용
strcat(str, "bcd");
printf("%s \n", str);
}
실행결과
9
124
4
4
A 한글123bcd
7-2.
입력된 문자 "ABCDEFG"를 역순으로 출력하는 순서도를 완성하고 프로그램의 출력 결과는 무엇인가?
문제풀이
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
// 입력된 문자가 char가 아닌 int로 저장되어있다는 전제로 형변환 연습
int inta[8] = { 65, 66, 67, 68, 69, 70, 71 };
char strb[8] = "";
int L, i;
char stra[8];
for (i = 0; i < 8; i++) {
stra[i] = (char)inta[i];
}
L = strlen(stra);
for (i = L - 1; i >= 0; i--) {
strb[(L - 1) - i] = stra[i];
}
printf("%s", strb);
}
int to char
1. 암시적인 형변환
int i = 97;
char ch = i;
2. 명시적인 형변환
int i = 97;
char ch = (char)i;
3. static_cast<char>
int i = 97;
char ch = static_cast<char>(i);
* 0 ~ 9 사이의 정수
int a = 1;
char ch = a + '0';
* 숫자 '0'의 ASCI 값 : 48
실행결과
GFEDCBA
7-3.
입력된 문자열 "ABCDEabcde"에서 "C"이면 3, ab이면 "67"로 변경하는 순서도를 완성하고,
프로그램의 출력 결과는 무엇인가?
문제풀이
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main() {
char stra[11] = "ABCDEabcde";
char strb[11] = "", strc[11] = "";
int L, i;
// 오류 발생 시 strcpy_s 사용
strcpy(strb, stra);
strcpy(strc, stra);
L = strlen(stra);
for (i = 0; i<= L - 1; i++) {
if (stra[i] == 'c')
strb[i] = '3';
}
for (i = 0; i<= L - 2; i++) {
if (stra[i] == 'a' && stra[i + 1] == 'b')
strc[i] = '6', strc[i + 1] = '7';
}
printf("%s \n%s \n%s", stra, strb, strc);
}
실행결과
ABCDEabcde
ABCDEab3de
ABCDE67cde
7-4.
입력된 문자열 "12345*ABCED"에서 "*"를 중심으로 "ABCED"는 문자열 strb에 입력하고,
inta에는 "12345"를 수치화하여 +1 하여 입력하는 순서도를 완성하고, 프로그램의 출력 결과는 무엇인가?
문제풀이
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char stra[12] = "12345*ABCDE";
char strb[6] = "";
int inta, L, m, i;
L = strlen(stra);
for (i = 0; i <= L - 1; i++) {
if (stra[i] == '*')
break;
}
m = i;
for (i = m + 1; i <= L - 1; i++) {
strb[i - m - 1] = stra[i];
}
inta = atoi(stra) + 1; // atoi 는 문자부분을 인식X
printf("stra : %s \n", stra);
printf("strb : %s \n", strb);
printf("inta : %d", inta);
}
실행결과
stra : 12345*ABCDE
strb : ABCDE
inta : 12346
'Tycoon > 알고리즘의 이해(2): C언어편 (完)' 카테고리의 다른 글
[알고리즘의 이해(2): C언어편] 연습문제 9장 (0) | 2025.01.03 |
---|---|
[알고리즘의 이해(2): C언어편] 연습문제 8장 (0) | 2025.01.02 |
[알고리즘의 이해(2): C언어편] 연습문제 6장 (0) | 2025.01.02 |
[알고리즘의 이해(2): C언어편] 연습문제 5장 (0) | 2025.01.02 |
[알고리즘의 이해(2): C언어편] 연습문제 4장 (0) | 2025.01.02 |