打印两个反向空心矩形,然后在其内部打印两条对角线
Printing two reverse hollow rectangles then printing two diagonals inside them
我正在尝试编写用于构建两个空心矩形的代码。空心矩形画了两条对角线,一直画到一半。把它分成两个直角三角形和中间的另一个三角形。其中一个会向下反转。它看起来像:
********************
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
** **
********************
********************
** **
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
********************
有人能帮我写代码吗?宽度和长度由长度以上图像的用户为10,宽度为20。
我能够构建空心矩形;它们不是主要问题,当我想打印对角线时,问题就来了。尝试了各种条件,但都不起作用。
以下是一些利用垂直对称性的代码。full_j
从上到下,i
从左到右。边界很容易。对于上对角线,观察i
和j
始终相等,从1,1开始。对于下对角线,观察i+j
是一个常数,比如c
,并且它经过i,j
=length,1
,因此经过c = length+1
。
void print_diagonals_in_rectangles(int width, int length)
{
int i, j, full_j;
for (full_j = -width; full_j <= width; ++full_j)
{
j = full_j;
if (j < 0)
j = -j; // abs(full_j)
for (i = 1; i <= length; ++i)
{
if (j == 0)
printf(" "); // empty in the center
else if (j == 1 || j == width || i == 1 || i == length // the borders
|| i + j == length + 1 || i == j) // the diagonals
printf("*");
else
printf(" "); // all the rest empty
}
printf("n");
}
}
以下是它为10、20打印的内容:
********************
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
** **
********************
********************
** **
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
********************
对于7,7:
*******
** **
* * * *
* * *
* * * *
** **
*******
*******
** **
* * * *
* * *
* * * *
** **
*******
编辑:删除了使用三元运算符(…?…:…(的版本。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将函数类成员映射到类本身内部
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 打印两个反向空心矩形,然后在其内部打印两条对角线
- 打印出浮点数的内部十六进制
- 如何从主内部的数组打印总计
- 如何在 for 循环内部或外部打印双精度变量
- 在C 内部打印,但在情况之外打印
- 如何打印元素的地图内部的矢量
- 在c++中的函数内部打印2D阵列
- 启用从库文件的代码内部打印
- 用c++递归地打印类内部的链表