LQ0196 打印图形程序填空

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0196 打印图形程序填空相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2014初赛 C++ B组E题

题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

小明在X星球的城堡中发现了如下图形和文字:

rank=3

   * 
  * * 
 *   *  
* * * *

rank=5

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

rank=6


小明开动脑筋,编写了如下的程序,实现该图形的打印。

请分析程序流程,填写划线部分缺少的代码。

源代码
C

#include <stdio.h>
#define N 70
#define M 35

void f(char a[][N], int rank, int row, int col)

    if(rank==1)
        a[row][col] = '*';
        return;
    
    
    int w = 1;
    int i;
    for(i=0; i<rank-1; i++) w *= 2;
    
    __________________;
    f(a, rank-1, row+w/2, col);
    f(a, rank-1, row+w/2, col+w);


int main()

    char a[M][N];
    int i,j;
    for(i=0;i<M;i++)
    for(j=0;j<N;j++) a[i][j] = '.';
    
    f(a,6,0,0);
    
    for(i=0; i<M; i++)
        for(j=0; j<N; j++) printf("%c",a[i][j]);
        printf("\\n");
    
    
    return 0;

问题分析
填入“f(a,rank-1,row,col+w/2)”

AC的C语言程序如下:

#include <stdio.h>
#define N 70
#define M 35

void f(char a[][N], int rank, int row, int col)

    if(rank==1)
        a[row][col] = '*';
        return;
    
    
    int w = 1;
    int i;
    for(i=0; i<rank-1; i++) w *= 2;
    
    f(a,rank-1,row,col+w/2);
    f(a, rank-1, row+w/2, col);
    f(a, rank-1, row+w/2, col+w);


int main()

    char a[M][N];
    int i,j;
    for(i=0;i<M;i++)
    for(j=0;j<N;j++) a[i][j] = '.';
    
    f(a,6,0,0);
    
    for(i=0; i<M; i++)
        for(j=0; j<N; j++) printf("%c",a[i][j]);
        printf("\\n");
    
    
    return 0;

以上是关于LQ0196 打印图形程序填空的主要内容,如果未能解决你的问题,请参考以下文章

LQ0172 打印方块程序填空

LQ0179 打印X程序填空

2014_B t5打印图形

LQ0164 打印菱形打印图案

LQ0254 轮换程序填空

LQ0176 杨辉三角程序填空