admin 发表于 2023-12-25 00:34:54

用C++字符 打印输出 从字符A开始 递减 递增的沙漏图形


效果和代码如下
/*

+++++++++++++++++++++++++++++++++++++++++++++++++++++

n=11

ABCDEFGHIJK   i=0 line=57
BCDEFGHIJ   i=1 line=57
CDEFGHI   i=2 line=57
   DEFGH   i=3 line=57
    EFG   i=4 line=57
   F   i=5 line=57
    EFG   i=1 line=81
   DEFGH   i=2 line=81
CDEFGHI   i=3 line=81
BCDEFGHIJ   i=4 line=81
ABCDEFGHIJK   i=5 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=10
ABCDEFGHIJ   i=0 line=57
BCDEFGHI   i=1 line=57
CDEFGH   i=2 line=57
   DEFG   i=3 line=57
    EF   i=4 line=57
   DEFG   i=1 line=81
CDEFGH   i=2 line=81
BCDEFGHI   i=3 line=81
ABCDEFGHIJ   i=4 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=7
ABCDEFG   i=0 line=57
BCDEF   i=1 line=57
CDE   i=2 line=57
   D   i=3 line=57
CDE   i=1 line=81
BCDEF   i=2 line=81
ABCDEFG   i=3 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=13
ABCDEFGHIJKLM   i=0 line=57
BCDEFGHIJKL   i=1 line=57
CDEFGHIJK   i=2 line=57
   DEFGHIJ   i=3 line=57
    EFGHI   i=4 line=57
   FGH   i=5 line=57
      G   i=6 line=57
   FGH   i=1 line=81
    EFGHI   i=2 line=81
   DEFGHIJ   i=3 line=81
CDEFGHIJK   i=4 line=81
BCDEFGHIJKL   i=5 line=81
ABCDEFGHIJKLM   i=6 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=12
ABCDEFGHIJKL   i=0 line=57
BCDEFGHIJK   i=1 line=57
CDEFGHIJ   i=2 line=57
   DEFGHI   i=3 line=57
    EFGH   i=4 line=57
   FG   i=5 line=57
    EFGH   i=1 line=81
   DEFGHI   i=2 line=81
CDEFGHIJ   i=3 line=81
BCDEFGHIJK   i=4 line=81
ABCDEFGHIJKL   i=5 line=81


*/


// 沙漏.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<Windows.h>

char* 生成字符串(OUT char* Astr,char A,int n)
{
        Astr = A;
        //返回从字符 "?"相临的N个字符
        for (int i = 1; i < n; i++)
        {
                Astr = A+i;
        }
        Astr = '\0';
        return Astr;
}

char* 生成空格(OUT char* spacebuf,int n)
{
        //返回从字符 "?"相临的N个字符
        for (int i =0; i < n; i++)
        {
                spacebuf = ' ';

        }
        spacebuf = '\0';
        return spacebuf;
}

int main()
{
        char spacebuf = { 0 };
        char Astr = { 0 };
        int n = 10;

        while(1)
        {
        scanf_s("%d", &n);

        if (n > 30) return n;
        printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n");
        printf("n=%d \r\n", n);
        int 空格数量 = 0;
        int 字符数量 = n - (空格数量 * 2);
        //空格递减
        {
                int i = 0;
               
                for ( 空格数量 = 0; 空格数量 <= n; 空格数量= 空格数量 +1)
                {
                        字符数量 = n - (空格数量 * 2);

                        生成字符串(Astr, 'A' + 空格数量, 字符数量); //字符是按2个递减的 所以要乘2
                       
                        if (字符数量 <= 0) break;
                        printf("%s%s   i=%d line=%d\r\n", 生成空格(spacebuf,空格数量), Astr,i++,__LINE__);
                }
        }
       
        { //++++++++++++++++++++++++++++++++++++++++++
                //如果沙漏中间字符不重复 可以添加以下2行
                空格数量 = 空格数量 - 1; //空格数量按1递减
                字符数量 = 字符数量 + 2; //字符数量按2弟增
        }


        //空格递增
        {
                int i = 0;
               
               
                for (int i = 1; i<=(n)/2;i++)
                {
                        空格数量 = 空格数量 - 1; //空格数量按1递减
                        字符数量 = 字符数量 + 2; //字符数量按2弟增

                        if (字符数量>n) break;

                        生成字符串(Astr, 'A' + 空格数量, 字符数量);                       
                        printf("%s%s   i=%d line=%d\r\n", 生成空格(spacebuf, 空格数量), Astr, i, __LINE__);
                       
                }
        }



        }

       
        while (1)
                getchar();
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧:
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件


admin 发表于 2023-12-25 00:40:45

+++++++++++++++++++++++++++++++++++++++++++++++++++++

n=11

ABCDEFGHIJK   i=0 line=57
BCDEFGHIJ   i=1 line=57
CDEFGHI   i=2 line=57
   DEFGH   i=3 line=57
    EFG   i=4 line=57
   F   i=5 line=57
    EFG   i=1 line=81
   DEFGH   i=2 line=81
CDEFGHI   i=3 line=81
BCDEFGHIJ   i=4 line=81
ABCDEFGHIJK   i=5 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=10
ABCDEFGHIJ   i=0 line=57
BCDEFGHI   i=1 line=57
CDEFGH   i=2 line=57
   DEFG   i=3 line=57
    EF   i=4 line=57
   DEFG   i=1 line=81
CDEFGH   i=2 line=81
BCDEFGHI   i=3 line=81
ABCDEFGHIJ   i=4 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=7
ABCDEFG   i=0 line=57
BCDEF   i=1 line=57
CDE   i=2 line=57
   D   i=3 line=57
CDE   i=1 line=81
BCDEF   i=2 line=81
ABCDEFG   i=3 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=13
ABCDEFGHIJKLM   i=0 line=57
BCDEFGHIJKL   i=1 line=57
CDEFGHIJK   i=2 line=57
   DEFGHIJ   i=3 line=57
    EFGHI   i=4 line=57
   FGH   i=5 line=57
      G   i=6 line=57
   FGH   i=1 line=81
    EFGHI   i=2 line=81
   DEFGHIJ   i=3 line=81
CDEFGHIJK   i=4 line=81
BCDEFGHIJKL   i=5 line=81
ABCDEFGHIJKLM   i=6 line=81
+++++++++++++++++++++++++++++++++++++++++++++++++++++
n=12
ABCDEFGHIJKL   i=0 line=57
BCDEFGHIJK   i=1 line=57
CDEFGHIJ   i=2 line=57
   DEFGHI   i=3 line=57
    EFGH   i=4 line=57
   FG   i=5 line=57
    EFGH   i=1 line=81
   DEFGHI   i=2 line=81
CDEFGHIJ   i=3 line=81
BCDEFGHIJK   i=4 line=81
ABCDEFGHIJKL   i=5 line=81
页: [1]
查看完整版本: 用C++字符 打印输出 从字符A开始 递减 递增的沙漏图形