Description | ||
输出形如 ABCDEDCBA ABCDCBA ABCBA ABA A 的字母三角形。 输入有多个样例,每个样例是一行,每行是一个大写字母。当输入字符是‘#’时结束。样例前需要输出“case 样例号:”。如示例所示。 | ||
Sample Input | ||
C D # | ||
Sample Output | ||
case 1: ABCBA ABA A case 2: ABCDCBA ABCBA ABA A |
思路分析:不妨先从符号一至的倒三角形下手,然后根据循环变量之间的关系来将这些符号替换成为字母;本题还有一个易错的点,注意case后有空格,并且冒号是半角
#include <iostream>
#include<stdio.h>
using namespace::std;
int main()
{
char ch;
int flag = 0;
while (cin >> ch)
{
flag ++;
if (ch == '#')
{
break;
}
//倒三角形行数和字母之间的关系;
int n = ch - 64;//一个字母对应一种行数
char ch2 = 'A';
//进行字母三角形的输出
cout << "case " << flag << ":" << endl;
for (int i = 0; i < n; i++)//行数的循环
{
for (int j = 0; j < i; j++)
{
cout << " ";//对空格的使用
}
for (int k = 0; k < 2 * (n - i) - 1; k++)
{
if (k >= (2 * (n - i) - 2) / 2)
{
cout << ch2--;//过了中间后就直接--
}
else
{
cout << ch2++;//在中间前就++
}
}
cout << endl;//每次k结束后就换行
ch2 = 'A';//每行循环结束后初始化ch2,不然就会从每行最后一个A++变成B了
}
}
}