图形编程:输入正整数n、m(n≥2,m≥0),编程输出如下两个由星号组成的重叠三角形。 注:n为上下三角形的高,m为下三角形垂直方向偏移) 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 6 0↵ 以文本方式显示 ***********↵ * * * *↵ ** **↵ ** **↵ * * * *↵ ***********↵写一个c语言代码,用一维数组,不定义新函数
时间: 2025-05-20 16:27:14 浏览: 27
### 使用C语言实现重叠三角形
以下是基于问题需求编写的 C 语言代码示例,该程序通过一维数组存储星号字符并输出两个由星号组成的重叠三角形。输入参数 `n` 和 `m` 分别代表第一个和第二个三角形的高度。
```c
#include <stdio.h>
int main() {
int n, m;
// 输入两个三角形的高度
printf("请输入两个三角形的高度 n 和 m:");
scanf("%d %d", &n, &m);
// 计算最大高度以便统一处理
int max_height = (n > m) ? n : m;
// 定义一维数组用于存储每行的星号数量
int stars[max_height];
for (int i = 0; i < max_height; i++) {
if (i < n && i < m) {
// 当前行在两个三角形范围内时叠加星星数量
stars[i] = (i + 1) * 2 - 1 + (i + 1) * 2 - 1;
} else if (i < n || i < m) {
// 只有一个三角形在此范围内的星星数量
stars[i] = ((i < n) ? (i + 1) * 2 - 1 : 0) +
((i < m) ? (i + 1) * 2 - 1 : 0);
} else {
// 超过任意一个三角形范围则无星星
stars[i] = 0;
}
}
// 打印结果
for (int i = 0; i < max_height; i++) {
if (stars[i] > 0) {
// 中心对齐打印星星
for (int j = 0; j < (max_height - i - 1) * 2; j++) {
printf(" ");
}
for (int k = 0; k < stars[i]; k++) {
printf("*");
}
printf("\n");
}
}
return 0;
}
```
#### 解析
上述代码实现了以下功能:
- 用户输入两个三角形的高度 `n` 和 `m`。
- 利用一维数组 `stars[]` 存储每一层的总星号数[^1]。
- 遍历计算每个位置上的星号总数,并考虑两三角形是否重叠的情况[^2]。
- 对于超出任一三角形的部分,仅显示有效部分的星号[^3]。
此方法无需额外定义函数即可完成任务,同时保持逻辑清晰简洁。
---
###
阅读全文
相关推荐







