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

}

相关推荐
yong999022 分钟前
MATLAB读取高光谱图像
开发语言·matlab
2zcode27 分钟前
基于MATLAB的肝病风险评估与分期分析系统设计与实现
开发语言·matlab
小小de风呀37 分钟前
de风——【从零开始学C++】(五):内存管理
开发语言·c++
ooseabiscuit41 分钟前
Laravel6.x核心优化与特性全解析
android·开发语言·javascript
折哥的程序人生 · 物流技术专研42 分钟前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
Hello.Reader1 小时前
算法基础(十)——分治思想把大问题拆成小问题
java·开发语言·算法
一只大袋鼠1 小时前
JavaWeb四种文件上传方式(下篇)
java·开发语言·springmvc·javaweb
TE-茶叶蛋2 小时前
深入研究 yudao-framework 模块:Java 编程能力提升指南
java·开发语言
CHANG_THE_WORLD2 小时前
C语言中的 %*s 和 %.*s 和C++的字符串格式化输出
c语言·c++·c#
逻辑驱动的ken2 小时前
Java高频考点场景题24
java·开发语言·面试·职场和发展·求职招聘