uva_706_LCD-Display

Status: WA

#include<stdio.h>
#include<string.h>
#define N 20
#define M 12
int main()
{
	
	char num[N];//显示数字
	int s;//占位数

	int l;//Num长度
	int x[N];//num转为Int型
	
	int i,j,k;

	char n_1[M]={'-', ' ', '-','-', ' ',
				 '-', '-', '-', '-', '-'};//10个数字相应行数的笔画

	char n_3[M]={' ', ' ', '-','-', '-',
				 '-', '-', ' ', '-', '-'};

	char n_5[M]={'-', ' ', '-','-', ' ',
				 '-', '-', ' ', '-', '-'};

	
	scanf("%d ",&s);

	gets(num);
	
	while(s && strcmp(num,"0")!=0 )
	{
		
		l = strlen(num);//数据个数

//		printf("l is : %d\n",l);

		for(i=0; i<l; i++)
		{
			x[i] = num[i] - '0';
		
//			printf("x[%d]: %d\n",i,x[i]);//test
		}

		//对多字同行

		//n_1行处理的群·	·				
		for(i=0; i<l; i++)
		{
			printf(" ");//为竖行留空间
			for(j=0; j<s; j++)
			{
				printf("%c",n_1[x[i]]);
			}
			if(i<l-1)
				printf("  ");//空列--changge
			else
				printf(" ");
		}
		printf("\n");//进入下一行处理

		//n_2竖列进行处理
		for(i=0; i<s; i++)
		{
			for(j=0; j<l; j++)//------------------------------
			{
				//当前处理数字x[i]为1237
				if(x[j]==1 || x[j]==2 || x[j]==3 || x[j]==7 )
				{
				
					for(k=0; k<s+1; k++)//共s+2列,要空出1+s列
						printf(" ");//s+1个空格

					printf("|");//输出笔画
					
				
				}else if(x[j]==5 || x[j]==6)
				{
				
					printf("|");//输出笔画

					for(k=0; k<s+1; k++)
						printf(" ");//s-1个空格

				}else if(x[j]==0 || x[j]==4 || x[j]==8 || x[j]==9 ){
					
					printf("|");
					
					for(k=0; k<s; k++)
						printf(" ");//s个空格

					printf("|");


				}//if
				if(j<l-1)
				{
					printf(" ");//空列
				}
			}//for j

			printf("\n");//该n_2中的下一行处理//并且无需之后再回车
		}//for i

		//对第n_3行
		//上式中已显示回车
		for(i=0; i<l; i++)
		{
			printf(" ");//空列
			for(j=0; j<s; j++)
			{
				printf("%c",n_3[x[i]]);
			}
			if(i<l-1)
				printf("  ");//空列--changge
			else
				printf(" ");
		}
		printf("\n");//进入下一行处理

		
		//处理n_4竖行
		for(i=0; i<s; i++)
		{
			for(j=0; j<l; j++)//------------------------------
			{
				//当前处理数字x[i]为1237
				if(x[j]==1 || x[j]==3 ||x[j]==4 || x[j]==5 || x[j]==7 || x[j]==9)
				{
				
					for(k=0; k<s+1; k++)
						printf(" ");//s-1个空格

					printf("|");//输出笔画
					
				
				}else if(x[j]==2)
				{
				
					printf("|");//输出笔画

					for(k=0; k<s+1; k++)
						printf(" ");//s-1个空格

				}else if(x[j]==0 || x[j]==8 || x[j]==6)
				{
					printf("|");
					
					for(k=0; k<s; k++)
						printf(" ");//s-1个空格

					printf("|");
				}//if
				if(j<l-1)
				{
					printf(" ");//空列
				}
			}//for j

			printf("\n");//该n_2中的下一行处理//并且无需之后再回车
		}//for i

		
		//n_5行处理的群·	·				
		for(i=0; i<l; i++)
		{
			printf(" ");//为竖行留空间
			for(j=0; j<s; j++)
			{
				printf("%c",n_5[x[i]]);
			}
			
			if(i<l-1)
				printf("  ");//空列--changge
			else
				printf(" ");
		}
		printf("\n\n");//进入下一行处理--change

		memset(num, '\0', N);//接受下一组数据
		memset(x, '\0', N);

		scanf("%d ",&s);

		gets(num);

//		if(s && strcmp(num,"0")!=0)
//			printf("\n\n");//进入下一行处理--change
	
	}//while
	

	return 0;
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值