当前位置: 代码迷 >> 综合 >> 第五届蓝桥杯【省赛试题5】打印图形
  详细解决方案

第五届蓝桥杯【省赛试题5】打印图形

热度:35   发布时间:2023-10-09 16:16:17.0

题目描述:

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

   *
  * *
 *   *  
* * * *

rank=5
               *                                                      
              * *                                                     
             *   *                                                    
            * * * *                                                   
           *       *                                                  
          * *     * *                                                 
         *   *   *   *                                                
        * * * * * * * *                                               
       *               *                                              
      * *             * *                                             
     *   *           *   *                                            
    * * * *         * * * *                                           
   *       *       *       *  
  * *     * *     * *     * *  
 *   *   *   *   *   *   *   *
* * * * * * * * * * * * * * * *  

ran=6
                               *                                      
                              * *                                     
                             *   *                                    
                            * * * *                                   
                           *       *                                  
                          * *     * *                                 
                         *   *   *   *                                
                        * * * * * * * *                               
                       *               *                              
                      * *             * *                             
                     *   *           *   *                            
                    * * * *         * * * *                           
                   *       *       *       *                          
                  * *     * *     * *     * *                         
                 *   *   *   *   *   *   *   *                        
                * * * * * * * * * * * * * * * *                       
               *                               *                      
              * *                             * *                     
             *   *                           *   *                    
            * * * *                         * * * *                   
           *       *                       *       *                  
          * *     * *                     * *     * *                 
         *   *   *   *                   *   *   *   *                
        * * * * * * * *                 * * * * * * * *               
       *               *               *               *              
      * *             * *             * *             * *             
     *   *           *   *           *   *           *   *            
    * * * *         * * * *         * * * *         * * * *           
   *       *       *       *       *       *       *       *          
  * *     * *     * *     * *     * *     * *     * *     * *         
 *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *       
                                                                      

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

#define N 70void 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[N][N];int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++) a[i][j] = ' ';f(a,6,0,0);for(i=0; i<N; i++){for(j=0; j<N; j++) printf("%c",a[i][j]);printf("\n");}return 0;
}
请仔细分析程序逻辑,填写缺失代码部分。
通过浏览器提交答案。注意不要填写题目中已有的代码。也不要写任何多余内容(比如说明性的文字)

题目答案:

f(a, rank-1, row, col+w/2);

题目思路:

对于打印图形的代码填空题目,我们可以先直接粘贴代码,使其运行,观察运行结果。该题目的代码运行后,发现只打印出了最后一样的图形。在观察需要填充的位置,在该位置一定也是一条递归语句,并且前2个参数一定都一样。 首先尝试row+w/2,col发现图像没有变化,说明row参数不对,再次尝试row+w,col你会发现图形打印在了最后一样的后面,说明row较大,我们把它变小,填写row,col,这是图形打印在了上方,但是图形靠左,同理我们通过对col进行调整最终得到答案。

  相关解决方案