首页 > 代码库 > SDUST 作业10 Problem I 液晶显示
SDUST 作业10 Problem I 液晶显示
Description
你的朋友刚买了一台新电脑,他以前用过的最强大的计算工具是一台袖珍计算器。现在,看着自己的新电脑,他有点失望,因为他更喜欢计算器上的LC显示器。所以,你决定写一个LC显示风格的程序帮他在电脑上显示数字。
Input
输入包括若干行,每一行有两个整数。输入为两个0表示结束,并且此行不被处理。
每行输入的两个整数s和n,满足1<=s<=10且0<=n<=99 999 999,其中n是要被现实的数字,s是n应该显示的大小(放大的倍数)。
Output
输出的数字是LC显示风格的:使用s个“-”表示水平线和s个“|”竖直线,每个数字刚好占据s+2列和2s+3行,所有没有“-”和“|”的空白处请用空格填满。并且每两个数字之间要有一列空格。
每一行输入数字对应上述一组LC显示风格输出。任意两组数字的输出之间用一个空行分割。
Sample Input
1 #include <stdio.h> 2 char a[12][10]= {"14041","03030","13121","13131","04130","12131","12141","13030","14141","14131"}; 3 void prints(char c,int n) 4 { 5 while(n--)putchar(c); 6 } 7 int main() 8 { 9 int k=2;10 char s[20];11 int first=1;12 while(scanf("%d%s",&k,s)==2&&(k||s[0]!=‘0‘))13 {14 if(!first)printf("\n");else first=0;15 for(int i=0; i<5; i++)16 {17 int t=1;18 for(int j=0; j<k; j++)19 {20 for(int n=0; s[n]!=0; n++)21 {22 if(a[s[n]-‘0‘][i]==‘1‘)23 {24 if(j) t=0;25 else{26 putchar(‘ ‘);27 prints(‘-‘,k);28 putchar(‘ ‘);29 if(s[n+1]!=0)putchar(‘ ‘);30 }31 32 }33 else if(a[s[n]-‘0‘][i]==‘0‘)34 {35 if(j) t=0;36 else{37 prints(‘ ‘,k+2);38 if(s[n+1]!=0)putchar(‘ ‘);39 }40 }41 else42 {43 if(a[s[n]-‘0‘][i]==‘2‘)44 {45 putchar(‘|‘);46 prints(‘ ‘,k+1);47 }48 else if(a[s[n]-‘0‘][i]==‘3‘)49 {50 prints(‘ ‘,k+1);51 putchar(‘|‘);52 }53 else if(a[s[n]-‘0‘][i]==‘4‘)54 {55 putchar(‘|‘);56 prints(‘ ‘,k);57 putchar(‘|‘);58 }59 if(s[n+1]!=0)putchar(‘ ‘);60 }61 }62 if(t)putchar(‘\n‘);63 }64 }65 }66 return 0;67 }
SDUST 作业10 Problem I 液晶显示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。