보관함
JUNGOL 기초다지기 17 포인터
niamdank
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
JUNGOL | 문제은행 1 페이지
경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP
www.jungol.co.kr