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

}

相关推荐
zhangjw342 小时前
Java基础语法:变量、数据类型与运算符,从原理到实战
java·开发语言
算法鑫探5 小时前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
yaoxin5211235 小时前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
NotFound4865 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
浅时光_c5 小时前
14 结构体 共用体 枚举类型
c语言
Ava的硅谷新视界6 小时前
用了一天 Claude Opus 4.7,聊几点真实感受
开发语言·后端·编程
rabbit_pro6 小时前
Python调用onnx模型
开发语言·python
浪客川7 小时前
【百例RUST - 010】字符串
开发语言·后端·rust
赵侃侃爱分享8 小时前
学完Python第一次写程序写了这个简单的计算器
开发语言·python
断眉的派大星8 小时前
# Python 魔术方法(魔法方法)超详细讲解
开发语言·python