1102解题报告

这个题目的难点在于怎么想办法让图形和数字建立映射关系,刚开始做这个题目的时候想着将0到9这十个数字的每一个数字映射到一个模型.可是试了一下,感觉不行 

因为题目要输出的不是仅仅一个数字,而是一行数字,并且是可伸缩的. 所以要想其它的办法. 观察 这些电子钟数字的特点 其实一共有7个笔画组成 将他们分别定义成7个部分

每一笔画有哪些数字包含了就将他们记录下来. 这样从1 到7 就将这7个笔画都记录下来了.这样一次输出一行 移动有5行需要输出  程序如下

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

int main() {
	 int s;
	 char num[9];
	 int i,j;
	 int emp;
	 char b1[11]={'-',' ','-','-',' ','-','-','-','-','-'};
	 char b2[11]={'|','|',' ',' ','|','|','|',' ','|','|'};
	 char b3[11]={'|',' ','|','|','|',' ',' ','|','|','|'};
	 char b4[11]={' ',' ','-','-','-','-','-',' ','-','-'};
	 char b5[11]={'|','|','|',' ',' ',' ','|',' ','|',' '};
	 char b6[11]={'|',' ',' ','|','|','|','|','|','|','|'};
	 char b7[11]={'-',' ','-','-',' ','-','-',' ','-','-'};

	 while(1) {
	     memset(num,0,9); 
		 scanf("%d %s",&s,num);
		 if(s==0) break;
	 	 for(i=0;i<strlen(num);i++) {
			 printf(" ");
			 for(j=0;j<s;j++)	
				printf("%c",b1[num[i]-'0']);
			 printf("  ");
		 }
	 	 printf("\n");

	 	 for(j=0;j<s;j++) { 
		 	 for(i=0;i<strlen(num);i++) {
			 	 printf("%c",b2[num[i]-'0']);
				 for(emp=0;emp<s;emp++) 
					 printf(" ");
			 	 printf("%c",b3[num[i]-'0']);

				 printf(" ");
	 	 }
		 printf("\n");
		 }

		 for(i=0;i<strlen(num);i++) {
			 printf(" ");
			 for(j=0;j<s;j++) 
			 	 printf("%c",b4[num[i]-'0']);
	 	 	 printf("  ");
		 }
	 	 
		 printf("\n");
		 for(j=0;j<s;j++) {
		 	 for(i=0;i<strlen(num);i++) {
			 	 printf("%c",b5[num[i]-'0']);
	 	 	 	 for(emp=0;emp<s;emp++) printf(" ");
				 printf("%c",b6[num[i]-'0']);
				 printf(" ");
			 }
		 printf("\n");
		 }

		 for(i=0;i<strlen(num);i++) {
			 printf(" ");
		 	 for(j=0;j<s;j++) 
			 	 printf("%c",b7[num[i]-'0']);
			 printf("  ");
		 }
	 	 
		 printf("\n");
	 }

}


你可能感兴趣的:(c,图形)