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

//

//  main.c

//  15.9-6

//

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

//

#include <stdio.h>

#include <stdbool.h>

#include <string.h>

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");

}

相关推荐

  1. C Primer Plus(15.9 编程练习 6

    2024-02-06 02:40:03       49 阅读
  2. C Primer Plus()11.13 编程练习 6

    2024-02-06 02:40:03       43 阅读
  3. C Primer Plus()16.18 编程练习 6

    2024-02-06 02:40:03       47 阅读
  4. C Primer Plus(15.9 编程练习 3

    2024-02-06 02:40:03       44 阅读
  5. C Primer Plus(15.9 编程练习 7

    2024-02-06 02:40:03       45 阅读
  6. C Primer Plus(15.9 编程练习 5

    2024-02-06 02:40:03       48 阅读
  7. C Primer Plus()12.9 编程练习 5

    2024-02-06 02:40:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-06 02:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-06 02:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-06 02:40:03       82 阅读
  4. Python语言-面向对象

    2024-02-06 02:40:03       91 阅读

热门阅读

  1. ES6-let

    ES6-let

    2024-02-06 02:40:03      37 阅读
  2. 记一次Mysql加字段加不上问题排查过程

    2024-02-06 02:40:03       55 阅读
  3. NCCL 源码详解总目录

    2024-02-06 02:40:03       53 阅读
  4. 多线程与socket编程

    2024-02-06 02:40:03       57 阅读
  5. nginx负载均衡

    2024-02-06 02:40:03       51 阅读
  6. Blender 的重拓扑功能中的参数,

    2024-02-06 02:40:03       47 阅读
  7. salesforce flow 如何保存多选列表选中的值

    2024-02-06 02:40:03       50 阅读
  8. 【C语言】深入理解函数指针

    2024-02-06 02:40:03       58 阅读