开发者社区> D_H_T> 正文

算法训练 输出米字形

简介:  根据输入的正整数n (1  米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母   例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。
+关注继续查看

 根据输入的正整数n (1  米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母
  例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。
  矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线上的字母按字典序依次减小,直到大写字母A。
  矩阵的其它位置用英文句号.填充。

  样例输入一
  3

  样例输出一
  A.A.A
  .BBB.
  ABCBA
  .BBB.
  A.A.A

  样例输入二
  4

  样例输出二
  A..A..A
  .B.B.B.
  ..CCC..
  ABCDCBA
  ..CCC..
  .B.B.B.
  A..A..A

code:

#include <stdio.h>
#include <string.h>

/*将米字图形分为三部分:上,中(一行),下(倒叙的上)*/
int main(){
    char s[25][51];    //上部分用字符串保存下来
    int n, i;
    scanf("%d", &n);
    for(i=0; i<n-1; i++){
        memset(s[i], '.', 2*n-1); //每个字符串先初始化全为'.'
        /*因为每行只有三个字母,因此只需找出这三个字母的位置并赋值就行*/
        s[i][0+i] = 'A'+i; //从头其数第i个
        s[i][(2*n-2)/2] = 'A'+i;//中间位置
        s[i][2*n-2-i] = 'A'+i;//从尾数第i个
        s[i][2*n-1] = '\0';//结束符
        printf("%s\n", s[i]); 
    }
    for(i=0; i<n; i++)   //输出中间的一行
        printf("%c", 'A'+i);
    for(i-=2; i>=0; i--)
        printf("%c", 'A'+i);
    printf("\n");
    for(i=n-2; i>=0; i--)   //最后,逆序输出之前保存的字符串
        printf("%s\n", s[i]);
    return 0;
}

初学小白,如果有可改进之处欢迎评论!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
算法学习之路|逆元取模(二)
逆元取模的进一步了解
1310 0
贪心算法入门典型案例
在N行M列的正整数矩阵中,要求从每行中选出1个数,使得选出的总共N个数的和最大。输入:第一行两个正整数N和M,用空格隔开,表示行数和列数 第2行到第N+1行,每行M个用空格隔开的整数 ,表示矩阵 输出最大总和 1 #include 2 #include 3 #include 4 5 ...
838 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18989 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20690 0
+关注
D_H_T
java,编程语言相关技术专家
42
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载