POJ2745显示器
2015-07-21 14:43
204 查看
Description
你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
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
-- -- --
| | | | | |
| | | | | |
-- -- -- --
| | | | |
| | | | |
-- -- --
--- --- --- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- --- ---
一开始代码:
提交后Presentation
Error。。。找了很久,发现最后输出时没有按照要求每个数字之间有一个空格隔开,还是每组数之间还要加空行,故最后:
你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
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
-- -- --
| | | | | |
| | | | | |
-- -- -- --
| | | | |
| | | | |
-- -- --
--- --- --- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- --- ---
一开始代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int i,j,k; char n1[11]="- -- -----"; char n2[11]="| ||| ||"; char n3[11]="||||| |||"; char n4[11]=" ----- --"; char n5[11]="| | | | "; char n6[11]="|| |||||||"; char n7[11]="- -- -- --"; int s; char n[20]; int num; while(1){ scanf("%d %s",&s,n); if(s==0)break; int l=strlen(n); for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n1[num]); printf(" ");} printf("\n"); for(j=0;j<s;j++) { for(i=0;i<l;i++) {num=n[i]-'0'; printf("%c",n2[num]); for(k=0;k<s;k++) printf(" "); printf("%c",n3[num]); } printf("\n");} for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n4[num]); printf(" ");} printf("\n"); for(j=0;j<s;j++) { for(i=0;i<l;i++) {num=n[i]-'0'; printf("%c",n5[num]); for(k=0;k<s;k++) printf(" "); printf("%c",n6[num]); } printf("\n");} for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n7[num]); printf(" ");} printf("\n"); } return 0;}
提交后Presentation
Error。。。找了很久,发现最后输出时没有按照要求每个数字之间有一个空格隔开,还是每组数之间还要加空行,故最后:
include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int i,j,k; char n1[11]="- -- -----"; char n2[11]="| ||| ||"; char n3[11]="||||| |||"; char n4[11]=" ----- --"; char n5[11]="| | | | "; char n6[11]="|| |||||||"; char n7[11]="- -- -- --"; int s; char n[20]; int num; while(1){ scanf("%d %s",&s,n); if(s==0)break; int l=strlen(n); for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n1[num]); printf(" ");} printf("\n"); for(j=0;j<s;j++) { for(i=0;i<l;i++) {num=n[i]-'0'; printf("%c",n2[num]); for(k=0;k<s;k++) printf(" "); printf("%c ",n3[num]); } printf("\n");} for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n4[num]); printf(" ");} printf("\n"); for(j=0;j<s;j++) { for(i=0;i<l;i++) {num=n[i]-'0'; printf("%c",n5[num]); for(k=0;k<s;k++) printf(" "); printf("%c ",n6[num]); } printf("\n");} for(i=0;i<l;i++) {num=n[i]-'0'; printf(" "); for(k=0;k<s;k++) printf("%c",n7[num]); printf(" ");} printf("\n"); printf("\n"); } return 0;}
相关文章推荐
- web.xml中“load-on-startup”的作用
- Java实现数据库连接池的方法
- 收藏网站64
- android重启应用
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第23讲:PHP运算符(算术运算、逻辑运算、比较运算、三元运算、类型运算、运算符优先级)
- Linux中将文件系统模块化详解
- Kung Fu Panda Holiday/Transcript
- Visual studio 能否定位打开文件在项目中的位置
- matlab的调试方法
- 收藏网站66
- 线程和子线程的关系
- C#WinForm窗体事件执行次序-启动、退出
- android源码中ccache使用及原理简介
- centos5.8升级gcc g++
- MySql 申明变量以及赋值
- 数据库设计原则(转载)
- 学习并测试一下CSDN的Markdown编辑器
- 软装商城——软装设计新模式
- 乌龟棋 (背包型动态规划)
- 分解命令行字符串