C/명품 C언어 프로젝트(안기수 저)

명품 C언어 프로젝트 1장 연습문제

꾸준함. 2017. 5. 25. 00:09

[1번 문제]

/*

입력한 문자가 한글인지 영문이지를 구분하는 프로그램을 작성하시오

*/

#include <stdio.h>

#include <string.h>

 

int main(void)

{

        unsigned char word[100]; //앞에 unsigned 붙여야합니다!

        printf("문자를 입력해주세요:");

        scanf("%s", word);

 

        for (int i = 0; word[i] != NULL; i++) //문자열의 끝은 NULL입니다

        {

               if (word[i] >= 65 && word[i] <= 90 || word[i] >= 97 && word[i] < 128)

               {

                       printf("%d번째 문자 %c 영문입니다\n", i, word[i]);

               }

               else if (word[i] >= 176 && word[i] <= 200)

               {

                       printf("%d번째 문자 %c%c 한글입니다\n", i, word[i], word[i + 1]);

                       i++;

               }

               else

                       printf("%d번째 문자는 영문도 한글도 아닙니다\n", i);

        }

        return 0;

}

영문을 입력할 경우

한글을 입력할 경우

 

[2번 문제]

/*

[예제 1.2.8] 이용하여 다음의 그림고 ㅏ같은 형식으로 출력하는 프로그램을 작성하시오

*/

#include <stdio.h>

 

int main(void)

{

        unsigned char a1 = 0xa1;

        unsigned char a2 = 0xe1; //검은 사각형

        unsigned char a3 = 0xe2; // 삼각형

        unsigned char a4 = 0xdf; //검은 마름모

        unsigned char b1 = 0xa2;

        unsigned char b2 = 0xbe; //검은 하트

 

        //그림 a

        for (int i = 0; i < 4; i++)

        {

               if (i == 0 || i == 3)

               {

                       for (int j = 0; j < 5; j++)

                       {

                              printf("%c%c", a1, a2);

                       }

                       printf("\n");

               }

               else

               {

                       printf("%c%c", a1, a2);

                       for (int j = 0; j < 3; j++)

                       {

                              printf("  "); //확장코드이므로 두칸 띄워야 한다

                       }

                       printf("%c%c", a1, a2);

                       printf("\n");

               }

        }

        printf("\n\n");

 

        //그림 b

        for (int i = 0; i < 5; i++)

        {

               for (int j = 0; j <= i; j++)

               {

                       printf("%c%c", a1, a3);

               }

               printf("\n");

        }

        printf("\n\n");

 

        //그림 c

        for (int i = 0; i < 5; i++)

        {

               for (int j = 0; j < 5 - i; j++)

               {

                       printf("  ");

               }

               printf("%c%c", a1, a4);

               for (int j = 0; j < 2*i-1; j++)

               {

                       printf("  ");

               }

               if (i != 0)

               {

                       printf("%c%c", a1, a4);

               }

               printf("\n");

        }

        printf("\n\n");

 

        //그림 4

        for (int i = 0; i < 3; i++)

        {

               for (int j = 0; j < 10 - i; j++)

               {

                       printf(" ");

               }

               for (int j = 0; j <= i; j++)

               {

                       printf("%c%c", b1, b2);

               }

               printf("\n");

        }

        for (int i = 0; i < 2; i++)

        {

               for (int j = 0; j < 9 + i; j++)

               {

                       printf(" ");

               }

               for (int j = 0; j <= 1-i; j++)

               {

                       printf("%c%c", b1, b2);

               }

               printf("\n");

        }

 

        return 0;

}

[3번 문제]

/*

[예제 1.2.8] 이용하여 다음과 같이 가지 특수기호들을 번호 선택에 의해 출력하는 프로그램을 작성하시오

*/

#include <stdio.h>

 

int main(void)

{

        int sel; //선택용

        unsigned char a1 = 0xa1;

        unsigned char a2 = 0xda; //검은

        unsigned char a3 = 0xdf; //검은 마름모

        unsigned char a4 = 0xe1; //검은 사각형

        unsigned char a5 = 0xe3; //검은 삼각형

        unsigned char b1 = 0xa2;

        unsigned char b2 = 0xbc; //검은 스페이드

        unsigned char b3 = 0xbe; //검은 하트

        unsigned char b4 = 0xc0; //검은 클로버

 

        while (1)

        {

               printf("1. %c%c 2. %c%c 3. %c%c 4. %c%c 5. %c%c 6. %c%c 7. %c%c\n", a1, a2, a1, a3, a1, a4, a1, a5, b1, b2, b1, b3, b1, b4);

               printf("번호를 입력하시오>");

               scanf("%d", &sel);

               switch (sel)

               {

               case 1:

                       printf("%c%c\n", a1, a2);

                       break;

               case 2:

                       printf("%c%c\n", a1, a3);

                       break;

               case 3:

                       printf("%c%c\n", a1, a4);

                       break;

               case 4:

                       printf("%c%c\n", a1, a5);

                       break;

               case 5:

                       printf("%c%c\n", b1, b2);

                       break;

               case 6:

                       printf("%c%c\n", b1, b3);

                       break;

               case 7:

                       printf("%c%c\n", b1, b4);

                       break;

               }

        }

        return 0;

}


[4번 문제]


/*

[예제 1.2.1] 이용하여 한글 문자열을 입력받아 2byte 완성형 코드(16진수) 출력하는 프로그램을 작성하시오

*/

#include <stdio.h>

 

int main(void)

{

        char hangul[100];

        printf("한글로 문자열을 입력하시오");

        scanf("%s", hangul);

 

        for (int i = 0; hangul[i] != NULL; i++)

        {

               printf("%d번째 2byte 완성형 코드 %c%c %x%x이다\n", i, hangul[i], hangul[i + 1], hangul[i], hangul[i + 1]);

               i++; //2byte이므로

        }

        return 0;

}



개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] 명품 C언어 프로젝트 안기수 저

반응형