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

news/2025/2/16 3:18:06/

//

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

}


http://www.ppmy.cn/news/1344153.html

相关文章

验证码倒计时:用户界面的小细节,大智慧

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 验证码倒计时&#xff1a;用户界面的小细节&#xff0c;大智慧 前言为什么需要验证码倒计时防止滥用&#xff1a;用户心理&#xff1a; 设计考量可见性&#xff1a;友好性&#xff1a;适应性&#xff…

【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法

DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段&#xff0c;通过视角相关扩散模型执行得分蒸馏采样&#xff0c;解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…

Z Algorithm(扩展KMP)算法笔记

假设给定一个s长度为的n字符串。那么这个字符串的 z-function &#xff08;“zet-function”&#xff09;是一个长度为 的数组&#xff0c;其中的 -th 元素等于最大字符数&#xff0c;从 position i开始&#xff0c;i与字符串的第一个字符n重合。 换句话说&#xff0c;z[i]它是…

网易和腾讯面试题精选---API 设计和开发面试问答

介绍 API 设计和开发是不断发展的软件工程领域的关键组成部分。随着企业越来越依赖互连系统,创建强大、高效和用户友好的 API 的能力已成为科技行业抢手的技能。无论您是经验丰富的 API 开发人员还是准备面试的候选人,掌握 API 设计的复杂性都是至关重要的。本文深入探讨了一…

Node.js JSON Schema Ajv依赖库逐步介绍验证类型和中文错误提示

在构建应用程序时&#xff0c;数据的有效性是至关重要的。为了确保传入的数据符合预期的格式和规范&#xff0c;我们可以使用 Ajv&#xff08;Another JSON Schema Validator&#xff09;进行验证。在这篇博文中&#xff0c;我们将从头开始学习 Ajv&#xff0c;逐步介绍验证类型…

ChatGPT Plus如何升级?信用卡付款失败怎么办?如何使用信用卡升级 ChatGPT Plus?

ChatGPT Plus是OpenAI提供的一种高级服务&#xff0c;它相较于标准版本&#xff0c;提供了更快的响应速度、更强大的功能&#xff0c;并且用户可以优先体验到新推出的功能。 尽管许多用户愿意支付 20 美元的月费来订阅 GPT-4&#xff0c;但在实际支付过程中&#xff0c;特别是…

pytorch——保存‘类别名与类别数量’到权值文件中

前言 不知道大家有没有像我一样&#xff0c;每换一次不一样的模型&#xff0c;就要输入不同的num_classes和name_classes,反正我是很头疼诶&#xff0c;尤其是项目里面不止一个模型的时候&#xff0c;更新的时候看着就很头疼&#xff0c;然后就想着直接输入模型权值文件的path…

STM32学习笔记三——深度讲解GPIO及其应用

目录 STM32GPIO端口位基本结构图&#xff1a; 结构图I/O引脚&#xff1a; GPIO输入输出总结 1.GPIO引脚的四种输入方式及其特点&#xff1a; 1)上拉输入(GPIO_Mode_IPU) 2)下拉输入(GPIO_Mode_IPD) 3)模拟输入(GPIO_Mode_AIN) 4)浮空输入(GPIO_Mode_IN_FLOATING…