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

这个题目挺简单的,枚举每个数字,按字符串接收第二个数字,直接输出就可以了,枚举每个数字时由于打印方式是有规律的,所以可以先写几个函数,方便下面使用。感觉自己这样分十个数字代码太长了,有好方法请多多指教啦。
下面是我的代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int qipan[40][150];
  5. void shu(int i, int k, int num)
  6. {
  7. int n = i + num;
  8. for(; i < n; i++)
  9. qipan[i][k] = -1;
  10. }
  11. void heng(int i, int k, int num)
  12. {
  13. intj;
  14. for(j = k + 1; j < k + num + 1; j++)
  15. qipan[i][j] = 1;
  16. }
  17. void deal(int n, int num, int k)
  18. {
  19. switch(n)
  20. {
  21. case0:
  22. shu(1, k, num);
  23. shu(num + 2, k, num);
  24. shu(1, k + num + 1, num);
  25. shu(num + 2, k + num + 1, num);
  26. heng(0, k, num);
  27. heng(2 * num + 2, k, num);
  28. break;
  29. case1:
  30. shu(1, k + num + 1, num);
  31. shu(num + 2, k + num + 1, num);
  32. break;
  33. case2:
  34. heng(0, k, num);
  35. heng(num + 1, k, num);
  36. heng(2 * num + 2, k, num);
  37. shu(1, k + num + 1, num);
  38. shu(num + 2, k, num);
  39. break;
  40. case3:
  41. heng(0, k, num);
  42. heng(num + 1, k, num);
  43. heng(2 * num + 2, k, num);
  44. shu(1, k + num + 1, num);
  45. shu(num + 2, k + num + 1, num);
  46. break;
  47. case4:
  48. shu(1, k, num);
  49. heng(num + 1, k, num);
  50. shu(1, k + num + 1, num);
  51. shu(num + 2, k + num + 1, num);
  52. break;
  53. case5:
  54. heng(0, k, num);
  55. heng(num + 1, k, num);
  56. heng(2 * num + 2, k, num);
  57. shu(1, k, num);
  58. shu(num + 2, k + num + 1, num);
  59. break;
  60. case6:
  61. shu(1, k, num);
  62. shu(num + 2, k, num);
  63. heng(0, k, num);
  64. heng(num + 1, k, num);
  65. heng(2 * num + 2, k, num);
  66. shu(num + 2, k + num + 1, num);
  67. break;
  68. case7:
  69. shu(1, k + num + 1, num);
  70. shu(num + 2, k + num + 1, num);
  71. heng(0, k, num);
  72. break;
  73. case8:
  74. shu(1, k, num);
  75. shu(num + 2, k, num);
  76. shu(1, k + num + 1, num);
  77. shu(num + 2, k + num + 1, num);
  78. heng(0, k, num);
  79. heng(num + 1, k, num);
  80. heng(2 * num + 2, k, num);
  81. break;
  82. case9:
  83. shu(1, k, num);
  84. shu(1, k + num + 1, num);
  85. shu(num + 2, k + num + 1, num);
  86. heng(0, k, num);
  87. heng(num + 1, k, num);
  88. heng(2 * num + 2, k, num);
  89. break;
  90. }
  91. }
  92. int main()
  93. {
  94. int num, temp = 0;
  95. char s[10];
  96. while(scanf("%d %s", &num, s) && num)
  97. {
  98. if(temp++)
  99. printf("\n");
  100. memset(qipan, 0, sizeof(qipan));
  101. int i,j,k,n = strlen(s);
  102. for(i = 0, k = 0; i < n; i++, k += num + 2)
  103. {
  104. if(k != 0)
  105. k++;
  106. deal(s[i] - '0', num, k);
  107. }
  108. for(i = 0; i < 2 * num + 3; i++)
  109. {
  110. for(j = 0; j < (num + 3) * n - 1; j++)
  111. {
  112. if(qipan[i][j] == 0)
  113. printf(" ");
  114. elseif(qipan[i][j] == 1)
  115. printf("-");
  116. else
  117. printf("|");
  118. }
  119. printf("\n");
  120. }
  121. }
  122. return0;
  123. }


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. swjtu oj Paint Box 第二类斯特林数

    http://swjtuoj.cn/problem/2382/ 题目的难点在于,用k种颜色,去染n个盒子,并且一定要用完这k种颜色,并且相邻的格子不能有相同的颜色, 打了个表发现,这个数是s(n, k ...

  2. Spark Mllib里如何程序输出数据集的条数(图文详解)

    不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第17章 决策树多元分类UCI Covertype数据集

  3. 使用Spring Security OAuth2进行简单的单点登录

    1.概述 在本教程中,我们将讨论如何使用Spring Security OAuth和Spring Boot实现SSO - 单点登录. 我们将使用三个单独的应用程序: 授权服务器 - 这是中央身份验证机 ...

  4. SpringMVC对HTTP报文体的处理

     客户端和服务端HTTP报文传递消息,而HTTP报文包含报文头和报文体.通常,解析请求参数以及返回页面都不需要我们关心HTTP报文体的读取和生成过程.但在某些特定场景下需要直接到请求报文中读取报文体, ...

  5. .net memcache

    非常感谢csdn及冷月宫主让我很快学会了.net操作 memcache 文章转自:http://download.csdn.net/detail/e_wsq/4358982 C#存取Memcache的 ...

  6. C# 操作 sqlite

    1.下载sqlite:http://system.data.sqlite.org/downloads/1.0.94.0/sqlite-netFx20-setup-bundle-x86-2005-1.0 ...

  7. jquery实现的导航栏切换

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Windows Azure 配置Active Directory 主机(3)

    步骤 4:在 CloudSite 中安装附加域控制器 1.登录到 YourVMachine,单击“开始”,键入“dcpromo”,然后按 Enter. 2.在“欢迎使用”页上,单击“下一步”. 3.在 ...

  9. 树莓派 - 修改pi账号密码,开启root账号

    1.修改PI账号的密码 password pi 2.开启root账号 树莓派使用的Linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码, ...

  10. WINDOWS-基础:Thread.Sleep(0)

    我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000,如果我调用 ...