nyoj 还是打印菱形

60 篇文章 1 订阅


                                                                                                                        还是打印菱形

描述

这个菱形大家熟悉吧。

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

现在要求的是打印这样的菱形:不要*号,要最外层是字母A,然后里一层是B,再里一层是C···这样呢?

    A
   ABA
  ABCBA
   ABA
    A


输入
第一行是一个正整数N(N≤25),代表有N组测试数据。
每一组数据包括一个正整数M(1≤M≤25),表示菱形的半径(直径就是M*2+1)。
输出
对于每组数据,输出要求打印的菱形。
样例输入
1
2
样例输出
   A
  ABA
 ABCBA
  ABA
   A

 
 

   ps:为什么这么难的题是难度为1的题。。。。主要是格式控制

代码示例:

#include <stdio.h>
int main()
{
    int t,m;
    scanf("%d",&t);
    char flag= 'A';
    while(t --)
    {
        scanf("%d",&m);
        int i,j,k;
        for(i=1; i<=m+1; i++)//上三角有m行所以循环m次
        {
            flag = 'A';
            for(j=1; j<=m+1-i; j++)//输出上三角旁边的空格
            {
                printf(" ");
            }
            for(k=1; k<=i; k++)//输出后面紧跟的字母,先输出左三角
            {
                printf("%c",flag);
                flag++;//字母递增
            }
            for(k = i + 1; k <=2*i - 1; k ++)//输出右三角
            {
                printf("%c",flag - 1-1);//首先这里第一次减一是由于右三角是到这输出的所以要递减,第二个减一是由于右三角是从第二行才输出字母的所以要减一
                flag--;//字母递减
            }
            printf("\n");//每完成一行都要换行
        }
        for(i=m ; i>=0; i--)//下三角,将其倒着便利就和上面的上三角for一样
        {
            flag = 'A';
            for(j=m -i; j>=0; j--)//和上面的一样
            {
                printf(" ");
            }
            for(k=i - 1; k>=0; k--)//一样
            {
                printf("%c",flag);
                flag++;
            }
            for(k = 2 * i - 3; k >=i - 1; k --)//由于下三角只有m行所以i=i-1,2*i-1=2*(i-1)-1=2*i-3
            {
                printf("%c",flag - 1-1);//同上
                flag--;
            }
            printf("\n");
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值