打印字母塔

问题:

编写程序,输出以下形状的字母塔:

      A
      ABA
      ABCBA
      ABCDCBA
     ......
    ABCD..Z..DCBA

分析:

求解此问题有两个关键步骤:一是确定每一行前导空格符的数目;二是按照一定的规律输出大写英文字母。显然,一共将输出26行。所编的程序应能保证最后一行的前导控制符数目至少为0,不妨设最后一行有10个前导控制符,那么倒数第二行应有11个前导控制符,倒数第三行有12个,以此类推,第一行应有35个前导控制符。一般的,若令centralch表示“字母塔”某行位于中央垂线上的那一行字符,如上图字符"I",则该行的前导空格符数目应为‘Z‘-centralch+10,即90-73+10=27,而该行接着输出的一串英文大写字母字符应是由‘A‘递增至centralch,然后由centralch-1递减至’A‘,最后回车换行。由于有固定规律可寻,显见用循环结构,又因为这是确定次数的循环,故易选用for语句。循环控制变量选用字符变量。

 1 #include<stdio.h>
 2 main(){
 3     int i;
 4     char ch,centralch;
 5     printf("\n\n");
 6     for(centralch=‘A‘;centralch<=‘Z‘;centralch++){
 7         for(i=1;i<=‘Z‘-centralch+10;i++)
 8             printf(" ");
 9         for(ch=‘A‘;ch<=centralch;ch++)
10             printf("%c",ch);
11         for(ch=centralch-1;ch>=‘A‘;ch--)
12             printf("%c",ch);
13         printf("\n");
14     }
15 } 

原文地址:https://www.cnblogs.com/geziyu/p/8734851.html

时间: 2024-10-28 13:22:52

打印字母塔的相关文章

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个空格 { prin

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;