uva 706 LCD Display

这是一道基本练习题,就是有一点麻烦。

#include <stdio.h>
#include <string.h>

char s[20];

struct node
{
	bool part1;
	bool part2;
	bool part3;
	bool part4;
	bool part5;
	bool part6;
	bool part7;
};

struct node format[10];

void init()
{
	format[0].part1 = true;
	format[0].part2 = true;
	format[0].part3 = true;
	format[0].part4 = false;
	format[0].part5 = true;
	format[0].part6 = true;
	format[0].part7 = true;

	format[1].part1 = false;
	format[1].part2 = false;
	format[1].part3 = true;
	format[1].part4 = false;
	format[1].part5 = false;
	format[1].part6 = true;
	format[1].part7 = false;

	format[2].part1 = true;
	format[2].part2 = false;
	format[2].part3 = true;
	format[2].part4 = true;
	format[2].part5 = true;
	format[2].part6 = false;
	format[2].part7 = true;

	format[3].part1 = true;
	format[3].part2 = false;
	format[3].part3 = true;
	format[3].part4 = true;
	format[3].part5 = false;
	format[3].part6 = true;
	format[3].part7 = true;

	format[4].part1 = false;
	format[4].part2 = true;
	format[4].part3 = true;
	format[4].part4 = true;
	format[4].part5 = false;
	format[4].part6 = true;
	format[4].part7 = false;

	format[5].part1 = true;
	format[5].part2 = true;
	format[5].part3 = false;
	format[5].part4 = true;
	format[5].part5 = false;
	format[5].part6 = true;
	format[5].part7 = true;

	format[6].part1 = true;
	format[6].part2 = true;
	format[6].part3 = false;
	format[6].part4 = true;
	format[6].part5 = true;
	format[6].part6 = true;
	format[6].part7 = true;

	format[7].part1 = true;
	format[7].part2 = false;
	format[7].part3 = true;
	format[7].part4 = false;
	format[7].part5 = false;
	format[7].part6 = true;
	format[7].part7 = false;

	format[8].part1 = true;
	format[8].part2 = true;
	format[8].part3 = true;
	format[8].part4 = true;
	format[8].part5 = true;
	format[8].part6 = true;
	format[8].part7 = true;

	format[9].part1 = true;
	format[9].part2 = true;
	format[9].part3 = true;
	format[9].part4 = true;
	format[9].part5 = false;
	format[9].part6 = true;
	format[9].part7 = true;
}

void func(int n, char *s) //n是大小
{
	int i, j, k;
	int num;
	int len;

	len = strlen(s);
	for(i=0; i<len; i++) //画最上面的部分
	{
		num = s[i]-'0';
		if(format[num].part1)
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf("-");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
		else
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf(" ");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
	}
	printf("\n");

	for(k=1; k<=n; k++)
	{
		for(i=0; i<len; i++) //画第二部分和第三部分
		{
			num = s[i]-'0';
		
			if(format[num].part2)
				printf("|");
			else
				printf(" ");
			for(j=1; j<=n; j++)
				printf(" ");
			if(format[num].part3)
				printf("|");
			else
				printf(" ");

			if(i < len-1)
				printf(" ");
		}
		printf("\n");
	}

	for(i=0; i<len; i++) //画中间部分
	{
		num = s[i]-'0';
		if(format[num].part4)
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf("-");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
		else
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf(" ");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
	}
	printf("\n");

	for(k=1; k<=n; k++)
	{
		for(i=0; i<len; i++) //画第五部分和第六部分
		{
			num = s[i]-'0';

			if(format[num].part5)
				printf("|");
			else
				printf(" ");
			for(j=1; j<=n; j++)
				printf(" ");
			if(format[num].part6)
				printf("|");
			else
				printf(" ");

			if(i < len-1)
				printf(" ");
		}
		printf("\n");
	}

	for(i=0; i<len; i++) //画最底下部分
	{
		num = s[i]-'0';
		if(format[num].part7)
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf("-");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
		else
		{
			printf(" ");
			for(j=1; j<=n; j++)
				printf(" ");
			printf(" ");

			if(i < len-1)
				printf(" ");
		}
	}
	printf("\n");

	printf("\n");
}

int main(void)
{
	int n;

	init();
	while(1)
	{
		scanf("%d %s", &n, s);
		if(n==0 && !strcmp(s,"0"))
			break;

		func(n, s);
	}

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值