c++ - 如何使用 C++ 打印蝴蝶图案?
问题描述
所以我正在参加一个 C++ 课程,在此期间我被要求编写一个程序来打印以下蝴蝶图案:
* *
** **
*** ***
********
********
*** ***
** **
* *
所以,这就是我写的:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int row=1; row<=n; row++){
for(int j=1; j<=2*n; j++){
if(j<=row||j>=(2*n)-row){
cout<<"*";
}
else{
cout<<" ";
}
}
cout<<endl;
}
for(int row=n; row>0; row--){
for(int j=1; j<=2*n; j++){
if(j<=row||j>=(2*n)-row){
cout<<"*";
}
else{
cout<<" ";
}
}
cout<<endl;
}
return 0;
}
但我无法得到想要的结果。可能是什么原因?
解决方案
条件j>=(2*n)-row
不对。
您将希望将row
左侧的row
字符和右侧*
的字符设置为空格,而将其他字符设置为空格。
例如,让我们考虑row=1
大小写。
考虑“从左到右”部分,条件j<=row
是正确的,并且在一种情况下是正确的j=1
。
另一方面,考虑“从右”部分,条件j>=(2*n)-row
将在两种情况下为真j=2*n-1
和j=2*n
。
*
要解决此问题,您应该从右数减一。
这可以通过将条件(两个)更改为 来完成j>=(2*n)-(row-1)
。
推荐阅读
- python-3.x - 如何使用python2中保存的python3 pkl文件导入
- python - 在init内部获取窗口宽度和高度
- javascript - 为什么我不能单击导航栏的锚标记?
- javascript - 如何修复“错误:未找到 HTMLHint,...,CodeMirror HTML linting 无法运行。” CodeMirror 中的错误
- javascript - EventSource 在 addEventListener 之前错过了第一条消息
- python - 如何使用模型中的值填充 PDF
- r - 使用 R Blogdown blogdown:::serve_site() 时出错
- c# - 使用 RestSharp 在 multipart/form-data POST 中包含文件时遇到问题
- c# - 当 RegisterEventBus “没有注册 Autofac.ILifetimeScope' 类型的服务时。”
- threadpool - gRPC context.interceptCall() 和 SimpleForwardingServerCallListener