注明:本博主是一个小学生哟!
题目描述
你有一个朋友刚买了一个电脑,而在此之前他用过的最强大的机器是一个袖珍式计算器。他有点失望,因为和电脑屏幕比,他更喜欢袖珍式计算器的液晶显示屏。为了让他高兴,你要写一个程序让电脑像液晶显示屏一样显示数字。
本博主忍不住就要问了,你直接打开计算器它不香吗?
估计是你朋友脑子进水了…
所以,你就要输出这么一个东西:
(注:长竖线为两个“|”)
关键是,我们还不能打表,你每次得输出n个横着的“-”或者竖着的“|”;
大婶的思路:
1.定义a二维数组;
2.写两个函数,三个参数分别为n,横坐标,纵坐标(开始的时候);
3.由于数字8是最复杂的一个,所以我们先写8的代码,再在8的基础上删去一些横或竖,就可以输出了!
例:6和8差了右上方那一竖,直接复制打印8的代码并删去打印那一竖的代码即可。
#include<bits/stdc++.h>
using namespace std;
int n,x,sum,a[1000][1000],i,b[100000];
void shu(int n,int x,int y){
for(int i=0;i<n;i++) a[x+i][y]=2;
}
void heng(int n,int x,int y){
for(int i=0;i<n;i++) a[x][y+i]=1;
}
int main(){
//freopen("display.in","r",stdin);
//freopen("display.out","w",stdout);
cin>>n>>x;
int lie=n+2,hang=2*n+3;
while(x!=0){
b[i]=x%10;
x/=10;
i++;
}
while(i>0){
i--;
int temp=b[i];
sum+=lie+1;
if(temp==1){
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==2){
shu(n,n+3,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,2,sum-1);
}
if(temp==3){
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==4){
shu(n,2,sum-lie);
heng(n,2+n,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==5){
shu(n,2,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,3+n,sum-1);
}
if(temp==6){
shu(n,2,sum-lie);
shu(n,n+3,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,3+n,sum-1);
}
if(temp==7){
heng(n,1,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==8){
shu(n,2,sum-lie);
shu(n,n+3,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==9){
shu(n,2,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2+n,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
if(temp==0){
shu(n,2,sum-lie);
shu(n,n+3,sum-lie);
heng(n,1,sum-lie+1);
heng(n,2*n+3,sum-lie+1);
shu(n,2,sum-1);
shu(n,3+n,sum-1);
}
}
for(int i=1;i<=hang;i++){
for(int j=1;j<=sum;j++){
if(a[i][j]==2) cout<<"|";
else if(a[i][j]==1) cout<<"-";
else cout<<" ";
}
cout<<endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
本博主写了105行代码,求心心!!!
(好吧其实大部分都是我复制粘贴8的打印结果的…)