所以我写了我的代码,我必须在不同的位置得到正确的三角形。这是我的代码:
#include <iostream>
using namespace std;
int main ()
{
for ( int i = 1 ; i <= 10 ; ++i ) {
for ( int j = 1 ; j <= i ; j++ ) {
if ( j <= i )
cout << "*";
}
cout << endl;
}
cout <<"\n";
for ( int i = 10 ; i >= 1 ; --i ) {
for ( int j = 1 ; j <= i ; j++ ) {
cout << "*";
}
cout << endl;
}
cout <<"\n";
int i , j;
for ( i = 1 ; i <= 10 ; i++ ) {
for ( j = 1 ; j < i ; j++ ) {
cout << " ";
}
for ( j = i ; j <= 10 ; ++j ) {
cout << "*";
}
cout << endl;
}
cout <<"\n";
int k , l ;
for ( k = 1 ; k <= 10 ; k++ ) {
for ( l = k ; l < 10 ; l++ ) {
cout << " ";
}
for ( l = 1 ; l <= k ; l++ ) {
cout << "*";
}
cout << endl;
}
system ("pause");
return 0 ;
}
而不是像我的代码一样低于另一个,输出应该像这样并排:
* *************** *************** *
** ************** ************** **
*** ************* ************* ***
**** ************ ************ ****
***** *********** *********** *****
****** ********** ********** ******
******* ********* ********* *******
******** ******** ******** ********
********* ******* ******* *********
********** ****** ****** **********
*********** ***** ***** ***********
************ **** **** ************
************* *** *** *************
************** ** ** **************
*************** * * ***************
在某种程度上,下面的这个提示应该帮助我使用for循环,因为问题要求显示所需的形状任何人都可以帮助?非常感谢。
// needs additional counter for B and C who rely on decremented counting
for(int i=1, j=10; i<=10; i++, j--){
// A
for(int k=1; k<=10; k++){
std::cout << ((k <= i) ? '*' : ' ');
}
std::cout << " ";
// B
for(int k=1; k<=10; k++){
std::cout << ((k <= j) ? '*' : ' ');
}
std::cout << " ";
// C
for(int k=10; k>=1; k--){
std::cout << ((k <= j) ? '*' : ' ');
}
std::cout << " ";
// D
for(int k=10; k>=1; k--){
std::cout << ((k <= i) ? '*' : ' ');
}
std::cout << std::endl;
}
}
答案 0 :(得分:0)
您可以将外循环中的所有内循环包装在一起。只需确保它们在需要时也能产生空间。
对于前两个三角形,这将如下所示:
#include <iostream>
using std::cout;
using std::endl;
int main (){
for ( int i = 0 ; i < 10 ; i++ ) {
for ( int j = 0 ; j < 10 ; j++ ) {
if ( j <= i ){
cout << "*";
} else {
cout << " ";
}
}
for ( int j = 0 ; j < 10 ; j++ ) {
if ( j >= i ){
cout << "*";
} else {
cout << " ";
}
}
cout << endl;
}
}
(正在运行的版本:http://www.cpp.sh/5zqei)
但是评论中的数组是更好的方法,你也应该尝试一下。如果不是为了你自己的运动。
编辑:将循环更改为0..9。习惯这个变体,只是为了与像数组这样的容器上的迭代一致。