zoukankan      html  css  js  c++  java
  • 排版题

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

    题目描述

    输入一个高度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("
    ");
    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("
    ");
    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("
    ");
    41         }
    42     }
    43     return 0;
    44 }
    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    腾讯精选50题算法【二叉搜索树的最近公共祖先】
    潜水一周,我精心整理了两个超级有用的职场生存之道
    全球用尽IPv4的一点思考
    Leetcode算法【114. 二叉树展开为链表】
    【翻译】全新16英寸MacBook Pro评测:开发人员的梦想成真
    Medium高赞系列,如何正确的在Stack Overflow提问
    Typora+PicGo+GitHub实现md自带图床效果
    SpringBoot输出日志到文件
    Mybatis用SQL做自连表查询
    IDEA实用插件推荐及使用方法详解
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8430537.html
Copyright © 2011-2022 走看看