#include <stdio.h> void print_solid_diamond(int n); void print_hollow_diamond(int n); int main() { int n; char type; scanf("%d %c", &n, &type); if (n <= 0 || (type != 'Y' && type != 'y' && type != 'N' && type != 'n' && type != 'A' && type != 'a')) { printf("输入不符合要求\n"); return 0; } if (type == 'Y' || type == 'y') { print_solid_diamond(n); } else if (type == 'N' || type == 'n') { print_hollow_diamond(n); } else { print_solid_diamond(n); printf("\n"); print_hollow_diamond(n); } return 0; } void print_solid_diamond(int n) { int m = (n + 1) / 2; for (int i = 1; i <= m; i++) { for (int j = 1; j <= m - i; j++) { printf(" "); } for (int j = 1; j <= 2 * i - 1; j++) { printf("*"); } printf("\n"); } for (int i = m - 1; i >= 1; i--) { for (int j = 1; j <= m - i; j++) { printf(" "); } for (int j = 1; j <= 2 * i - 1; j++) { printf("*"); } printf("\n"); } } void print_hollow_diamond(int n) { int m = (n + 1) / 2; for (int i = 1; i <= m; i++) { for (int j = 1; j <= m - i; j++) { printf("·"); } printf("*"); if (i != 1) { for (int j = 1; j <= 2 * (i - 1) - 1; j++) { printf(" "); } printf("*"); } printf("\n"); } for (int i = m - 1; i >= 1; i--) { for (int j = 1; j <= m - i; j++) { printf("·"); } printf("*"); if (i != 1) { for (int j = 1; j <= 2 * (i - 1) - 1; j++) { printf(" "); } printf("*"); } printf("\n"); } }
时间: 2023-06-24 10:06:36 浏览: 50
这是一个 C 语言程序,它定义了两个函数 `print_solid_diamond` 和 `print_hollow_diamond`,用于打印实心和空心菱形。在 `main` 函数中,通过读取输入的数字和字符来确定打印实心还是空心菱形,或者同时打印两种菱形。如果输入不符合要求(数字小于等于0,字符不是 Y、y、N、n、A 或 a),则输出提示信息并结束程序。
其中,`print_solid_diamond` 函数通过两个循环嵌套来打印实心菱形。第一个循环从第一行到中间行,第二个循环从左到右打印每行的星号。然后再从中间行的下一行开始,逆序打印实心菱形的下半部分。
`print_hollow_diamond` 函数也是通过两个循环嵌套来打印空心菱形。与实心菱形不同的是,每行的星号左右各有一个点号,中间部分用空格填充。同样是从第一行到中间行,然后逆序打印下半部分。