我是C++的新手,有一個任務告訴我們輸入一個整數,並使用'*'和'。'來製作一個2 * n + 1大小的領結形狀。 ,例如:使用圓點和'*'畫一個領結
輸入:3
輸出:
*.....*
**...**
***.***
*******
***.***
**...**
*.....*
,所以我想出了這一點:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n+1;i++)
{
for (int p=i;p>=1;p--)
cout<<"* ";
for (int j=n;j>(i-1);j--)
cout<<". ";
for (int j=n;j>i;j--)
cout<<". ";
for (int j=i;j>=1;j--)
cout<<"* ";
cout<<endl;
}
for(int i=n;i>=1;i--)
{
for (int j=i;j>=1;j--)
cout<<"* ";
for (int j=n;j>(i-1);j--)
cout<<". ";
for (int j=n;j>i;j--)
cout<<". ";
for (int j=i;j>=1;j--)
cout<<"* ";
cout<<endl;
}
}
,但我的長相輸出像這樣:
輸入:3
輸出:
*.....*
**...**
***.***
******** //<--1 redundant * at this row//
***.***
**...**
*.....*
所以我不知道有什麼辦法消除它,因爲如果我嘗試調整循環就不會是同樣的形狀了。還是有更高效的方式來完成這項任務?我已經呆了好幾個小時了!謝謝!
什麼是'star'? – user4581301
請嘗試縮進您的代碼。縮進對於編譯器來說並不重要,但對於閱讀代碼的人來說很重要。 –
此外,我建議你花些時間閱讀Eric Lippert的[如何調試小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/),並學習如何使用調試器來逐行執行代碼。 –