大狸子


私信TA

用户名:dotcpp0608738

访问量:69

签 名:

等  级
排  名 3734
经  验 1776
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 常州大学
专  业

  自我简介:

TA的其他文章

简单for循环
浏览:37

解题思路:1、根据对称性,只看前n/2行即可

               2、发现奇数行和偶数行的规律

                奇数行i/2个*-,结尾i/2个-*   中间全是*

                 偶数行i/2个*-,结尾i/2个-* 中间全是-

参考代码:

#include <iostream>

using namespace std;

int n;

int main() {

    cin >> n;

    for (int i = 1; i <= n/2; i++) {

        if (i % 2 == 0) {

            for (int j = 0; j < i / 2; j++) {

                cout << "* ";

            }

            for (int j = 0; j < (n - 2*i); j++) {

                cout << " ";

            }

            for (int j = 0; j < i / 2; j++) {

                cout << " *";

            }

        }

        else {

            for (int j = 0; j < i / 2; j++) {

                cout << "* ";

            }

            for (int j = 0; j < (n - 2 * (i - 1)); j++) {

                cout << "*";

            }

            for (int j = 0; j < i / 2; j++) {

                cout << " *";

            }


        }

        cout << endl;

    }

    for (int i = n / 2; i > 0; i--) {

        if (i % 2 == 0) {

            for (int j = 0; j < i / 2; j++) {

                cout << "* ";

            }

            for (int j = 0; j < (n - 2 * i); j++) {

                cout << " ";

            }

            for (int j = 0; j < i / 2; j++) {

                cout << " *";

            }

        }

        else {

            for (int j = 0; j < i / 2; j++) {

                cout << "* ";

            }

            for (int j = 0; j < (n - 2 * (i - 1)); j++) {

                cout << "*";

            }

            for (int j = 0; j < i / 2; j++) {

                cout << " *";

            }


        }

        cout << endl;


    }


    return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区