포인터 13

[실전C프로그래밍] 9장 포인터_13

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. N개(100 이하)의 정수를 입력받아 d[100] 배열에 저장하고, d[0] + (d[0] + d[1]) + ... + (d[0] + d[1] + ... + d[N - 1]) 수식의 값 출력(함수 사용) #include int add_to_k (int *p1, int *p2); int main() { int i, N, d[100], sum = 0; scanf("%d", &N); for (i = 0; i < N; i++) scanf("%d", &d[i]); for (i = 0; i < N; i++) sum += add..

[실전C프로그래밍] 9장 포인터_12

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. N개(100 이하)의 정수를 입력받아 배열에 저장하고, 첨자 S부터 첨자 E까지 요소의 총 합 출력 #include int arrsum (int *Start, int *End); int main() { int a[100] = {}, N, S, E, sum = 0; int *p = NULL; scanf("%d %d %d", &N, &S, &E); for (p = a; p < a + N; p++) scanf("%d", p); sum = arrsum(a + S, a + E); printf("%d", sum); return..

[실전C프로그래밍] 9장 포인터_11

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. N개(20 이하)의 정수를 두 번 입력받아 역방향으로 더하여 출력 #include void addArray(int In1[], int In2[], int Out[], int N); int main() { int x[20] = {}, y[20] = {}, z[20] = {}; int *p = NULL; scanf("%d", &N); for (p = x; p < x + N; p++) scanf("%d", p); for (p = y; p < y + N; p++) scanf("%d", p); addArray(x, y, z,..

[실전C프로그래밍] 9장 포인터_10

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 포인터를 사용하여 문자 6개를 복사하는 함수 만들고 출력 #include void strcopy(char a[], char b[]); int main() { char a[8] = {'\0'}, b[6] = {'\0'}, *p = NULL; for (p = a; p < a + 6; p++) scanf("%c", p); strcopy(a, b); for (p = b; p < b + 6; p++) printf("%c", *p); return 0; } void strcopy (char a[], char b[]) { char..

[실전C프로그래밍] 9장 포인터_9

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 두 정수를 입력받아, 최대 공약수와 최소 공배수를 포인터를 사용하여 전달 #include void gcdlcm (int a, int b, int *gcd, int *lcm); int main() { int a, b, g, l; scanf("%d %d", &a, &b); gcdlcm(a, b, &g, &l); printf("%d %d", g, l); return 0; } void gcdlcm (int a, int b, int *gcd, int *lcm) { int g = 0; for (g = 1; g

[실전C프로그래밍] 9장 포인터_8

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 크기가 3인 int 배열을 입력받아 중앙값을 출력 #include int *mid(int arr[]); int main() { int arr[3], *median = NULL, *p = NULL; for (p = arr; p < arr + 3; p++) scanf("%d", p); median = mid(arr); printf("%d\n", *median); return 0; } int *mid (int arr[]) { int *p = arr, *q = arr + 1; *r = arr + 2; if (*q

[실전C프로그래밍] 9장 포인터_7

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. N개(50 이하)의 정수를 입력받아 배열에 저장하고, 추가로 a와 b를 입력받아 두 위치의 값이 교환되는 배열 출력 #include void swap (int *p1, int *p2); int main() { int N, a, b; int arr, *p = NULL; scanf("%d", &N); for (p = arr; p < arr + N; p++) scanf("%d", p); scanf("%d %d", &a, &b); swap (&arr[a], &arr[b]); for (p = arr; p < arr + N; ..

[실전C프로그래밍] 9장 포인터_6

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 정수 3개를 입력받아 함수를 사용하여 화면에 출력 #include void input (int *p1, int *p2, int *p3); void output (int *p1, int *p2, int *p3); int main() { int x, y, z; input (&x, &y, &z); output (&x, &y, &z); return 0; } void input (int *p1, int *p2, int *p3) { scanf("%d %d %d", p1, p2, p3); } void output (int *p1..

[실전C프로그래밍] 9장 포인터_5

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 10개의 영문자를 입력받고 가장 빈도수가 높은 문자와 그 빈도수를 출력 #include int main() { char x[10] = {'\0'}; char ch, *p = NULL, *q = NULL; int cnt = 0, max = 0; for (p = x; p max) {..

[실전C프로그래밍] 9장 포인터_4

실전 C프로그래밍(나중채 외) 교재를 바탕으로 학습하고, 해결한 실습문제의 답을 기록합니다. (정답이 아니기에 오류 지적이나 피드백을 환영함) 저작권으로 인해 자세한 문제는 생략합니다. Q. 정수를 입력받아 배열에 저장하고, 각 정수들의 내림차순 순서를 또다른 배열에 저장하고 출력 #include int main() { int arr[5] = {}, rank[5] = {}; int *p = NULL, *q = NULL, *r = NULL; for (p = arr; p < arr + 5; p++) scanf("%d", p); for (p = arr, r = rank; p < arr + 5; p++, r++) { for (q = arr; q < arr + 5; q++) { if (*p < *q) (*r)++..