#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
system("color f5");
printf("请输入一个奇数:");
int column;
scanf_s("%d", &column);
int mid = column / 2 + 1;
// mid 为中间值加一;column为列数
int i, j;
for (i = 1; i <= column; i++)
// 列循环
{
if (i <= mid)
// 上三角打印
{
for (j = 1; j <= column; j++)
// 行循环
{
if (j >= mid - (i - 1) && j <= mid + (i - 1))
// 打*的条件 符合一个闭区间 找闭区间是难点
// 应该找的关系有行和列的关系 也就是说闭区间是含列的表达式
{
printf("*");
}
else
printf(" ");
}
}
else
// 下三角打印
{
for (j = 1; j <= column; j++)
// 行循环
{
if (j >= mid - (column - i) && j <= mid + (column - i))
// 打*的条件 符合一个闭区间 找闭区间是难点
// 应该找的关系有行和列的关系 也就是说闭区间是含列的表达式
{
printf("*");
}
else
{
printf(" ");
}
}
}
printf("\n");
// 与上面的列循环对应
}
// 下面是第二个方法
int a, b, c;
printf("请打印一个奇数正整数:");
scanf_s("%d", &a);
if (a <= 0 || a % 2 == 0)
printf("输入错误");
// 第一个方法也可以用这个让语言严谨 只有输入正确的数据才可以运行
else
{
for (b = 1; b <= a / 2 + 1; b++)
// 打印上三角的列循环
{
for (c = 1; c <= a / 2 + b; c++)
// 打印上三角的行循环 与方法一一样找行列的关系
{
if (c >= a / 2 - b + 2)
printf(" *");
else
printf(" ");
}
printf("\n");
}
for (b = a / 2; b >= 1; b--)
// 打印下三角的列循环
{
for (c = 1; c <= a / 2 + b; c++)
// 打印上三角的行循环 与方法一一样找行列的关系
{
if (c >= a / 2 - b + 2)
printf(" *");
else
printf(" ");
}
printf("\n");
}
}
return 0;
}
【无标题】啊哈c打印菱形的两个方法
于 2023-03-28 21:29:10 首次发布