找了一些視頻教程,課程的示例是輸入一個三角形
要輸入這樣的圖案,思路是可以進行拆解,分為兩三角形分別輸出,先輸入一部分,比如,先輸出上半部分三角形:
找到規律,可以發現,上面的三角形是7顆星,也就是說,我們要每次循環增加2顆星,下一行比上一行多兩顆星 也就是遞增的方式,逐次增加,可以這樣寫
for(int i = 1;i<7;i+=2)
{
}
這樣一來,我們就可以讓他循環5次
第二步,循環5次之后要輸入*來組成一個三角形,也是每次要增加,第一行,要輸入一顆*,第二行就是三顆*....到第五行輸出七顆*
所以要在上面的循環體內再加一層for循環,那么可以這樣寫
for(int i = 1;i<5;i+=2)
{
for(int a = 1;a < i ;++a)
{
cout << "*";
}
}
然后在第一for循環里加上換行
for(int i = 1;i<5;i+=2)
{
for(int a = 1;a < i ;++a)
{
cout << "*";
}
cout << endl;
}
然后測試一下,看下輸出的是否正確
這樣就輸出了上半部分,那下再來考慮下半部分,下半部分就是一個遞減的過程,也就是說一開始,就要輸入五顆星
那么循環體就要和上面寫的相反,循環的初始數要減少2,7顆星已經輸出過了,我們少輸出一行,所以要減2,然后每次循環遞減2
for(int j = 5;j>=1;j-=2)
{
for(int b =1; b<j; ++b)
{
cout<<"*";
}
cout<<endl;
}
然后一起運行
OK,下面來點擴層,如果要輸出一個完整的三角型,像這樣:
首先我們可以這樣來拆分,第一步,我們輸入空格,這個空格,我們想象成一個上一個例子的下半截,那么可這樣寫,最外層的循環體寫法和上面一樣:
for(int i=1;i<=10;++i)
{
for (int c = 1; c <=10 - i; ++c)
{
cout << "- ";
}
}
這里提一下,為什么是i<=10,而不是i<10?
假設,如果是i<10,那么輸出的時候,就會少一行,因為循環到了9這里,就停了,
為了方便直觀的看到這個效果,我們把i<=10,改成i<10測試一下
可以看到差了一行,所以我們就要把<10,改成i<=10
好了,這一步輸出""空來占位,然后來輸出*號的問題 ,輸出10行,每次輸入*,用空格來間格一下
for(int a=1;a<=i;++a)
{
cout<< " " << "*";
}
然后在最外層,加一個換位符
for(int i=1;i<=10;++i)
{
for (int c = 1; c <=10 - i; ++c)
{
cout << " ";
}
for(int a=1;a<=i;++a)
{
cout<< " " << "*";
}
cout<<endl;
}
最終的效果,
這里也是拋磚引玉,網上的大佬太多,學習的過程中,不能只跟着視頻教程的思維走,也要有自己的思考,在理解的同時,學會舉一反三.歡迎留言交流.