• NUC1014 排版题.输出排列成菱形的字母


    排版题.输出排列成菱形的字母

    时间限制: 1000ms 内存限制: 65536K

    问题描述
    输入N值,编程输出如下图形
    输入描述
    一个整数N(1 ≤ N ≤ 7 )。
    输出描述
    排列成菱形的大写字符,首字符为Z,以后依次为Y,X...
    样例输入
    3
    样例输出
        Z
      Y   X
    W       V
      U   T
        S
    来源
    {NOJ}


    问题分析:

    这个题是拿《CCF NOI1032 菱形》改写的,没想到不是一次AC的,居然出现PE(格式错误)。坑人的地方是字母之间还有一个空格,肉眼还没看出来!

    这里问题的关键是,首先控制好行,输出多少行要控制好;其次是控制好每一行,一行中通常由空格、字符、空格、字符和换行符号构成。

    一行中,空格、字符、空格和字符的数量与它是第几行构成函数关系。这种函数关系在程序中,通常是用表达式来写的。

    另外,用函数封装功能是一种好的做法。

    程序说明:

    参见链接博文。


    参考链接:CCF NOI1032 菱形


    AC的C++程序如下:

    #include <iostream>
    
    using namespace std;
    
    void diamond(int n)
    {
        char c = 'Z';
    
        // 打印上半三角
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=(n-i)*2; j++)
                printf(" ");
            if(i == 1)
                printf("%c", c--);
            else {
                printf("%c", c--);
                for(int j=1; j<=(2*i-3)*2+1; j++)
                    printf(" ");
                printf("%c", c--);
            }
            printf("
    ");
        }
    
        // 打印下半三角
        for(int i=1; i<=n-1; i++) {
            for(int j=0; j<i*2; j++)
                printf(" ");
            if(i == n - 1)
                printf("%c", c);
            else {
                printf("%c", c--);
                for(int j=1; j<(2*n-2*i-2)*2; j++)
                    printf(" ");
                printf("%c", c--);
            }
            printf("
    ");
        }
    }
    
    int main()
    {
        int n;
    
        cin >> n;
    
        diamond(n);
    
        return 0;
    }




  • 相关阅读:
    移动端开发touchstart,touchmove,touchend事件详解和项目
    我对JVM的理解
    快速排序
    归并排序(Merge sort)
    希尔排序
    插入排序
    选择排序
    冒泡排序(Bubble Sort)
    java设计模式之单例模式
    Java中反射机制的理解
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563861.html
Copyright © 2020-2023  润新知