C Primer Plus(第六版)15.9 编程练习 第6题

//

//  main.c

//  15.9-6

//

//  Created by cjm on 2024/2/5.

//

#include

#include

#include

struct font_style{

    unsigned int font_ID : 8;

    unsigned int font_size : 7;

    unsigned int alignment : 2;//如果这里是int类型,因位有一位是正负号,2位便表示不了2.

    _Bool bold : 1;

    _Bool italics : 1;

    _Bool underline : 1;

};

void show_menu(struct font_style font_n);

int main()

{

    char ch;

    struct font_style font_n={1,12,1,0,0,0};

    int id,size;

    char alig;

    show_menu(font_n);

    while(scanf("%c",&ch)!=EOF&&ch!='q')

    {

        while(getchar()!='\n')

            continue;

        switch(ch)

        {

            case 'f':

                puts("Enter font ID(0-255)");

                scanf("%d", &id);

                font_n.font_ID=id;

                show_menu(font_n);

                break;

            case 's':puts("Enter font size(0-127)");

                scanf("%d",&size);

                font_n.font_size=size;

                show_menu(font_n);

                break;

            case 'a':

                puts("Select alignment:\nl) left\tc)center\tr)right\n");

                scanf("%c",&alig);

                while(getchar()!='\n')

                    continue;

                if(alig=='l')

                    font_n.alignment=1;

                else if(alig=='r')

                    font_n.alignment = 2;

                else if(alig=='c')

                    font_n.alignment=0;

                show_menu(font_n);

                break;

            case 'b':

                font_n.bold=~(font_n.bold);

                show_menu(font_n);

                break;

            case 'i':

                font_n.italics=~(font_n.italics);

                show_menu(font_n);

                break;

            case 'u':

                font_n.underline=~(font_n.underline);

                show_menu(font_n);

                break;

            default:;break;

        }

        while(getchar()!='\n')

            continue;

    }

    puts("Bye!\n");

    return 0;

}

void show_menu(struct font_style font_n)

{

    char ali[7];

    if(font_n.alignment==0)

        strcpy(ali,"center");

    else if (font_n.alignment==1)

        strcpy(ali,"left");

    else if(font_n.alignment==2)

        strcpy(ali,"right");

    printf("ID SIZE ALIGNMENT B I U\n");

    printf("%u\t%u\t%s\t%s\t%s\t%s \n\n",font_n.font_ID,font_n.font_size,ali,font_n.bold == true?"on":"off",font_n.italics == true?"on":"off",font_n.underline == true?"on":"off");

    printf("f)change font\ts)change size\ta)change alignment\nb)toggle bold\ti)toggle italic\tu)toggle underline\nq)quit\n");

}

你可能感兴趣的:(C,Primer,Plus(第六版),c语言,开发语言)