[洛谷] cpp-->c 一道好玩的显示题

P1538

这题真的好玩

题目背景

HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。

题目描述

在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。

为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字   更为创新的是,每个人都是趴在地上,保证横竖。

现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。

输入输出格式

输入格式:

 

第一行为k。k表示要摆出数字的大小

第二行为全部由数字组成的字符串,即要摆出的几个数字。

 

输出格式:

 

按题目要求输出。

 

输入输出样例

输入样例#1: 复制
2
1234567890
输出样例#1: 复制
      --   --        --   --   --   --   --   -- 
   |    |    | |  | |    |       | |  | |  | |  |
   |    |    | |  | |    |       | |  | |  | |  |
      --   --   --   --   --        --   --      
   | |       |    |    | |  |    | |  |    | |  |
   | |       |    |    | |  |    | |  |    | |  |
      --   --        --   --        --   --   -- 

说明

除了第一个数字之外,每个数字之前有1个空格,所有数字全部对齐。

k<=30,s的长度不超过255

建议大家直接输出,不要保存。

如果对于大小和k有疑问,请自行理解。

 

思路:分层

 

 1 #include<stdio.h>
 2 //每一个数字的层数都为5
 3 int main()
 4 {
 5     char a[10][15] = 
 6     {
 7         {' ','-',' ',   '|',' ','|',  ' ',' ',' ',   '|',' ','|',   ' ','-',' '},      //0
 8         {' ',' ',' ',   ' ',' ','|',  ' ',' ',' ',   ' ',' ','|',   ' ',' ',' '},      //1
 9         {' ','-',' ',   ' ',' ','|',  ' ','-',' ',   '|',' ',' ',   ' ','-',' '},      //2
10         {' ','-',' ',   ' ',' ','|',  ' ','-',' ',   ' ',' ','|',   ' ','-',' '},      //3
11         {' ',' ',' ',   '|',' ','|',  ' ','-',' ',   ' ',' ','|',   ' ',' ',' '},      //4
12         {' ','-',' ',   '|',' ',' ',  ' ','-',' ',   ' ',' ','|',   ' ','-',' '},      //5
13         {' ','-',' ',   '|',' ',' ',  ' ','-',' ',   '|',' ','|',   ' ','-',' '},      //6
14         {' ','-',' ',   ' ',' ','|',  ' ',' ',' ',   ' ',' ','|',   ' ',' ',' '},      //7
15         {' ','-',' ',   '|',' ','|',  ' ','-',' ',   '|',' ','|',   ' ','-',' '},      //8
16         {' ','-',' ',   '|',' ','|',  ' ','-',' ',   ' ',' ','|',   ' ','-',' '},      //9
17     };
18     
19     int i = 0,j,k;
20     char s[100]; 
21     scanf("%d",&k);
22     scanf("%s",s);
23     
24     while(i < 15)
25     {
26         for(int i1 = 0;i1 < k;i1++)
27         {
28             j = 0;
29             while(s[j] != 0)
30             {
31                 printf("%c",a[s[j] - 48][i]);
32     
33                 for(int i1 = 0;i1 < k;i1++)
34                 {
35                     printf("%c",a[s[j] - 48][i+1]);
36                 }
37                 printf("%c",a[s[j] - 48][i+2]);
38                 printf(" ");
39                 j++;
40             }
41             
42             if(i < 12)
43             {
44                 printf("\n");
45             }
46             
47             if(i != 3 && i != 9)
48             {
49                 break;
50             }
51         }
52         i += 3;
53     }
54 }

 

posted @ 2019-04-20 15:00  samshui  阅读(257)  评论(0编辑  收藏  举报