• 打印十字图


    问题描述

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    样例输入2
    3
    样例输出2
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。
    分析如下:

    左边图是输入3时的结果,右边是输入1时的结果,之前曾经想要不要用地递归,查了一下发现没有必要,把图形分成四块,每块又分成三个部分,开个字符数组赋值输出就可以了,很简单

     1 #include<stdio.h>  
     2 #include<string.h>  
     3 int main(void){  
     4     char a[130][130];  
     5     int n, i, j, m;  
     6     int mid_of_row;  
     7     memset( a, '$', 116900 * sizeof(char));  
     8     //这里是一个投机取巧的办法,直接全都赋值成$,之后找'.'的位置就可以了,这也是我写完了以后才想到的  
     9     scanf("%d", &n);  
    10        
    11     mid_of_row = 5 + ( n - 1) * 2;//中线位置  
    12     for( j = 1; j <= 22 * n + 1 ; j++){  
    13         for( i = mid_of_row ; i > j + 1; i--){  
    14             if( j % 2 == 0){  
    15                 // 上三角  
    16                 a[j][i] = '.';  
    17                 // 下三角   
    18                 a[i][j] = '.';  
    19             }  
    20         }  
    21     }  
    22       
    23     // 中间  
    24     for( i = mid_of_row - 1; i >= 1; i--){  
    25         if( i == 1){  
    26             a[i][i] = '.';  
    27         }  
    28         else if( i % 2 == 0){  
    29             a[i][i] = a[i-1][i] = a[i][i-1] = '.';  
    30         }  
    31     }   
    32       
    33     for( i = 1; i <= mid_of_row; i++){  
    34         //左上  
    35         for( j = 1; j <= mid_of_row; j++){  
    36             printf("%c", a[i][j]);  
    37         }  
    38         //右上  
    39         for( j = mid_of_row - 1; j >= 1; j--){  
    40             printf("%c", a[i][j]);  
    41         }  
    42         printf("
    ");  
    43     }  
    44     for( i = mid_of_row - 1; i >= 1; i--){  
    45         // 左下   
    46         for( j = 1; j <= mid_of_row; j++){  
    47             printf("%c", a[i][j]);  
    48         }  
    49         // 右下  
    50         for( j = mid_of_row - 1; j >= 1; j--){  
    51             printf("%c", a[i][j]);  
    52         }  
    53         printf("
    ");  
    54     }  
    55     return 0;  
    56 }  

    这种字符形状输出的问题吧,我见过的通常不难,就是麻烦了点,打出来以后特别有成就感

    ===================================UPDATE===============================

    貌似数组初始化成'.' 然后用这种方法赋值可能更简单

  • 相关阅读:
    Delphi字符串函数大全
    Jackson 工具类使用及配置指南
    Mybatis中javaType和jdbcType对应关系
    Mybatis SqlSessionTemplate 源码解析
    GridView 使用技巧【转】
    Spring JSR250注解
    表格文字不换行
    Sql 分页
    从GridView生成DataTable
    故障诊断:解惑IIS服务器无法添加映射之谜
  • 原文地址:https://www.cnblogs.com/curo0119/p/8400353.html
Copyright © 2020-2023  润新知