每天一个小题目——计算器的新功能

来源:互联网 发布:无缝丝袜淘宝贴吧 编辑:程序博客网 时间:2024/06/05 09:04

题目描述

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

代码如下:(代码是拷过来的)

#include <iostream>#include <cstdio>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 printNumToArray(int num) {    int tmp = 1;    while (num / tmp / 10 != 0) {   // 确定 num 即每一个 素因子的位数         tmp *= 10;    };    printMultiSign();               // 添加 * 连接 两个素因子      while (tmp != 0) {        int t = num / 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 generate(int num) {    for (int i = 2; i <= num;) {        if (num % i == 0) {            printNumToArray(i);            num = num / i;            i = 2;        } else {            ++i;        }    }}int main(){    int num = 0;    while (scanf("%d", &num) != EOF) {        generate(num);        printArray();    }    return 0;}
0 0
原创粉丝点击