如何在 C++ 中打印等腰三角形
How to print an Isosceles triangle in C++
我正在尝试根据用户在 C++ 中的输入创建一个带有“*”符号的等腰三角形。
例如,用户输入5,我必须得到:
*
**
***
****
*****
****
***
**
*
我只得到:
*
**
***
****
*****
我的 C++ 代码:
void askData(int &n){
cout<<"Enter a number: ";
cin>>n;
}
void print(int A){
for(int j=1;j<=A;j++)
cout<<"*";
cout<<endl;
}
void createIsoscTriangle(int n){
for(int i=1;i<=n;i++){
print(i);
}
int main()
{
int n;
askData(n);
createIsoscTriangle(n);
return 0;
}
如何得到等腰三角形的正确形式?
星星的图案是1
, 2
, 3
, ...
, n
, n - 1
, n - 2
, ...
, 1. 正如 Brian 在评论中提到的那样。因此,每行的星星数将为 n - abs(n - i)
,其中 abs 是 n - i
的绝对值,这应该适用于任何 n
而不仅仅是 5
。
我已将您的 createIsoscTriangle 函数修改为如下内容:
void createIsoscTriangle(int n) {
for(int i = 1; i <= n * 2 - 1; i++)
print(n - abs(n - i));
}
让我们试试 n = 5
。它会打印你提到的数字。
*
**
***
****
*****
****
***
**
*
您只打印序列 1 2 3 4 5
。您还需要一个倒计时循环。
void createIsoscTriangle(int n) {
for(int i = 1; i <= n; i++)
print(i);
for(int i = n-1; i >= 1; i--)
print(i);
}
我正在尝试根据用户在 C++ 中的输入创建一个带有“*”符号的等腰三角形。
例如,用户输入5,我必须得到:
*
**
***
****
*****
****
***
**
*
我只得到:
*
**
***
****
*****
我的 C++ 代码:
void askData(int &n){
cout<<"Enter a number: ";
cin>>n;
}
void print(int A){
for(int j=1;j<=A;j++)
cout<<"*";
cout<<endl;
}
void createIsoscTriangle(int n){
for(int i=1;i<=n;i++){
print(i);
}
int main()
{
int n;
askData(n);
createIsoscTriangle(n);
return 0;
}
如何得到等腰三角形的正确形式?
星星的图案是1
, 2
, 3
, ...
, n
, n - 1
, n - 2
, ...
, 1. 正如 Brian 在评论中提到的那样。因此,每行的星星数将为 n - abs(n - i)
,其中 abs 是 n - i
的绝对值,这应该适用于任何 n
而不仅仅是 5
。
我已将您的 createIsoscTriangle 函数修改为如下内容:
void createIsoscTriangle(int n) {
for(int i = 1; i <= n * 2 - 1; i++)
print(n - abs(n - i));
}
让我们试试 n = 5
。它会打印你提到的数字。
*
**
***
****
*****
****
***
**
*
您只打印序列 1 2 3 4 5
。您还需要一个倒计时循环。
void createIsoscTriangle(int n) {
for(int i = 1; i <= n; i++)
print(i);
for(int i = n-1; i >= 1; i--)
print(i);
}