Chinaunix首页 | 论坛 | 博客
  • 博客访问: 472236
  • 博文数量: 117
  • 博客积分: 3195
  • 博客等级: 中校
  • 技术积分: 1156
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 01:44
文章分类

全部博文(117)

文章存档

2012年(5)

2011年(5)

2010年(46)

2009年(61)

我的朋友

分类:

2009-10-11 21:48:13

解题思路

题意:

把一个整数转化为像液晶显示器显示的那种。

 

思路:

模拟。把n1的情况先一个数字一个数字搞出来。然后再根据n放大就可以了。要注意的是m0的情况,还有两个数字之间需要有一列空格。

源程序

源程序

 

#include <stdio.h>
#include <string.h>
#include <conio.h>
char nums[10][5][3] = {
{{' ', '-', ' '}, {'|', ' ', '|'}, {' ', ' ', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}},
{{' ', ' ', ' '}, {' ', ' ', '|'}, {' ', ' ', ' '}, {' ', ' ', '|'}, {' ', ' ', ' '}},
{{' ', '-', ' '}, {' ', ' ', '|'}, {' ', '-', ' '}, {'|', ' ', ' '}, {' ', '-', ' '}},
{{' ', '-', ' '}, {' ', ' ', '|'}, {' ', '-', ' '}, {' ', ' ', '|'}, {' ', '-', ' '}},
{{' ', ' ', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}, {' ', ' ', '|'}, {' ', ' ', ' '}},
{{' ', '-', ' '}, {'|', ' ', ' '}, {' ', '-', ' '}, {' ', ' ', '|'}, {' ', '-', ' '}},
{{' ', '-', ' '}, {'|', ' ', ' '}, {' ', '-', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}},
{{' ', '-', ' '}, {' ', ' ', '|'}, {' ', ' ', ' '}, {' ', ' ', '|'}, {' ', ' ', ' '}},
{{' ', '-', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}},
{{' ', '-', ' '}, {'|', ' ', '|'}, {' ', '-', ' '}, {' ', ' ', '|'}, {' ', '-', ' '}}};
int main()
{
    int i, j, k, num, x, jj, kk;
    int n, m, digits[20];
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    while(scanf("%d%d", &n, &m) != EOF)
    {
        if(!n && !m)
            break;
        i = 0;
        if(m == 0) //注意0
        {
            x = 1;
            digits[0] = 0;
        }
        else
        { //转为单个数字放在数组里
            while(m > 0)
            {
                digits[i] = m % 10;
                m = m / 10;
                i++;
            }
            x = i; //5

        }

        //放大过程
        for(j=0; j<2*n+3; j++)
        {
            jj = j;
            if(j > 0 && j <= n)
                jj = 1;        
            if(j == n+1)
                jj = 2;
            if(j > n+1 && j < 2*n+3-1)
                jj = 3;
            if(j == 2*n+3-1)
                jj = 4;
            for(i=x-1; i>=0; i--)
            {
                for(k=0; k< n+2; k++)
                {
                    kk = 0;
                    if(k > 0 && k < n+1)
                        kk = 1;
                    if(k == n+1)
                        kk = 2;
                    printf("%c", nums[digits[i]][jj][kk]);
                }
                printf(" "); //数字之间要有空格           
            }
            printf("\n");
        }
        printf("\n"); //输出一个数据后要有空行
    }

    getch();
    return 0;
}


阅读(1204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~