蓝桥杯 历届试题 打印图形

来源:互联网 发布:计算机与网络 期刊 编辑:程序博客网 时间:2024/05/16 19:03

                                                  打印图形
小明在X星球的城堡中发现了如下图形和文字:
rank=3
   * 
  * * 
 *   *  
* * * *
rank=5
               *                                                      
              * *                                                     
             *   *                                                    
            * * * *                                                   
           *       *                                                  
          * *     * *                                                 
         *   *   *   *                                                
        * * * * * * * *                                               
       *               *                                              
      * *             * *                                             
     *   *           *   *                                            
    * * * *         * * * *                                           
   *       *       *       *  
  * *     * *     * *     * *  
 *   *   *   *   *   *   *   * 
* * * * * * * * * * * * * * * *  
ran=6
                               *                                      
                              * *                                     
                             *   *                                    
                            * * * *                                   
                           *       *                                  
                          * *     * *                                 
                         *   *   *   *                                
                        * * * * * * * *                               
                       *               *                              
                      * *             * *                             
                     *   *           *   *                            
                    * * * *         * * * *                           
                   *       *       *       *                          
                  * *     * *     * *     * *                         
                 *   *   *   *   *   *   *   *                        
                * * * * * * * * * * * * * * * *                       
               *                               *                      
              * *                             * *                     
             *   *                           *   *                    
            * * * *                         * * * *                   
           *       *                       *       *                  
          * *     * *                     * *     * *                 
         *   *   *   *                   *   *   *   *                
        * * * * * * * *                 * * * * * * * *               
       *               *               *               *              
      * *             * *             * *             * *             
     *   *           *   *           *   *           *   *            
    * * * *         * * * *         * * * *         * * * *           
   *       *       *       *       *       *       *       *          
  * *     * *     * *     * *     * *     * *     * *     * *         
 *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *       
小明开动脑筋,编写了如下的程序,实现该图形的打印。

答案:f(a,rank-1,row, col + w/2)

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-family:Microsoft YaHei;font-size:18px;">#</span>define N 70  
  2.   
  3. void f(char a[][N], int rank, int row, int col)  
  4. {  
  5. if(rank==1){  
  6. a[row][col] = '*';  
  7. return;  
  8. }  
  9.   
  10. int w = 1;  
  11. int i;  
  12. for(i=0; i<rank-1; i++) w *= 2;  
  13.   
  14. ____________________________________________;  
  15. f(a, rank-1, row+w/2, col);  
  16. f(a, rank-1, row+w/2, col+w);  
  17. }  
  18.   
  19.   
  20. int main()  
  21. {  
  22. char a[N][N];  
  23. int i,j;  
  24. for(i=0;i<N;i++)  
  25. for(j=0;j<N;j++) a[i][j] = ' ';  
  26.   
  27. f(a,6,0,0);  
  28.   
  29. for(i=0; i<N; i++){  
  30. for(j=0; j<N; j++) printf("%c",a[i][j]);  
  31. printf("\n");  
  32. }  
  33.   
  34. return 0;  
  35. }  

最终结果:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #define N 70  
  2.   
  3. void f(char a[][N], int rank, int row, int col)  
  4. {  
  5.     if(rank==1)  
  6.     {  
  7.         a[row][col] = '*';  
  8.         return;  
  9.     }  
  10.   
  11.     int w = 1;  
  12.     int i;  
  13.     for(i=0; i<rank-1; i++) w *= 2;  
  14.   
  15.     f(a,rank-1,row, col + w/2);  
  16.     f(a, rank-1, row+w/2, col);  
  17.     f(a, rank-1, row+w/2, col+w);  
  18. }  
  19.   
  20.   
  21. int main()  
  22. {  
  23.     char a[N][N];  
  24.     int i,j;  
  25.     for(i=0; i<N; i++)  
  26.         for(j=0; j<N; j++) a[i][j] = ' ';  
  27.   
  28.     f(a,6,0,0);  
  29.   
  30.     for(i=0; i<N; i++)  
  31.     {  
  32.         for(j=0; j<N; j++) printf("%c",a[i][j]);  
  33.         printf("\n");  
  34.     }  
  35.   
  36.     return 0;  
  37. }  
0 0
原创粉丝点击