题目分析
输出三角形字符阵列:输出n行由大写字母A开始构成的三角形字符阵列
输入格式
输入在一行中给出一个正整数n(1≤ n <7)。
输出格式
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例
4
输出样例
样例
.
// An highlighted block
4;
A B C D
E F G
H I
J
题目分析
输入一个数字n,打印输出n行的大写字母(由A到Z按顺序),字母连续打印,倒数第n-i行 打印n-i个字母 (i=0,i++)直到n-i=1
行数和字母个数分析
行数和字母个数关系:
行数 ( i->倒数第i行 ) | 字母个数(n=4) |
---|---|
1 | 4 |
2 | 3 |
3 | 2 |
4 | 1 |
··· | ··· |
n-i | 4-2=2 |
n | 1 |
转换为代码
代码
.
// An highlighted block
#include<iostream>
using namespace std;
#include<string>
void test()
{
int n = 0;
cout << "请输入一个1-6的数字:" << endl;
cin >> n;
string arr[] = {"A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
//建一个组数arr[]存放26个字母,通过数组下标获取打印顺序
//记录字母数组应该在哪个位置(下标)开始打印
int k=0;
//外层for 记录打印到第几行
for (int i = n; i >=1; i--)
{
//内层for 记录每行打印的字母个数
for (int j = i; j >=1; j--)
{
cout << arr[k] << " ";
//每打完一行记录当前数组位置并且+1,
//下一次打印从arr[i+1]处开始打印
k++;
}
//按要求打印完一行再换行
cout << endl;
}
}
int main()
{
//调用函数测试
test();
system("pause");
return 0;
}
测试
请输入一个1-6的数字:
6
A B C D E F
G H I J K
L M N O
P Q R
S T
U
请按任意键继续. . .
结语
刚学C++不久,感觉这种双层打印嵌套的题目确实很经典,各位大神如果有更好的答案请指正~