模拟——显示器

news/2024/11/29 1:40:44/

显示器

你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
Input
输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。 

如果某行输入包括两个0,表示输入结束。这行不需要处理。
Output
显示的方式是:用s个'-'表示一个水平线段,用s个'|'表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。
Sample Input
2 12345
3 67890
0 0
Sample Output
      --   --        -- |    |    | |  | | |    |    | |  | | --   --   --   -- | |       |    |    || |       |    |    |--   --        -- ---   ---   ---   ---   --- 
|         | |   | |   | |   |
|         | |   | |   | |   |
|         | |   | |   | |   |---         ---   --- 
|   |     | |   |     | |   |
|   |     | |   |     | |   |
|   |     | |   |     | |   |---         ---   ---   ---
Hint
数字(digit)指的是0,或者1,或者2……或者9。 
数(number)由一个或者多个数字组成。 解题思路

从输出的结果来看,它是有规律的,就是每一个输出的数的每一行只会出现5种情况

1,------ ,即一行除了开头和结尾都是‘-’;

2,          ,即一行全为空格;

3,开头和结尾都为‘|’;

4,只有开头是‘|’;

5,只有结尾是‘|’;

而且5种情况出现的位置也是有规律,所以可以通过规律非常容易的写出来,。


#include<stdio.h>
#include<string.h>
void l(int s)
{int i;for(i=0;i<s+2;i++){printf(" ");}
}
void ll(int s)
{int i;for(i=0;i<s+2;i++){if(i==0||i==s+1){printf(" ");}else{printf("-");}}
}
void lll(int s)
{int i;for(i=0;i<s+2;i++){if(i==0){printf("|");}else{printf(" ");}}
}
void llll(int s)
{int i;for(i=0;i<s+2;i++){if(i==s+1){printf("|");}else{printf(" ");}}
}
void lllll(int s)
{int i;for(i=0;i<s+2;i++){if(i==0||i==s+1){printf("|");}else{printf(" ");}}
}
int main()
{int s,i,j,g;char n[99999];while(1){scanf("%d%s",&s,n);g=strlen(n);if(s==0&&n[0]=='0'&&g==1){break;}for(j=0;j<g;j++){if(n[j]=='1'||n[j]=='4'){l(s);}else{ll(s);}if(n[j+1]!='\n')printf(" ");}printf("\n");for(i=0;i<s;i++){for(j=0;j<g;j++){if(n[j]=='0'||n[j]=='9'||n[j]=='8'||n[j]=='4'){lllll(s);}if(n[j]=='1'||n[j]=='2'||n[j]=='3'||n[j]=='7'){llll(s);}if(n[j]=='5'||n[j]=='6'){lll(s);}if(n[j+1]!='\n')printf(" ");}printf("\n");}for(j=0;j<g;j++){if(n[j]=='1'||n[j]=='7'||n[j]=='0'){l(s);}else{ll(s);}if(n[j+1]!='\n')printf(" ");}printf("\n");for(i=0;i<s;i++){for(j=0;j<g;j++){if(n[j]=='0'||n[j]=='6'||n[j]=='8'){lllll(s);}if(n[j]=='7'||n[j]=='1'||n[j]=='4'||n[j]=='3'||n[j]=='5'||n[j]=='9'){llll(s);}if(n[j]=='2'){lll(s);}if(n[j+1]!='\n')printf(" ");}printf("\n");}for(j=0;j<g;j++){if(n[j]=='1'||n[j]=='4'||n[j]=='7'){l(s);}else{ll(s);}if(n[j+1]!='\n')printf(" ");}printf("\n");printf("\n");}return 0;
}


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

相关文章

虚拟显示器软件(win10及以上)

​ Starting with version 2, the virtual monitor supports the following display resolutions by default: 默认的显示为 1920 * 1080 &#xff08;1k&#xff09;&#xff0c;版本2可以通过配置更改为4k。 1024 x 768 pixels 1360 x 768 pixels 1440 x 900 pixels 1600 …

手机作为显示器及键鼠控制电脑棒(by quqi99)

版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者&#xff1a;张华 发表于&#xff1a;2019-04-14) 买了一款Intel compute stick core m3, 具有HDMI接口输出音频, 但如何使用手机临时地作为显示器及键盘鼠…

LCD显示器的模拟和数字接口

LCD显示器的模拟和数字接口 1 模拟接口 模拟和数字视频信源已经存在了很长时间&#xff0c;模拟视频常用于台式机&#xff0c;而数字视频则在笔记本电脑中比较流行。当前大量计算机使用的模拟视频输出&#xff0c;因此保证了模拟接口支持能够满足未来几年的需求。但是最近…

redis第三章-redis集群redisCluster

1.redis集群模式比较 &#xff08;1&#xff09;哨兵模式 哨兵模式是利用哨兵来做主从切换的&#xff0c;当主节点发生故障的时候&#xff0c;通过哨兵去选取出一个从节点作为主节点&#xff0c;但本身哨兵的配置还是有些麻烦&#xff0c;并且实际上哨兵的性能和高可用性一般…

2023上海“磐石行动”pwn wp

Changeaddr 任意地址写&#xff0c;控制程序执行getflag函数 from pwn import * context.log_leveldebug #rprocess("./ChangeAddr") rremote(116.236.144.37,28526) r.recvuntil("Now you can write one 4 byte value to memory. Where would you like to …

腾讯难成算法帝国

腾讯难成算法帝国 https://mp.weixin.qq.com/s/ceVUyuVeYtCPOCSgMNAStg 本文从一个全新的角度——数据及算法&#xff0c;对腾讯这家公司抽丝剥茧&#xff0c;进行了全面的分析。作者认为&#xff0c;如果腾讯能够重视大数据并极大提升它的算法&#xff0c;并利用算法进行更有…

25个深度学习相关公开数据集

作者&#xff1a;磐石 目录 介绍图像处理相关自然语言处理相关语音处理相关Supplement 一&#xff0e;介绍 通常来说&#xff0c;深度学习的关键在于实践。从图像处理到语音识别&#xff0c;每一个细分领域都有着独特的细微差别和解决方法。 然而&#xff0c;你可以从哪里获…

Google AI推出新的大规模目标检测挑战赛

来源 | Towards Data Science 整理 | 磐石 就在几天前&#xff0c;Google AI在Kaggle上推出了一项名为Open Images Challenge的大规模目标检测竞赛。当今计算机视觉社区已经很长一段时间没有进行如此新的大规模竞赛&#xff0c;这对视觉研究者来说绝对是一个令人振奋的消息。 …