我想在c ++中创建一个看起来像三角形(或半个钻石)的图案 使用星号:模式应该有1,2,3,4,并以5星这样结束
*
**
***
****
*****
(但直!) 我的代码如下:
-`#包括 using namespace std; int main() {
int size;
cout<<"size:"<<endl;
cin>>size;
int blank=size/2;
int newsize=1;
for (int i=0; i<=size/2; i++)
{
for(int j=blank;j>0;j--)
cout <<" ";
blank--;
for(int j=newsize; j>0; j--)
cout <<"*";
newsize+=2;
cout <<endl;
}
return 0;
} ` 我唯一的问题就是它会像这样显示1,3和5星。
*
***
*****
它只是一个小问题,但我已经改变了代码的不同部分 我似乎没有做对。
有什么建议吗?
感谢 :)
答案 0 :(得分:0)
我不确定你的意思是“但是直接”,所以我暂时忽略它......
从blank
开始与size
相同的值,这样您每次都可以递减值而不必递减一半:
int blank=size;
循环到size
而不是size/2
以获得更多行:
for (int i=0; i<=size; i++)
在空格循环中减去2,得到空格数的一半:
for(int j=blank;j>0;j-=2)
将大小增加一而不是两次以获得更慢的增长:
newsize++;
这应该产生你显示的输出。
我测试了这个以确定,输出是:
*
**
***
****
*****
******
要获得您要求的确切输出,请先填空白:
int blank=size - 1;
答案 1 :(得分:0)
我说得对吗:你想在角色的边界上放一些星号吗?如果是这样,那是不可能的。当以等宽字体显示时,每个星号(或任何其他符号)将位于字符位置的中间,如网格中。您可以在单元格中放置星号,但不能在网格的边框上放置星号。
答案 2 :(得分:0)
int NUMLINES = 5;
void display(int, char);
void main(){
for (int i=1; i<= NUMLINES; ++i){
display((NUMLINES + 1 - i), ' ');
display(( 2 * i - 1 ), '*');
cout << endl;
}
}
void display (int howmany, char symbol){
for (int i = 1; i<=howmany; ++i)
cout << symbol;
}