zju1146LC-Display
来源:互联网 发布:编程证书学历 编辑:程序博客网 时间:2024/06/08 12:06
题目链接: zju1146 pku1102
题目大意:
s, n (1 <= s <= 10, 0 <= n <= 99 999 999),
每次输入s,n,,将n输出成LC样式,"-" 表示横向段, "|"表示纵向段每个数字占 s+2 列 2s+3 行.
两个数字之间有一空列.在每个数后输出一空行.
将每个数字的7段是否要显示用一个数组保存起来.然后对于每个数,先处理顶部行,
在输出中间s行,等等。对于每行,又由对每个数字的输出和空格组成。
对那3行,先输出一个空格,然后根据数组看是输出s个"-"还是空格,再输出一个空格。
对于那2s行,先根据数组看是输出空格还是竖线,再输出s个空格,等等。
代码:
// 代码一 #include <iostream>#include <cstring>#include <cstdio>using namespace std;bool map[10][7]= {1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1 };void printDigit(bool left,bool mid,bool right,int s)//处理每一行的数字输出{printf("%c",left?'|':' ');for(int i=0;i<s;i++)printf("%c",mid?'-':' ');printf("%c",right?'|':' ');}int main(int argc, char *argv[]){int s,flag=0;char n[20];bool left,mid,right;while(scanf("%d%s",&s,n)==2&&s){int len=strlen(n);for(int i=0;i<len;i++) //最顶端一行{printDigit(0,map[n[i]-'0'][0],0,s);if(i==len-1)printf("\n");else printf(" ");}for(int j=0;j<s;j++)//上边s行{for(int i=0;i<len;i++){printDigit(map[n[i]-'0'][1],0,map[n[i]-'0'][2],s);if(i==len-1)printf("\n");else printf(" ");}}for(int i=0;i<len;i++)//中间行{printDigit(0,map[n[i]-'0'][3],0,s);if(i==len-1)printf("\n");else printf(" ");}for(int j=0;j<s;j++)//下边s行{for(int i=0;i<len;i++){printDigit(map[n[i]-'0'][4],0,map[n[i]-'0'][5],s);if(i==len-1)printf("\n");else printf(" ");}}for(int i=0;i<len;i++)//底行{printDigit(0,map[n[i]-'0'][6],0,s);if(i==len-1)printf("\n");else printf(" ");}printf("\n");}return 0;}
// 代码二 #include <iostream>#include <cstring>#include <cstdio>using namespace std;bool map[10][7]= {1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1 };void printDigit(bool left,bool mid,bool right,int s) //输出每个数字的一行{printf("%c",left?'|':' ');for(int i=0;i<s;i++)printf("%c",mid?'-':' ');printf("%c",right?'|':' ');}void printRow(bool isH,int c,int s,char* n,int len)//输出一行{for(int i=0;i<len;i++){if(1==isH)printDigit(0,map[n[i]-'0'][c],0,s);else printDigit(map[n[i]-'0'][c],0,map[n[i]-'0'][c+1],s);if(i==len-1)printf("\n");else printf(" ");}}int main(int argc, char *argv[]){int s,flag=0;char n[20];bool left,mid,right;while(scanf("%d%s",&s,n)==2&&s){int len=strlen(n);printRow(1,0,s,n,len);for(int j=0;j<s;j++)printRow(0,1,s,n,len);printRow(1,3,s,n,len);for(int j=0;j<s;j++)printRow(0,4,s,n,len);printRow(1,6,s,n,len);printf("\n");}return 0;}
- zju1146LC-Display
- display
- display
- Display
- display
- Display
- display
- display
- Display
- display
- DISPLAY
- display
- display
- display
- display
- display
- display
- display:'none'与display:''
- apache配置虚拟主机,为什么总是第一个VirtualHost起效 apache基于域名虚拟主机,只访问第一个的问题
- jpg123456789
- pthread_attr_init 线程属性
- CSS样式的优先级别
- linux中inittab文件详解
- zju1146LC-Display
- Shane版详细设计书 文档模板
- 如何增加一个activity
- ACM题目:孔融分梨
- 页面引入JS或CSS时后面加上?并传参的意义
- windows快捷键
- linux下安装grub2引导硬盘/u盘
- vs为什么把void CMyView::OnDraw(CDC* pDC)的第2个参数注释了啊?
- Python操作Mysql实例代码教程