题目描述:
当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照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;
}