프로그래밍 언어/C언어

C프로그래밍 문자열 함수 연습문제

컨설턴트X 2023. 5. 3. 13:20
728x90
반응형

위 문제에서 상용한 strlen 함수는 문자형 배열의 길이를 리턴하는 함수이다.

strlen 함수를 직접 구현하고 구현한 함수를 이용하여 사용자가 입력한  문자열의 길이를 구하시오.

(문자‘\0’를 사용하여 배열 내 값이 저장되지 않은 인덱스를 확인할 수있다)

#include <stdio.h>

int my_strlen(char str[]) {
    int len = 0;
    while (str[len] != '\0') {
        len++;
    }
    return len;
}

int main() {
    char str[100];  // 입력 받을 문자열 배열
    scanf("%s", str);
    int len = my_strlen(str);
    printf("%d\n", len);
    return 0;
}

위 코드에서 my_strlen 함수는 입력받은 문자열 str의 길이를 구하는 함수입니다. while문을 사용하여 문자열의 끝을 나타내는 널 문자(\0)를 만날 때까지 반복하며, 이때까지 카운트한 문자의 개수를 반환합니다.
main 함수에서는 scanf 함수를 이용하여 문자열을 입력받고, my_strlen 함수를 호출하여 문자열의 길이를 구합니다. 마지막으로 printf 함수를 이용하여 결과를 출력합니다.
예시 입력 1의 경우 "abcdefgggh"를 입력하면 결과로 10이 출력됩니다. 예시 입력 2의 경우 "abcde"를 입력하면 결과로 5가 출력됩니다.

사용자로부터 임의의 정수 값 2개를 입력 받고 첫 번째 값을 두 번째 값만큼 제곱한 결과를 리턴하는 함수를 작성하시오.

또, 입력 받은 값이 음수인 경우 양수로 변환하시오.

#include <stdio.h>

// x를 y만큼 제곱한 값을 반환하는 함수
int power(int x, int y) {
    // 입력된 값이 음수이면 양수로 변환
    if (x < 0) {
        x = -x;
    }
    int result = 1;
    for (int i = 0; i < y; i++) {
        result *= x;
    }
    return result;
}

int main() {
    int num1, num2;
    scanf("%d %d", &num1, &num2);
    int result = power(num1, num2);
    printf("%d\n",result);
    return 0;
}

위 코드에서 power 함수는 첫 번째 인자로 받은 정수 x를 두 번째 인자로 받은 정수 y만큼 제곱한 값을 반환하는 함수입니다. 먼저 if문을 사용하여 입력된 값이 음수인 경우 양수로 변환합니다. 그리고 for문을 사용하여 y번 만큼 x 값을 곱해주면서 결과를 계산합니다.
main 함수에서는 scanf 함수를 이용하여 정수 2개를 입력받고, power 함수를 호출하여 첫 번째 값을 두 번째 값만큼 제곱한 결과를 계산합니다. 마지막으로 printf 함수를 이용하여 결과를 출력합니다.
예시 입력 1의 경우 "4 3"을 입력하면 결과로 64가 출력됩니다. 예시 입력 2의 경우 "2 10"을 입력하면 결과로 1024가 출력됩니다. 예시 입력 3의 경우 "3 3"을 입력하면 결과로 27이 출력됩니다.

점수를 입력하면 점수를 바탕으로 학점을 판단하여 리턴 하는 함수를 작성하시오.

-1을 입력하면 프로그램을 종료하도록 한다.

(함수 내에서 학점 출력을 하지 않고 리턴 값으로 char 형식의 값을 반환하여아한다.)

#include <stdio.h>

char getGrade(int score) {
    if (score >= 90) {
        return 'A';
    } else if (score >= 80) {
        return 'B';
    } else if (score >= 70) {
        return 'C';
    } else if (score >= 60) {
        return 'D';
    } else {
        return 'F';
    }
}

int main() {
    int score;
    do {
        scanf("%d", &score);
        if (score != -1) {
            char grade = getGrade(score);
            printf("당신의 학점은 %c 입니다.\n", grade);
        }
    } while (score != -1);
    return 0;
}

위 코드는 입력한 점수를 getGrade() 함수를 호출하여 해당 점수에 맞는 학점을 반환하고, 이를 main() 함수에서 출력하는 예제입니다. getGrade() 함수에서는 입력받은 score 값에 따라 학점을 반환합니다. main() 함수에서는 -1이 입력될 때까지 반복문을 수행하며, 입력받은 점수를 getGrade() 함수에 인자로 전달하여 해당 학점을 출력합니다.

 
 

사용자로부터 임의의 양의 정수 n을 입력 받고, 1부터 입력 받은 수 까지의 총합을 구하여

리턴하는 함수를 재귀함수 형태로 작성하시오

#include <stdio.h>

int recursiveSum(int n) {
    if (n == 1) {
        return 1;
    } else {
        return n + recursiveSum(n-1);
    }
}

int main() {
    int n;
    scanf("%d", &n);
    printf("%d", recursiveSum(n));
    return 0;
}

 
위 코드에서 recursiveSum() 함수가 재귀적으로 호출되면서 1부터 n까지의 총합을 계산합니다. 함수 내부에서는 n이 1일 경우 1을 반환하고, 그 외의 경우에는 nrecursiveSum(n-1)을 더한 값을 반환합니다. 이렇게 재귀적으로 호출되면서 총합을 계산하는 방식을 "재귀적 접근"이라고 합니다.
 

728x90
반응형