배열 및 문자열 처리 실습

실습 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;
}

태그: C언어 배열 문자열처리

7월 2일 02:06에 게시됨