Run ID User Problem Result Memory Time Language Code Length Submit Time
7646291 kingpro 1102 Accepted 168K 0MS C++ 1766B 2010-09-20 23:46:01

 

#include <stdio.h>
void ph(int s){int i=0; for(putchar(' '), i=0; i<s && (putchar('-'), true) || (putchar(' '), false); i++);}
void plv(int s){int i=0; for(putchar('|'), i=0; i<=s && (putchar(' '), true); i++);}
void prv(int s){for(int i=0; i<=s && (putchar(' '), true) || (putchar('|'), false); i++);}
void pbv(int s){int i=0; for(putchar('|'), i=0; i<s && (putchar(' '), true) || (putchar('|'), false); i++);}
void pb(int s){for(int i=0; i<s+2 && (putchar(' '), true); i++);}
void p0(int s, int l){if(l==0 || l==2*s+2){ph(s); return;}if(l==s+1){pb(s); return;}pbv(s);}
void p1(int s, int l){int i=0; if(l==0 || l==s+1 || l==2*s+2){pb(s); return;}prv(s);}
void p2(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;} if(l<s+1){prv(s);return;}plv(s);}
void p3(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;} prv(s);}
void p4(int s, int l){if(l==0 || l==2*s+2){pb(s); return;} if(l<s+1){pbv(s);return;} if(l==s+1){ph(s); return;}prv(s);}
void p5(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;} if(l<s+1){plv(s);return;}prv(s);}
void p6(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;}if(l<s+1){plv(s);return;}pbv(s);}
void p7(int s, int l){if(l==0){ph(s);return;}if(l==s+1 || l==2*s+2){pb(s);return;}prv(s);}
void p8(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;}pbv(s);}
void p9(int s, int l){if(l==0 || l==s+1 || l==2*s+2){ph(s); return;}if(l<s+1){pbv(s); return;} prv(s);}
void (*p[10])(int s, int l)={p0,p1,p2,p3,p4,p5,p6,p7,p8,p9};
int main()
{
	int s; char ns[10];
	while(scanf("%d%s", &s,ns), s!=0)
		for(int i=0, d=2*s+3; i<d || (putchar('\n'), false); i++)
			for(int j=0; ns[j]!='\0' && (p[ns[j]-'0'](s, i), putchar(' '), true) || (putchar('\n'), false); j++);
	return 0;
}

 

液晶打印数字 纯模拟题。将行为分成ph(打印一横直线) plv(打印左边竖线) prv(打印右边竖线) pbv(打印两边竖线) pb(打印一行空白)

函数指针数组,便于调用~~~简单

 posted on 2010-09-20 23:53  步碎酒散花醉  阅读(844)  评论(0)    收藏  举报