-
JUNGOL 기초다지기 17 포인터보관함 2020. 1. 9. 20:52
프로그래밍에서 가장 기초적인 내용을 다루는 기초 다지기입니다.
이번 포스팅은 기초 다지기 중 열일곱 번째인 포인터 문제를 풀어보도록 하겠습니다.
기초 내용인 만큼 다른 설명없이 문제와 코드만 간단하게 작성하도록 하겠습니다.
619 : 포인터- 자가진단1
#include <iostream> using namespace std; int main() { int n; cin >> n; cout << &n << ' ' << n << endl; }
620 : 포인터- 자가진단2
#include <iostream> using namespace std; int main() { int *n = new int; cin >> *n; cout << (*n) / 10 << "..." << (*n) % 10 << endl; delete n; }
621 : 포인터- 자가진단3
#include <iostream> using namespace std; int main() { int* a = new int; int* b = new int; cin >> *a >> *b; int aVal = *a; int bVal = *b; cout << aVal << " + " << bVal << " = " << aVal + bVal << endl; cout << aVal << " - " << bVal << " = " << aVal - bVal << endl; cout << aVal << " * " << bVal << " = " << aVal * bVal << endl; cout << aVal << " / " << bVal << " = " << aVal / bVal << endl; delete a; delete b; }
622 : 포인터- 자가진단4
#include <iostream> using namespace std; int main() { int arr[5]; for (int i = 0; i < 5; ++i) { cin >> *(arr + i); } for (int i = 0; i < 5; i += 2) { cout << *(arr + i) << ' '; } cout << endl; }
623 : 포인터- 자가진단5
이 문제는 정확도 때문에 정답이 달라지는 문제가 있습니다. float 대신에 double 사용하셔야 합니다.
#include <iostream> using namespace std; int main() { double arr[5]; for (int i = 0; i < 5; ++i) { cin >> *(arr + i); } cout.setf(ios::fixed); cout.precision(1); for (int i = 0; i < 5; ++i) { cout << *(arr + i) << ' '; } cout << endl; }
624 : 포인터- 자가진단6
이 문제도 마찬가지로 double을 사용하셔야 합니다.
#include <iostream> using namespace std; int main() { int n; cin >> n; double* arr = new double[n]; for (int i = 0; i < n; ++i) { cin >> arr[i]; } cout.setf(ios::fixed); cout.precision(2); double hap = 0; double avg = 0; for (int i = 0; i < n; ++i) { cout << arr[i] << ' '; hap += arr[i]; } cout << endl; avg = hap / n; cout << "hap : " << hap << endl; cout << "avg : " << avg << endl; delete[] arr; }
625 : 포인터- 자가진단7
#include <iostream> using namespace std; int main() { int n; cin >> n; int* arr = new int[n]; for (int i = 0; i < n; ++i) { cin >> arr[i]; } for (int i = 0; i < n; ++i) { for (int j = 0; j < n - i - 1; ++j) { if (arr[j] < arr[j + 1]) swap(arr[j], arr[j + 1]); } } for (int i = 0; i < n; ++i) { cout << arr[i] << ' '; } cout << endl; delete[] arr; }
200 : 포인터- 형성평가1
현재 이 문제는 문제는 바뀌었는데 체점이 과거 문제 기준으로 되고 있어서 풀 수 없습니다. 이전 문제에 대한 답은 다음과 같습니다.
#pragma warning (disable:4996) #include <iostream> #include <string.h> #include <cmath> using namespace std; int cmp(char str1[], char str2[]) { int counter, len1, len2; len1 = strlen(str1); len2 = strlen(str2); counter = len1 > len2 ? len1 : len2; if (('a' <= str1[0] && str1[0] <= 'z' || 'A' <= str1[0] && str1[0] <= 'Z') && (str2[0] > 'Z' && 'a' > str2[0] || str2[0] > 'z' || 'A' > str2[0])) return -1; else if (('a' <= str2[0] && str2[0] <= 'z' || 'A' <= str2[0] && str2[0] <= 'Z') && (str1[0] > 'Z' && 'a' > str1[0] || str1[0] > 'z' || 'A' > str1[0])) return 1; for (int i = 0; i < counter; i++) { if (str1[i] < str2[i]) { return -1; } else if (str1[i] > str2[i]) { return 1; } } if (len1 < counter) return -1; else if (len2 < counter) return 1; else return 0; } void cpy(char dst[], char src[]){ int i; for (i = 0; i < strlen(src); i++) dst[i] = src[i]; dst[i] = '\0'; } int main(void) { char a; double b; printf("%#p %#p\n", &a, &b); return 0; }
201 : 포인터- 형성평가2
#include <iostream> using namespace std; int main() { int *n = new int; cin >> *n; for (int i = 0; i < *n; ++i) cout << '*'; cout << endl; delete n; }
202 : 포인터 - 형성평가3
#include <iostream> using namespace std; int main() { int* a{ new int }, *b{ new int }, *c{ new int }; cin >> *a >> *b; *c = *a - *b; cout << abs(*c) << endl; delete a; delete b; delete c; }
203 : 포인터 - 형성평가4
#include <iostream> using namespace std; int main() { int* arr{ new int[10] }; for (int i = 0; i < 10; ++i) { cin >> arr[i]; } int evenCount{ 0 }; int oddCount{ 0 }; for (int i = 0; i < 10; ++i) { if (arr[i] % 2 == 0) evenCount++; else oddCount++; } cout << "odd : " << oddCount << endl; cout << "even : " << evenCount << endl; delete[] arr; }
204 : 포인터 - 형성평가5
#include <iostream> using namespace std; int main() { int n; cin >> n; int* arr{ new int[n] }; for (int i = 0; i < n; ++i) { cin >> arr[i]; } int max = 0; int min = 999; for (int i = 0; i < n; ++i) { if (max < arr[i]) max = arr[i]; if (min > arr[i]) min = arr[i]; } cout << "max : " << max << endl; cout << "min : " << min << endl; delete[] arr; }
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=10h0