返回 课程
信奥AC之路-2级
0% 完成
0/0 步骤
-
第一课:字符5 主题|小节
-
第二课 嵌套循环与矩形图案(一)4 主题|小节
-
第三课 嵌套循环与矩形图案(二)3 主题|小节
-
第四课:矩形三5 主题|小节
-
第五课:字符矩形7 主题|小节
-
第六课:直角三角形6 主题|小节
-
第七课:倒三角形7 主题|小节
-
第八课:字符三角形8 主题|小节
-
第九课:字符倒三角形7 主题|小节
-
第十课:平行四边形6 主题|小节
-
第十一课:字符直角三角形5 主题|小节
-
第十二课:左斜三角形6 主题|小节
-
第十三课:等腰三角形6 主题|小节
-
第十四课:倒置等腰三角形7 主题|小节
-
第十五课:上下对称图形4 主题|小节
-
第十六课:复杂对称图形5 主题|小节
-
第十七课:左右对称图形5 主题|小节
-
第十八课:空心图形5 主题|小节
-
第十九课:空心图形3 主题|小节
-
第二十课:嵌套应用4 主题|小节
-
第二十一课:嵌套应用二4 主题|小节
-
第二十二课:嵌套应用三3 主题|小节
-
第二十三课:嵌套应用四3 主题|小节
课 进展
0% 完成
17.4.1 花瓣形状
题目描述:输入一个正整数n,输出一个花瓣形状,由n个并排的等腰三角形组成。
样例输入:
3
样例输出:
A A A
AAA AAA AAA
AAAAA AAAAA AAAAA
代码实现:
int n;
cin>>n; // 读入花瓣数量n
for(int i=1;i<=n;i++){ // 外循环控制行数
for(int k=1;k<=n;k++){ // 中间循环控制花瓣数量,循环n次生成n个并排的三角形
// 打印每个三角形前的空格,数量为n-i
for(int j=1;j<=n-i;j++){
cout<<' ';
}
// 打印三角形的'A',数量为i*2-1(奇数序列)
for(int j=1;j<=i*2-1;j++){
cout<<'A';
}
// 打印每个三角形后的空格,数量为n-i,保持三角形间的距离
for(int j=1;j<=n-i;j++){
cout<<' ';
}
}
cout<<endl; // 每行结束后换行
}
思考:
- 这个图案更为复杂,包含三层嵌套循环
- 最外层循环i控制行数
- 中间层循环k控制并排三角形的数量,从1到n
- 最内层循环有三组,分别控制每个三角形的前导空格、字符和后置空格
- 每个三角形的结构与前面实验中的等腰三角形相同
- 这种结构创建了一个由n个等腰三角形组成的花瓣形状,整体左右对称
17.4.2 蝴蝶形状的上下对称变体
题目描述:输入一个正整数n,输出一个具有上下和左右对称性的蝴蝶形状。
样例输入:
3
样例输出:
A A
AA AA
AAAAAA
AA AA
A A
代码实现:
int n;
cin>>n; // 读入n,表示上半部分的行数
// 打印蝴蝶的上半部分(上宽下窄)
for(int i=1;i<=n;i++){
// 打印左侧字符'A',数量随着i增加而增加
for(int j=1;j<=i;j++){
cout<<'A';
}
// 打印中间的空格,数量为2*(n-i),随着i增加而减少
for(int j=1;j<=2*(n-i);j++){
cout<<' ';
}
// 打印右侧字符'A',数量与左侧相同
for(int j=1;j<=i;j++){
cout<<'A';
}
cout<<endl; // 每行结束后换行
}
// 打印蝴蝶的下半部分(上窄下宽),镜像上半部分
for(int i=n-1;i>=1;i--){
// 打印左侧字符'A',数量随着i减小而减少
for(int j=1;j<=i;j++){
cout<<'A';
}
// 打印中间的空格,数量为2*(n-i),随着i减小而增加
for(int j=1;j<=2*(n-i);j++){
cout<<' ';
}
// 打印右侧字符'A',数量与左侧相同
for(int j=1;j<=i;j++){
cout<<'A';
}
cout<<endl; // 每行结束后换行
}
思考:
- 这个图案结合了左右对称和上下对称的特性
- 上半部分是一个上宽下窄的蝴蝶形(与实验一相同)
- 下半部分是上半部分的镜像,使用i从n-1递减到1的循环
- 整个结构形成了一个完全对称的蝴蝶形状
- 注意上下部分的连接处不重复中间行
- 这种图案展示了如何结合左右对称和上下对称创建更复杂的图形