排版题

第一种情形:规律性比较强的题目

题目描述

输入一个高度h,输出一个高为h,上底边为h的梯形。

 

输入格式

 一个整数h(1<=h<=1000)。

 

输出

 h所对应的梯形。

 

样例输入

5

样例输出

        *****
      *******
    *********
  ***********
*************

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     int h;
 7     int max,temp;
 8     int i,j;
 9 
10     while( scanf("%d",&h)!=EOF)
11     {
12         max = h+( h-1)*2;  //计算最后一行包含的*个数
13         for( i=1; i<=h; i++)
14         {
15             temp = (h-i)*2;   //计算每一行的空格个数
16             for( j=1; j<=max; j++)
17             {
18                 if( temp )
19                 {
20                     printf(" ");
21                     temp --;
22                 }
23                 else printf("*");
24             }
25             printf("\n");
26         }
27     }
28 
29     return 0;
30 
31 }

 

第二种情形是不规则的图形输出,可以考虑使用二维数组(类似坐标系)

题目描述:

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

输入:

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

输出:

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

样例输入:
11 B A
5 @ W
 
样例输出:

  AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
  AAAAAAAAA

 

   @@@
@WWW@
@W@W@
@WWW@
   @@@

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     char a,b,tmp;
 7     int n;
 8     int flag = 1;  //判断是否是第一组数据
 9     int i,j,k;
10     int x,y;
11     int out[82][82];
12 
13     while( scanf("%d %c %c",&n,&a,&b)==3){
14         if( flag )  flag = 0;
15         else printf("\n");
16 
17         for( i=1,j=1; i<=n; i+=2,j++){
18             x = y = n/2+1;   //中心位置(n时奇数)
19             x -= j-1;
20             y -= j-1;       //每个圈左上角坐标
21             tmp = j%2==1?a:b;  //j为奇数时使用第一个字符,偶数使用第二个
22             for( k=1; k<=i; k++){
23                 out[x+k-1][y] =tmp;  //上边
24                 out[x][y+k-1] =tmp;  //左边
25                 out[x+k-1][y+i-1] = tmp;  //下边
26                 out[x+i-1][y+k-1] = tmp; //右边 
27             }
28         }
29         if( n!=1 ){
30             //将四角置为空格
31             out[1][1]=' ';
32             out[n][1]=' ';
33             out[1][n]=' ';
34             out[n][n]=' ';
35         }
36         for( i=1; i<=n; i++){
37             for( j=1; j<=n; j++){
38                 printf("%c",out[i][j]);
39             }
40             printf("\n");
41         }
42     }
43     return 0;
44 }

 

posted @ 2018-02-08 10:53  yuxiaoba  阅读(192)  评论(0编辑  收藏  举报