目前这个问题程序复杂无所谓,只要能出运行结果就好。
一定要用C++的方法解答,不然无法采纳,谢谢配合
是空心的吗?还是实心的?
问题在哪
这几个图形其实很类似,找到打印规律就可以了,比如打印空心菱形:
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 0; i<n; i++) // 分为上半层打印和下半层打印,首先打印上半层,外部控制行数循环i
{
for (int j = 0; j<(n - 1 - i); j++) // 打印出的符号只有前面的空格和后面的*号,而控制打印空格和*号的循环应是同级循环
{
cout << " "; // 首先打印空格,在上半层中,空格的个数是逐渐减少的,所以for语句中的判决条件
} // 应控制逐渐变小来控制空格的输出越来越少
for (int j = 0; j < 2 * i + 1; j++) // 打印*号时,因为*号的个数是逐渐增加的,所以应控制循环条件逐渐增大
{
if (j == 0 || j == 2 * i)
cout << "*"; //在两端时打印*号
else
cout << " ";
}
cout << endl;
}
for (int i = 0; i < n - 1; i++) // 下半层打印开始
{
for (int j = 0; j < i + 1; j++) // 和上半层空格相反,空格数是逐渐增加的
{
cout << " ";
}
for (int j = 0; j < 2 * (n - 1) - (1 + 2 * i); j++) // *号的循环控制语句的判决条件我得不出来,看的别人的,但是思路是这样嘛,觉得自己蠢毙了
{
if (j == 0 || j == 2 * (n - i - 2))
cout << "*";
else
cout << " ";
}
cout << endl;
}
return 0;
}
#include
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 0; i<n; i++)
for (int j = 0; j<(n - 1 - i); j++)
{
cout << " ";
}
for (int j = 0; j < 2 * i + 1; j++)
{
if (j == 0 || j == 2 * i)
cout << "";
else
cout << " ";
}
cout << endl;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < i + 1; j++)
{
cout << " ";
}
for (int j = 0; j < 2 * (n - 1) - (1 + 2 * i); j++)
{
if (j == 0 || j == 2 * (n - i - 2))
cout << "";
else
cout << " ";
}
cout << endl;
}
return 0;
}
找到规律,switch判断要哪种吧