C++ 菱形字母金字塔

【问题描述】

根据输入的整数n,输出对称的菱形字母塔。该字母塔有2*n-1行,每一行有若干个空格字符和大写英文字母组成。

【输入形式】

输入一个自然数n(1<=n<=26)

【输出形式】
输出由2*n-1行大写英文字母和空格组成的字母塔,其规律请见样例输出。其中的第n行最左面没有空格,每一行的右侧也没有空格。

【样例输入】

4
【样例输出】

4.jpg

 

【题目分析】

本题适合初学者对字符和循环嵌套的练习。

1.定义变量及输入。

int n,i,k,j;
    char ch='A';//字符调用使用单引号
   cin>>n;

2.进行前半部分,即列数增加的输出。

for(i=1;i<=n;i++) //使用i来换行
   {    k=0;
       while(n-i>k)
         {cout<<" ";
         k++;
    	}    //输出每一行前面的空格
          for(j=0;j<i;j++)
		   cout<<(char)(ch+j);//输出字符从A开始增加的
		   while(j!=1)
            {
            	cout<<(char)(ch+j-2);
            	j--;
			}//输出从最大的逐个减小的字符,直到取到A停止
			cout<<endl;//每一行结束要换行
			
  }

3.后半部分,即列数减小的行。

  for(i-=2;i!=0;i--)//上个循环最后i的值为最长行的行数+1,因此先将i-2作为初始的行
     {k=0;
       while(n-i>k)//输出每一行前面的空格
         {cout<<" ";
         k++;
    	}
          for(j=0;j<i;j++)//输出递增字符
		   cout<<(char)(ch+j);
		   while(j!=1)//输出递减字符
            {
            	cout<<(char)(ch+j-2);
            	j--;
			}
			cout<<endl;//每一行最后记得要换行!!!
			
	 }

【完整代码】

#include <iostream>
using namespace std;
int main()
{   int n,i,k,j;
    char ch='A';
   cin>>n;
   for(i=1;i<=n;i++)
   {    k=0;
       while(n-i>k)
         {cout<<" ";
         k++;
    	}
          for(j=0;j<i;j++)
		   cout<<(char)(ch+j);
		   while(j!=1)
            {
            	cout<<(char)(ch+j-2);
            	j--;
			}
			cout<<endl;
			
  }
  for(i-=2;i!=0;i--)
     {k=0;
       while(n-i>k)
         {cout<<" ";
         k++;
    	}
          for(j=0;j<i;j++)
		   cout<<(char)(ch+j);
		   while(j!=1)
            {
            	cout<<(char)(ch+j-2);
            	j--;
			}
			cout<<endl;
			
	 }
  

return 0;
}

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值