c - 在 C 中打印这种特定三角形图案的最佳方式/方法是什么?
问题描述
目标是在调用时打印printTriangle(7);
:
+
++
+-+
+--+
+---+
+----+
+++++++
到目前为止,这是我的方法:
int printTriangle(int height)
{
int x, i, j, space;
space = height-1;
for(x=0; x<=height; x++)
{
for(j=0; j<=space; j++)
{
printf(" ");
}
space--;
for(i=0; i<x; i++)
{
printf("+");
}
printf("\n");
}
return 0;
}
它打印这个:
+
++
+++
++++
+++++
++++++
+++++++
我似乎无法找到一种方法来为“-”的内部三角形设置正确的条件,任何人都可以引导我走向正确的方向吗?
解决方案
任何人都可以引导我朝着正确的方向前进吗?
首先我们需要索引系统。您已经有了索引 -x
并且i
是循环迭代器,x
索引行 from 1
to height
,i
索引+
/-
字符 from 0
tox - 1
每一行。
x| for(x=0; x<=height; x++)
0|
1| +
2| ++
3| +-+
4| +--+
5| +---+
6| +----+
7v +++++++
i----0123456--> for(i=0; i<x; i++)
所以首先尝试用词来制定条件,然后将它们转化为索引。例如,我们应该打印+
:
- 在前两行 -
x < 2
- 在最后一行 -
x == height
- 在行的第一个字符上 -
i == 0
- 在行的最后一个字符上 -
i == (x - 1)
在所有其他地方,我们应该打印-
. 你可以试试“我们应该打印-
,当……”,也许你会更容易想象。然后它在条件之间找到合适&&
的||
。全部一起:
for(i=0; i<x; i++) {
if (x < 2 || x == height || i == 0 || i == (x - 1))
printf("+");
else
printf("-");
}
printf("\n");
推荐阅读
- java - 使用 @Timed 注释对方法计时 - 与输入大小相关
- big-o - 递归关系 T(n) = 3T(n-1) + n
- react-native - React Native:导航在组件中不起作用
- javascript - 通过ajax调用发送php对象
- angular - Angular 5. 为什么提供者需要一个组件。喷油器错误
- java - ResourceConfig 实例不包含 REST API 中的任何根资源类异常
- ios - TableView Reload rows Limitation
- python - “ImportError:无法导入名称”使用 flask_sqlalchemy
- stripe-payments - Stripe Billing 的付款信息
- c++11 - 如何阻止 C++ 自动将 double 转换为 int?