Problem H: 液晶显示

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 3246  Solved: 1594
[Submit][Status][Web Board]

Description

你的朋友刚买了一台新电脑,他以前用过的最强大的计算工具是一台袖珍计算器。现在,看着自己的新电脑,他有点失望,因为他更喜欢计算器上的LC显示器。所以,你决定写一个LC显示风格的程序帮他在电脑上显示数字。

Input

输入包括若干行,每一行有两个整数。输入为两个0表示结束,并且此行不被处理。

每行输入的两个整数s和n,满足1<=s<=10且0<=n<=99 999 999,其中n是要被现实的数字,s是n应该显示的大小(放大的倍数)。

Output

输出的数字是LC显示风格的:使用s个“-”表示水平线和s个“|”竖直线,每个数字刚好占据s+2列和2s+3行,所有没有“-”和“|”的空白处请用空格填满。并且每两个数字之间要有一列空格。

每一行输入数字对应上述一组LC显示风格输出。任意两组数字的输出之间用一个空行分割。

Sample Input

2 123453 678900 0

Sample Output

-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- ---

HINT

Append Code

这个题目挺简单的,枚举每个数字,按字符串接收第二个数字,直接输出就可以了,枚举每个数字时由于打印方式是有规律的,所以可以先写几个函数,方便下面使用。感觉自己这样分十个数字代码太长了,有好方法请多多指教啦。
下面是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int qipan[40][150]; void shu(int i, int k, int num)
{
int n = i + num;
for(; i < n; i++)
qipan[i][k] = -1;
} void heng(int i, int k, int num)
{
intj;
for(j = k + 1; j < k + num + 1; j++)
qipan[i][j] = 1;
} void deal(int n, int num, int k)
{
switch(n)
{
case0:
shu(1, k, num);
shu(num + 2, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
heng(0, k, num);
heng(2 * num + 2, k, num);
break;
case1:
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
break;
case2:
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k, num);
break;
case3:
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
break;
case4:
shu(1, k, num);
heng(num + 1, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
break;
case5:
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
shu(1, k, num);
shu(num + 2, k + num + 1, num);
break;
case6:
shu(1, k, num);
shu(num + 2, k, num);
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
shu(num + 2, k + num + 1, num);
break;
case7:
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
heng(0, k, num);
break;
case8:
shu(1, k, num);
shu(num + 2, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
break;
case9:
shu(1, k, num);
shu(1, k + num + 1, num);
shu(num + 2, k + num + 1, num);
heng(0, k, num);
heng(num + 1, k, num);
heng(2 * num + 2, k, num);
break;
}
} int main()
{
int num, temp = 0;
char s[10];
while(scanf("%d %s", &num, s) && num)
{
if(temp++)
printf("\n");
memset(qipan, 0, sizeof(qipan));
int i,j,k,n = strlen(s);
for(i = 0, k = 0; i < n; i++, k += num + 2)
{
if(k != 0)
k++;
deal(s[i] - '0', num, k);
}
for(i = 0; i < 2 * num + 3; i++)
{
for(j = 0; j < (num + 3) * n - 1; j++)
{
if(qipan[i][j] == 0)
printf(" ");
elseif(qipan[i][j] == 1)
printf("-");
else
printf("|");
}
printf("\n");
}
}
return0;
}


SDUST第十一次oj作业液晶显示问题的更多相关文章

  1. 深入理解计算机系统_3e 第十一章家庭作业 CS:APP3e chapter 11 homework

    注:tiny.c csapp.c csapp.h等示例代码均可在Code Examples获取 11.6 A. 书上写的示例代码已经完成了大部分工作:doit函数中的printf("%s&q ...

  2. 第十一周博客作业 <西北师范大学| 周安伟>

    第十一周助教作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/107615 ...

  3. 作业类型维护流程(CO)

    一.建立作业类型——kl01 目的: 藉由做作業類型執行生產報工 目錄路徑: 會計à成本控制à成本中心會計à主檔資料à作業類型à個別處理à KL01 - 建立 Transaction   Code: ...

  4. 201521123091 《Java程序设计》第12周学习总结

    Java 第十一周总结 第十一周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 4.课后阅读 1.本章学习总结 1.1 以你喜欢的方式(思维导图 ...

  5. 201521123091 《Java程序设计》第11周学习总结

    Java 第十一周总结 第十一周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 4.课后阅读 1.本章学习总结 1.1 以你喜欢的方式(思维导图 ...

  6. coursera_poj_魔兽世界终结版

    五个下午的时间!!!!终于过了!!有史以来做的最复杂的一个题这是我迄今为止做的最复杂也最具有挑战的一个oj作业.虽然之前做过比这个规模一些作业项目,但是往往有简单的模块框架,模块之前的关系也只是有些简 ...

  7. 20172306 2018-2019-2 《Java程序设计与数据结构》第七周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第七周学习总结 教材学习内容总结 概述 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父结点,而父结点又小于或 ...

  8. 201671030113 李星宇 实验十四 团队项目评审&课程学习总结

    项目 内容 所属课程 [所属课程(https://www.cnblogs.com/nwnu-daizh/) 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 ...

  9. 201671030114 马秀丽 实验十四 团队项目评审&课程学习总结

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 任务一:团队项目审核已完成.项目验收过程意见表已上交. 任务二:课程学习 ...

随机推荐

  1. SpringBoot---核心---日志配置

  2. 51NOD 区间的价值 V2

    http://www.51nod.com/contest/problem.html#!problemId=1674 因为题目要求的只是& 和 | 这两个运算.而这两个运算产生的值是有限的. & ...

  3. linux网卡软中断shell脚本

    LANG=C;export LANG;  service irqbalance stop >/dev/null 2>&1;chkconfig irqbalance off; bon ...

  4. Collections集合工具类,集合嵌套,集合综合案例斗地主

    1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...

  5. JVM类加载机制二

    类加载器与双亲委派模型 类加载器 类加载的操作不是有虚拟机完成的,而是由类加载器完成的,这样可以让程序定义决定加载哪个类. 类加载器的分类: 从虚拟机的角度有两种加载器,一种是启动类加载器Bootst ...

  6. The first step in solving any problem is recognizing there is one.

    The first step in solving any problem is recognizing there is one.解决问题的第一步是要承认确实存在问题.

  7. ajax在购物车中的应用

    代码如下: 购物车页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  8. ios 身份证照片识别信息

    一个近乎完整的可识别中国身份证信息的Demo就问问你霸气不

  9. 科学效法自然:微软研究人员测试AI控制的滑翔机

    编者按:正如一颗苹果砸出了万有引力,自然界所有存在的事物和现象都有其科学合理的一面,小小的鸟儿也能够给科学带来丰富的灵感和启示. 最近,微软研究人员从自然出发,研究鸟类能够自由停留在空中的科学原理,并 ...

  10. 火狐浏览器不支持location.reload()(以改变页面大小时重新刷新页面为例)

    背景:当页面大小改变时需要重新刷新页面,以适应相应的尺寸 解决方法: var url = window.location.href; var parm = parseInt(Math.random() ...