c语言空心菱形代码

以下是一个简单的C语言程序,用于打印一个空心的菱形。这个程序假设菱形的高度是奇数,并且菱形的中心位于中间行。

c复制代码
#include <stdio.h>
void printSpaces(int count) {
for (int i = 0; i < count; i++) {
printf(" ");
}
}
void printStars(int count) {
for (int i = 0; i < count; i++) {
printf("*");
}
}
void printHollowDiamond(int n) {
int i, j, k;
for (i = 1; i <= n; i = i + 2) {
printSpaces((n - i) / 2);
printStars(i);
printf("\n");
}
for (i = n - 2; i >= 1; i = i - 2) {
printSpaces((n - i) / 2);
printStars(i);
printf("\n");
}
}
int main() {
int n;
printf("Enter the height of the diamond: ");
scanf("%d", &n);
if (n % 2 == 0) {
printf("Height should be odd.\n");
return 0;
}
printHollowDiamond(n);
return 0;
}

在这个程序中,我们首先定义了两个辅助函数printSpacesprintStars,它们分别用于打印指定数量的空格和星号。然后,我们定义了一个函数printHollowDiamond,它用于打印空心的菱形。这个函数首先打印菱形的上半部分(包括中间行),然后打印菱形的下半部分。在main函数中,我们获取用户输入的菱形高度,并检查它是否为奇数。如果是奇数,我们就调用printHollowDiamond函数来打印菱形;否则,我们打印一条错误消息并退出程序。

如果您想要打印一个完全空心的菱形(即只有四个角和四个边的星号,中间是空的),那么您需要稍微调整打印逻辑。以下是一个打印完全空心菱形的C语言程序示例:

c复制代码
#include <stdio.h>
void printSpaces(int count) {
for (int i = 0; i < count; i++) {
printf(" ");
}
}
void printHollowDiamond(int n) {
int i, j;
// 打印上半部分(包括中间行)
for (i = 1; i <= n; i += 2) {
// 打印前半部分空格
printSpaces((n - i) / 2);
// 打印星号
if (i == 1 || i == n) {
// 如果是第一行或最后一行,打印全部星号
for (j = 0; j < i; j++) {
printf("*");
}
} else {
// 如果是中间行,只打印两边的星号
printf("*");
printSpaces(i - 2);
printf("*");
}
printf("\n");
}
// 打印下半部分(不包括中间行,因为已经打印过)
for (i = n - 2; i >= 1; i -= 2) {
// 打印前半部分空格
printSpaces((n - i) / 2);
// 打印星号
if (i == 1 || i == n - 2) {
// 如果是倒数第一行或倒数第二行,打印全部星号
for (j = 0; j < i; j++) {
printf("*");
}
} else {
// 如果是中间行,只打印两边的星号
printf("*");
printSpaces(i - 2);
printf("*");
}
printf("\n");
}
}
int main() {
int n;
printf("Enter the height of the hollow diamond: ");
scanf("%d", &n);
if (n % 2 == 0) {
printf("Height should be odd.\n");
return 1;
}
printHollowDiamond(n);
return 0;
}

在这个程序中,我们根据行号i来判断应该打印多少个星号。对于第一行和最后一行,我们打印全部星号;对于中间行,我们只打印两个星号,并用空格填充中间部分。注意,我们在处理下半部分时,不需要再次处理中间行,因为中间行已经在上半部分打印过了。

运行这个程序,并输入一个奇数作为菱形的高度,它将打印出一个完全空心的菱形。如果输入的是偶数,程序会提示高度应为奇数并退出。