本文主要是介绍每天一个小题目——计算器的新功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照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;
}
这篇关于每天一个小题目——计算器的新功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!