【2011年东莞市小学】液晶显示屏题解(抄简单哟!!!)

注明:本博主是一个小学生哟!
题目描述
你有一个朋友刚买了一个电脑,而在此之前他用过的最强大的机器是一个袖珍式计算器。他有点失望,因为和电脑屏幕比,他更喜欢袖珍式计算器的液晶显示屏。为了让他高兴,你要写一个程序让电脑像液晶显示屏一样显示数字。
本博主忍不住就要问了,你直接打开计算器它不香吗?
在这里插入图片描述
估计是你朋友脑子进水了…
所以,你就要输出这么一个东西:
在这里插入图片描述
(注:长竖线为两个“|”)
关键是,我们还不能打表,你每次得输出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的打印结果的…)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值