옥수수와 식빵 그리고 코딩

12장 연습문제 - 문자열 본문

C/perpect C

12장 연습문제 - 문자열

옥식 2022. 1. 8. 17:03

01. 입력받은 문자를 아스키코드 값으로 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    char c;
    c = getchar();
    printf("%c의 아스키 코드값은 십진수로 %d입니다.", c, c);
    return 0;

}

 

02. 입력한 문자 반대로 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

void reverse(char str[])
{
    for (int i = 0, j = strlen(str)-1; i < j; i++, j--)
    {
        char temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
}
int main(void)
{
    char str[] = { "" };
    gets(str);
    printf("입력한 문자 반대로 출력: ");
    reverse(str);
    printf("%s", str);
    return 0;

}

뭔가 오류남............왜지...........

 

03. 입력받은 한 줄읜 문자열을 단어마다 역순으로 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

void reverse(char* poken)
{
    char rever = *poken;
    if (rever)
    {
        reverse(++poken);
        printf("%c", rever);
    }

}
int main(void)
{
    char line[100];
    char* delimiter = " ";
    gets(line);
    char* poken = strtok(line, delimiter);
    while (poken)
    {
        reverse(poken);
        putchar(' ');
        poken = strtok(NULL, delimiter);
    }
}

 

04. strcat() 없이 두 문자열 연결

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main(void)
{
    char s1[100] = "C 언어";
    char s2[] = "사랑합니다!";
    
    char* ptr1 = s1 , * ptr2 = s2;
    while(*ptr1++);
    ptr1--;
    
    while (*ptr2)
    {
        *ptr1++ = *ptr2++;
    }
    printf("%s\n", s1);
    return 0;
}

 

05. 입력받은 정수를 한글 문자열로 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int input;
    int thousand, hundred, ten, one;

    printf("네자리 정수 입력: ");
    scanf("%d", &input);

    thousand = input / 1000; //천의자리
    hundred = (input - thousand * 1000) / 100;
    ten = (input - thousand * 1000 - hundred * 100) / 10;
    one = (input - thousand * 1000 - hundred * 100 - ten * 10);

    int temp;
    for (int i = 0; i < 4; i++)
    {
        if (i == 0)
            temp = thousand;
        else if (i == 1)
            temp = hundred;
        else if (i == 2)
            temp = ten;
        else
            temp = one;

        switch (temp)
        {
        case 0:
            printf("영");
            break;
        case 1:
            printf("일");
            break;
        case 2:
            printf("이");
            break;
        case 3:
            printf("삼");
            break;
        case 4:
            printf("사");
            break;
        case 5:
            printf("오");
            break;
        case 6:
            printf("육");
            break;
        case 7:
            printf("칠");
            break;
        case 8:
            printf("팔");
            break;
        case 9:
            printf("구");
            break;
        }
        if (i == 0)
            printf("천");
        else if (i == 1)
            printf("백");
        else if (i == 2)
            printf("십");
    }
    return 0;
}

 

06.

 

 

07.

 

 

08.

 

 

 

Comments