C++ 打印字母塔

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define  MAX 26

void test(char* p)
{
    int num = 0; //定义一个变量记录中间的值
    for (int i = 0; i < MAX; i++)
    {
        for (int j = 0; j < MAX-i; j++) //循环打印空格 以中心26为中心,每行需要输出26-i个空格
        {
            printf(" ");
        }
        for (int j = 0; j < (2 * i + 1); j++) //打印字母
        {
            if (i == 0) //如果打印为塔尖则只打印一个A
            {
                printf("A");
            }
            else
            {
                if (j < i + 1) //正序打印
                {
                    printf("%c", p[j]);
                    num++;
                }
                else //倒序打印
                {
                    printf("%c", p[--num-1]);
                }
            }
        }
        if (i != MAX - 1)
            printf("\n");
        num = 0;
    }
}

int main()
{
    char a[26]; //定义一个存放26个字母的数组
    for (int i = 0; i < 26; i++)
    {
        a[i] = ‘A‘ + i;
    }
    test(&a);
    return 0;
}

原文地址:https://www.cnblogs.com/shenji/p/12578678.html

时间: 2024-11-10 20:09:22

C++ 打印字母塔的相关文章

打印字母塔

问题: 编写程序,输出以下形状的字母塔: A ABA  ABCBA   ABCDCBA ......  ABCD..Z..DCBA 分析: 求解此问题有两个关键步骤:一是确定每一行前导空格符的数目:二是按照一定的规律输出大写英文字母.显然,一共将输出26行.所编的程序应能保证最后一行的前导控制符数目至少为0,不妨设最后一行有10个前导控制符,那么倒数第二行应有11个前导控制符,倒数第三行有12个,以此类推,第一行应有35个前导控制符.一般的,若令centralch表示"字母塔"某行位于

sdustoj 打印字母菱形图案

Problem B: 打印字母菱形图案 Time Limit: 1 Sec  Memory Limit: 16 MBSubmit: 2530  Solved: 1769[Submit][Status][Web Board] Description 输出N(N为奇数)行由字母组成的菱形,第1行为字母A,第2行为BCD,第三行为CDEFG,以此类推.菱形上下对称. Input 一个奇数N.0<N<18. Output N行字母组成的菱形图案. Sample Input 7 Sample Outpu

经典多线程问题-轮流打印字母和数字

1.0 synchronized package com.example.demo.study.questions; /** * @ClassName Question13 * @Description: 经典多线程问题-轮流打印字母和数字 * @Author xtanb * @Date 2019/10/22 * @Version V1.0 **/ public class Question13 { private volatile boolean flag = true; private in

C语言打印字母金字塔(第一行是A 第二行是ABA ……)

#include <stdio.h> #include <stdlib.h> int main() { int line;//代表行数 int i; char letter,ch; printf("请输入一个大写字母:"); scanf("%c",&letter); for(line=0;line<=letter-'A';line++) { for(i=0;i<letter-'A'-line;i++) printf(&qu

c语言打印字母三角形

#include <stdio.h> int main(int argc, const char * argv[]) { char cost,top; cost=getchar(); if (cost>='a'&&cost<='z') { top='a'; }else if (cost>='A'&&cost<='Z') { top='A'; } int h=cost-top; for (int j=0; j<=h; j++) { f

c语言实践打印字母三角形

效果如下: int main(void) { char ch = 'A';//当前要打印的字符 int count = 1;//每行要打印字符的个数 for (int i = 0; i < 6; i++,count++) { for (int j = 0; j < count; j++,ch++) { printf("%c",ch); } printf("\n"); } return 1; } 外层循环的count++能不能放到里层循环ch++ 的后面?

循环打印字母数字不大于或不小于6的单词

[[email protected] scripts]# cat array02.sh #!/bin/sh array=(William Randolph Hearst was one of the richest men in 1903.) #1 for word in ${array[*]} do if [ ${#word} -le 6 ];then echo $word fi done echo -e "\033[32m======================\033[0m"

打印升序降序字母金字塔

/* 需求:打印字母金字塔 思路: 外部使用for循环控制行,里面嵌套3个for循环, 一个控制空格打印, 一个控制字母升序打印, 一个控制字母降序打印 样例: 输入:3 输出: A ABA ABCBA */ #include<stdio.h> int main() { int storey, space, i; char ch; printf("Please enter the number of rows to print: "); scanf("%d&quo

循环打印菱形字母

要求:打印出一个菱形的字母,从字母A开始. 代码: package com.huawei.mianshi; public class Demo2 { private static int LINE = 4; public static void main(String[] args) { run(); } private static void run() { //从大写字母A开始 char A = 'A'; //循环的次数i=1代表第一行 for (int i = 1; i <= LINE;