posts - 32, comments - 59, trackbacks - 0, articles - 2
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
效果图如下,代码附后
要求,输入第一个数字n,0<n<20,第二个为要显示的数字,要求输出第二个数字,并且每个数字要求占n+2列2n+3行
displaynumber.jpg
  1 /*--------------------------------------------------------------------
  2  *     filename : digitdisplay.c
  3  *     Discribe : display a number
  4  *     Author   : JackRain
  5  *     Date     : 08--28--2005
  6  *     E_mail   : jack.fandlr@gmail.com
  7  *     Test with C-Free 3.5
  8  *-------------------------------------------------------------------*/
  9 
 10 #include <stdio.h>
 11 
 12 
 13 int main()
 14 {
 15     static int digittab[10][2]={{5,0xF},//0
 16                                 {0,0x5},//1
 17                                 {7,0x6},//2
 18                                 {7,0x5},//3
 19                                 {2,0xD},//4
 20                                 {7,0x9},//5
 21                                 {7,0xB},//6
 22                                 {4,0x5},//7
 23                                 {7,0xF},//8
 24                                 {7,0xD}};//9
 25     int i,n,j=0,strline;
 26     char *p,code1= ' ',code2= ' ',code3 = ' ',a1 = ' ',a2= ' ',a3= ' ',a4= ' ';
 27     char cA[15];
 28     printf("Please input two numbers:");
 29     scanf("%d %s",&n,cA);
 30     p = cA;
 31     // output the first line
 32     while(*(p+j) != '\0')
 33     {
 34         printf(" ");
 35         if(digittab[*(p+j)-'0'][0]&4)
 36             code1 = '-';
 37         else
 38             code1 = ' ';
 39         for(strline = 0; strline < n; strline++)
 40             printf("%c",code1);
 41         printf("  ");
 42         j++;
 43     }
 44     printf("\n");
 45     // out put 2~ n+1 lines
 46     for(i = 0; i < n; i++)
 47     {
 48         j = 0;
 49     while(*(p+j)!='\0')
 50      {
 51          a1 = ' ';
 52          a2 = ' ';
 53          switch(digittab[*(p+j)-'0'][1]&0xC)
 54          {
 55             case 0xC:a2='|';
 56             case 0x8: a1 = '|';break;
 57             case 0x4: a2 = '|';break;
 58          }
 59          printf("%c",a1);
 60          for(strline = 0; strline < n; strline++)
 61             printf(" ");
 62          printf("%c ",a2);
 63          j++;
 64      }
 65      printf("\n");
 66     }
 67     // output the middle line
 68     j = 0;
 69     while(*(p+j) != '\0')
 70     {
 71         printf(" ");
 72         if(digittab[*(p+j)-'0'][0]&2)
 73             code2 = '-';
 74         else
 75             code2 = ' ';
 76          for(strline = 0; strline < n;strline++)
 77             printf("%c",code2);
 78          printf("  ");
 79          j++;
 80 
 81     }
 82     printf("\n");
 83     // output n+4~ 2n+2 lines
 84     for(i = 0; i< n;i++)
 85     {
 86         j=0;
 87         while(*(p+j)!='\0')
 88         {
 89             a3 = ' ';
 90             a4 = ' ';
 91             switch(digittab[*(p+j)-'0'][1]&3)
 92             {
 93                 case 3: a3 = '|';
 94                 case 1: a4= '|';break;
 95                 case 2: a3= '|';break;
 96             }
 97             printf("%c",a3);
 98             for(strline = 0; strline<n;strline++)
 99              printf(" ");
100             printf("%c",a4);
101             printf(" ");
102             j++;
103         }
104         printf("\n");
105     }
106     // output the last line
107     j=0;
108     while(*(p+j) != '\0')
109     {
110         if(digittab[*(p+j)-'0'][0]&1)
111         {
112             code3='-';
113         }
114         else
115             code3 = ' ';
116         printf(" ");
117         for(strline = 0 ; strline < n; strline++)
118             printf("%c",code3);
119         printf("  ");
120         j++;
121     }
122     printf("\n");
123     return 0;
124 }
只有注册用户登录后才能发表评论。