您的位置:首页 > 其它

UVa 706 & ZOJ 1146 LC-Display

2013-07-03 16:58 495 查看
  题目大意:给你一个数字n和字体大小s,输出数字的液晶显示。直接模拟,代码如下:

#include <stdio.h>
void draw(int n,int s,int row)
{
int i;
if(row==1)
{
printf(" ");
if(n==2||n==3||(n>=5&&n<=9)||n==0)
for(i=0;i<s;i++)
printf("-");
else for(i=0;i<s;i++)
printf(" ");
printf(" ");
}
else if(2<=row&&row<=s+1)
{
if(n==0||(4<=n&&n<=6)||n==8||n==9||n==0)
printf("|");
else printf(" ");
for(i=0;i<s;i++)
printf(" ");
if((1<=n&&n<=4)||(7<=n&&n<=9)||n==0)
printf("|");
else printf(" ");
}
else if(row==s+2)
{
printf(" ");
if((2<=n&&n<=6)||n==8||n==9)
for(i=0;i<s;i++)
printf("-");
else for(i=0;i<s;i++)
printf(" ");
printf(" ");
}
else if(s+3<=row&&row<=2*s+2)
{
if(n==2||n==6||n==8||n==0)
printf("|");
else printf(" ");
for(i=0;i<s;i++)
printf(" ");
if(n==1||(3<=n&&n<=9)||n==0)
printf("|");
else printf(" ");
}
else if(row==2*s+3)
{
printf(" ");
if(n==2||n==3||n==5||n==6||n==8||n==9||n==0)
for(i=0;i<s;i++)
printf("-");
else for(i=0;i<s;i++)
printf(" ");
printf(" ");
}
}

int main()
{
int s,n,p,k,i,j;
int digit[10];
while(scanf("%d%d",&s,&n)!=EOF)
{
if(s==0&&n==0) break;
if(n)
{
p=0;
while(n)
{
digit[p++]=n%10;
n/=10;
}
k=p;
}
else
{
digit[0]=0;
k=1;
}
for(i=1;i<=2*s+3;i++)
{
draw(digit[k-1],s,i);
for(j=k-2;j>=0;j--)
{
printf(" ");
draw(digit[j],s,i);
}
printf("\n");
}
printf("\n");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: