计算器的新功能


当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照windows系统自带的计算器外观和功能去设计,但是现在老师要你多做出一个有新功能的计算器,实现当输入一个数时,能够将这个数分解成一个或多个素因子乘积的形式,并按素因子的大小排列显示出来。大家对计算器中数的表示应该很清楚的。下面显示出了0 — 9这十个数字的表示形式。每个数字都占据5 * 3大小的字符区域


你能实现这个新功能吗?试试看吧!

输入

 

输入有多组测试数据,每组包括一个正整数n(1 < n <= 1000000)。

 

样例输入

 

10

2

 

输出

 

对于每个数,将它分解成若干个素数乘积的形式,并按从小到大的顺序输出,素因子之间用“ * ”的形式连接。

 

样例输出

 

 -     -

  |   |

 -  *  -

|       |

 -     -

 

 -

  |

 -

|

 -

 

时间限制C/C++语言:1000MS其它语言:3000MS
内存限制
C/C++语言:65536KB其它语言:589824KB
复制代码
#include<iostream>
#include<stdio.h>
using namespace std;

char arr[5][1000];
int pos = 0;

void printMultiSign() {
    if (pos != 0) {
        arr[0][pos] = ' ';
        arr[1][pos] = ' ';
        arr[2][pos] = '*';
        arr[3][pos] = ' ';
        arr[4][pos++] = ' ';
    }
}

void NumToArray(int i)
{
    int tmp = 1;
    while (i / tmp / 10 != 0) { //需要从首位开始输出
        tmp *= 10;
    };
    printMultiSign();

    while (tmp != 0) {
        int t = i / tmp % 10;
        tmp = tmp / 10;
        switch (t) {
        case 0 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 1 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 2 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';
            break;
        case 3 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 4 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 5 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 6 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 7 :
            arr[0][pos] = ' ';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 8 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        case 9 :
            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = ' ';
            arr[4][pos++] = ' ';

            arr[0][pos] = '-';
            arr[1][pos] = ' ';
            arr[2][pos] = '-';
            arr[3][pos] = ' ';
            arr[4][pos++] = '-';

            arr[0][pos] = ' ';
            arr[1][pos] = '|';
            arr[2][pos] = ' ';
            arr[3][pos] = '|';
            arr[4][pos++] = ' ';
            break;
        }
    }
}

void printArray() {
    arr[0][pos] = '\0';
    arr[1][pos] = '\0';
    arr[2][pos] = '\0';
    arr[3][pos] = '\0';
    arr[4][pos] = '\0';
    pos = 0;
    cout << arr[0] << endl;
    cout << arr[1] << endl;
    cout << arr[2] << endl;
    cout << arr[3] << endl;
    cout << arr[4] << endl;
}

void sushu(int num)
{
    int i;
    for(i=2;i<num;)
    {
        if(num%i==0)
        {
            NumToArray(i);
            num=num/i;
            i=2;
        }
        else
            i++;
    }
    NumToArray(i);
}

int main()
{
    int num;
    while(cin>>num)
    {
        sushu(num);
        printArray();
    }
}
复制代码

 

posted @   home普通的人  阅读(380)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示