C99,输入一个整数n,(2<=n<=20),输出一个空心菱形,其中每个边由n个'*'组成
时间: 2024-09-28 09:07:23 浏览: 28
在C99标准下,你可以创建一个函数来接收用户输入的整数n,然后生成一个由n个'*'组成的空心菱形。下面是一个简单实现的例子:
```c
#include <stdio.h>
#include <stdlib.h> // 使用malloc分配内存
// 函数用于生成并输出空心菱形
void print_hollow_star_diamond(int n) {
// 检查输入范围
if (n < 2 || n > 20) {
printf("Invalid input! Please enter a number between 2 and 20.\n");
return;
}
int *diamond = malloc((2 * n - 1) * sizeof(char)); // 为菱形分配内存
if (!diamond) {
perror("Memory allocation failed.");
exit(1);
}
// 填充菱形内容
for (int i = 0; i < 2 * n - 1; ++i) {
if (i < n) { // 上半部分
diamond[i] = '*';
if (i != 0 && i != n - 1) diamond[2 * n - 2 - i] = ' ';
} else if (i >= n && i < 2 * n - 2 - n) { // 中间
diamond[i] = ' ';
} else { // 下半部分
diamond[i] = '*';
if (i != 2 * n - 3 && i != 2 * n - 4 - n) diamond[2 * n - 2 - i] = ' ';
}
}
// 输出菱形
for (int i = 0; i < 2 * n - 1; ++i)
printf("%c", diamond[i]);
free(diamond); // 释放内存
}
int main() {
int n;
printf("Enter a number (2-20): ");
scanf("%d", &n);
print_hollow_star_diamond(n);
return 0;
}
```
这段代码首先检查输入是否在给定范围内,然后动态分配内存存储菱形。接着生成并设置每个位置的内容,最后输出整个菱形。
阅读全文