6주차 과제 - jaeyong-choi1234/progamming-team-1 GitHub Wiki
Pointer 사용자정의함수 10개
- Swap 두 정수 위치 바꾸기
#include<stdio.h>
void Swap(int* x, int* y);
int main(void)
{
int x, y;
printf("x : ");
scanf_s("%d", &x);
printf("y : ");
scanf_s("%d", &y);
printf("x : %d | y : %d\n", x, y);
Swap(&x, &y);
printf("x : %d | y : %d\n", x, y);
return 0;
}
void Swap(int* x, int* y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}
- PlusOne 정수 하나 입력 받아서 1 더하기
#include<stdio.h>
void PlusOne(int* x);
int main(void)
{
int x;
printf("x : ");
scanf_s("%d", &x);
PlusOne(&x);
printf("x : %d\n", x);
return 0;
}
void PlusOne(int* x)
{
(*x)++;
}
- Sum 정수 누적합
#include<stdio.h>
void Sum(int* result);
int main(void)
{
int result = 0;
Sum(&result);
printf("누적 합 : %d", result);
return 0;
}
void Sum(int* result)
{
int addNumber, n;
printf("시작값 : ");
scanf_s("%d", result);
printf("더할 값 : ");
scanf_s("%d", &addNumber);
printf("반복해서 더할 횟수 : ");
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
*result += addNumber;
}
4.입력 받은 숫자 2배
#include <stdio.h>
void doubleNumber(int *num)
{
*num = *num * 2;
}
int main() {
int a;
printf("숫자를 입력하세요: ");
scanf("%d", &a);
doubleNumber(&a);
printf("두 배로 만든 숫자: %d\n", a);
return 0;
}
5.농구 점수 계산
#include <stdio.h>
void calculateScore(int freeThrows, int twoPointers, int threePointers, int *total)
{
*total = freeThrows * 1 + twoPointers * 2 + threePointers * 3;
}
int main()
{
int free, two, three;
int totalScore;
printf("자유투(1점) 개수 입력: ");
scanf("%d", &free);
printf("2점슛 개수 입력: ");
scanf("%d", &two);
printf("3점슛 개수 입력: ");
scanf("%d", &three);
calculateScore(free, two, three, &totalScore);
printf("\n총 점수는 %d점 입니다!\n", totalScore);
return 0;
}
6.다스 계산기
#include <stdio.h>
void convertToDozen(int pencils, int *dozen)
{
*dozen = pencils / 12;
}
int main()
{
int pencils, dozen;
printf("연필의 개수를 입력하세요: ");
scanf("%d", &pencils);
convertToDozen(pencils, &dozen);
printf("연필 %d자루는 %d 다스입니다.\n", pencils, dozen);
return 0;
}
7.최댓값 찾기
#include <stdio.h>
int findMax(int* arr, int size) {
if (arr == NULL || size <= 0) return -1;
int max = *arr;
for (int i = 1; i < size; i++) {
if (*(arr + i) > max) {
max = *(arr + i);
}
}
return max;
}
int main() {
int data[] = {7, 3, 15, 2, 9};
int size = sizeof(data) / sizeof(data[0]);
int max = findMax(data, size);
printf("최댓값: %d\n", max);
return 0;
}
- 최솟값 찾기
#include <stdio.h>
int findMin(int* arr, int size) {
if (arr == NULL || size <= 0) return -1;
int min = *arr;
for (int i = 1; i < size; i++) {
if (*(arr + i) < min) {
min = *(arr + i);
}
}
return min;
}
int main() {
int data[] = { 7, 3, 15, 2, 9 };
int size = sizeof(data) / sizeof(data[0]);
int min = findMin(data, size);
printf("최솟값: %d\n", min);
return 0;
}
9.오름 차순정렬
#include <stdio.h>
void sortAscending(int* arr, int size) {
if (arr == NULL || size <= 1) return;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
int* a = arr + j;
int* b = arr + j + 1;
if (*a > *b) {
int temp = *a;
*a = *b;
*b = temp;
}
}
}
}
int main() {
int data[] = { 5, 1, 4, 2, 8 };
int size = sizeof(data) / sizeof(data[0]);
sortAscending(data, size);
printf("정렬 결과: ");
for (int i = 0; i < size; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}
10.내림차순정렬
#include <stdio.h>
void sortDescending(int* arr, int size) {
if (arr == NULL || size <= 1) return;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
int* a = arr + j;
int* b = arr + j + 1;
if (*a < *b) {
int temp = *a;
*a = *b;
*b = temp;
}
}
}
}
int main() {
int data[] = { 3, 9, 1, 7, 2 };
int size = sizeof(data) / sizeof(data[0]);
sortDescending(data, size);
printf("정렬 결과: ");
for (int i = 0; i < size; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}