실습 1: 배열에서 최솟값과 최댓값 찾기
다음은 주어진 배열에서 최솟값과 최댓값을 찾는 코드입니다.
코드 보기
#include <stdio.h>
#define SIZE 5
void getData(int arr[], int size);
void displayData(int arr[], int size);
void findMinMax(int arr[], int size, int *min, int *max);
int main() {
int data[SIZE];
int minValue, maxValue;
printf("데이터 %d개 입력:\n", SIZE);
getData(data, SIZE);
printf("입력된 데이터:\n");
displayData(data, SIZE);
findMinMax(data, SIZE, &minValue, &maxValue);
printf("최솟값 = %d, 최댓값 = %d\n", minValue, maxValue);
return 0;
}
void getData(int arr[], int size) {
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
}
void displayData(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void findMinMax(int arr[], int size, int *min, int *max) {
*min = *max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < *min) *min = arr[i];
if (arr[i] > *max) *max = arr[i];
}
}
실습 2: 최댓값의 포인터 반환
이번 실습에서는 배열에서 최댓값을 가리키는 포인터를 반환하는 함수를 구현합니다.
코드 보기
#include <stdio.h>
#define SIZE 5
void getData(int arr[], int size);
void displayData(int arr[], int size);
int* getMaxPointer(int arr[], int size);
int main() {
int numbers[SIZE];
printf("데이터 %d개 입력:\n", SIZE);
getData(numbers, SIZE);
printf("입력된 데이터:\n");
displayData(numbers, SIZE);
int* maxPtr = getMaxPointer(numbers, SIZE);
printf("최댓값 = %d\n", *maxPtr);
return 0;
}
void getData(int arr[], int size) {
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
}
void displayData(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int* getMaxPointer(int arr[], int size) {
int maxIndex = 0;
for (int i = 1; i < size; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
return &arr[maxIndex];
}
실습 3: 문자열 교환
두 개의 문자열을 서로 바꾸는 프로그램입니다.
코드 보기
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main() {
char str1[SIZE] = "학습은 즐거워요";
char str2[SIZE] = "학습은 지루해요";
char temp[SIZE];
printf("str1 크기 vs. 길이:\n");
printf("str1 크기 = %d\n", sizeof(str1));
printf("str1 길이 = %d\n", strlen(str1));
printf("\n교환 전:\n");
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
printf("\n교환 후:\n");
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
return 0;
}
실습 4: 문자열 치환
특정 문자를 다른 문자로 치환하는 함수를 작성했습니다.
코드 보기
#include <stdio.h>
#define SIZE 80
void replaceChar(char *str, char oldChar, char newChar);
int main() {
char text[SIZE] = "프로그래밍은 어렵거나 아닐 수 있습니다.";
printf("원본 텍스트:\n");
printf("%s\n", text);
replaceChar(text, '아', '*');
printf("치환 후 텍스트:\n");
printf("%s\n", text);
return 0;
}
void replaceChar(char *str, char oldChar, char newChar) {
while (*str) {
if (*str == oldChar) *str = newChar;
str++;
}
}
실습 5: 문자열 잘라내기
특정 문자 이후의 모든 문자를 제거하는 함수를 구현했습니다.
코드 보기
#include <stdio.h>
#define SIZE 80
char* truncateString(char *str, char target);
int main() {
char input[SIZE];
char targetChar;
printf("문자열 입력: ");
fgets(input, SIZE, stdin);
input[strcspn(input, "\n")] = '\0';
printf("제거할 문자 입력: ");
scanf(" %c", &targetChar);
truncateString(input, targetChar);
printf("잘라낸 결과: %s\n", input);
return 0;
}
char* truncateString(char *str, char target) {
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == target) {
str[i] = '\0';
break;
}
}
return str;
}