如果我想让金字塔的顶部和底部宽度自定,该怎么做调整?
时间: 2024-10-23 20:14:30 浏览: 7
基于卷积自编码器和图像金字塔的布料缺陷检测python实现源码+详细文档说明
如果你想让金字塔的顶部和底部的宽度可以根据用户输入或其他条件自由设定,你可以稍微修改 `print_pyramid` 函数。这里提供一个示例,允许用户输入顶部和底部的宽度:
```c
#include <stdio.h>
#include <string.h>
void print_pyramid(char str[], int top_width, int bottom_width) {
int len = strlen(str);
// 打印顶部
for (int i = 0; i < top_width; ++i) {
for (int j = 0; j <= i; ++j) {
printf("%c ", str[len - 1 - j]);
}
printf("\n");
}
// 中间部分,按行填空
for (int k = top_width; k < len - bottom_width + 1; ++k) {
for (int l = 0; l < k - top_width; ++l) {
printf(" ");
}
printf("%s", str + top_width); // 从输入字符串开始打印
for (int m = 0; m < bottom_width - 1; ++m) {
printf(" ");
}
printf("\n");
}
// 打印底部
for (int i = 0; i < bottom_width; ++i) {
for (int j = 0; j <= i; ++j) {
printf("%c ", str[len - 1 - top_width - j]);
}
printf("\n");
}
}
int main() {
char input[SIZE];
printf("请输入一行字母(不超过10个): ");
fgets(input, SIZE, stdin);
input[strcspn(input, "\n")] = '\0';
int top_width, bottom_width;
printf("请输入顶部宽度和底部宽度(各不超过10): ");
scanf("%d %d", &top_width, &bottom_width);
if (top_width + bottom_width > strlen(input)) {
printf("宽度总和超过字符串长度,无法构建金字塔。\n");
return 1;
}
print_pyramid(input, top_width, bottom_width);
return 0;
}
```
现在,当用户运行此程序并指定顶部和底部的宽度时,金字塔会相应地调整。如果宽度之和超过了字符串长度,则会给出错误提示。
阅读全文