2015-11-06 44 views

回答

1

你可以试试这个:

for (int i=6; i>1; i--) 
    { 
     for (int j=0; j<i; j++) 
      cout<<"*"; 

     cout<<endl; 
    } 

输出:

****** 
***** 
**** 
*** 
** 
+0

这是两个嵌套循环,我认为他只想用一个循环, – Jepessen

+1

@Jepessen两个很好 – DevRobot

1

如何while循环:http://ideone.com/ezk6Ax

string s(6, '*'); 
while (s.size() > 1) { 
    cout << s << endl; 
    s.pop_back(); 
} 
1
#include <iostream> 
#include <string> 

int main() 
{ 
    const std::string s("*******"); 
    for (int i = s.size() - 1; i > 1; i--) { 
    std::cout << s.substr(0, i) << std::endl; 
    } 
    return 0; 
} 

http://coliru.stacked-crooked.com/a/10924920bc66f91d

+0

.substr()对于这样一个简单的问题是一项沉重的操作。 –

+0

比创建lambda函数更简单。即使沉重,它也能正常工作。 – Jepessen

1

我的变种:

#include <algorithm> 
#include <iostream> 
#include <iterator> 

int main() 
{ 
    for (size_t i = 6; i >= 2; --i) { 
     std::generate_n(
      std::ostream_iterator<char>(std::cout, ""), i, 
      []() { return '*'; }); 
     std::cout << '\n'; 
    } 
}