#include <stdio.h>
int main(int argc, char const *argv[])
{
int sum, i = 0;
printf("请输入中间一行有几个*:"); //把菱形看作两个等腰三角形拼在一起,输入底边长
scanf("%d",&sum);//把底边长度存入sum变量中
while (i < sum*2-1) //因为两个三角形有一行重叠所以要减去一行,表示输出的行数
{
if (i < sum) //上半三角形的输出
{
for (int k = i; k < sum; k++) //定义整型k,表示每行输出的空格数量,第一行输出sum个,第二行输出sum-1个……
{
printf(" "); //输出空格
}
for (int j = 0; j <= i; j++) //定义整型j,表示每行输入的* 数量,第一行输出1个,第二行2个……
{
printf("* "); //输出*
}
}
else //下半三角形的输出 与上三角基本相同,把空格和* 的循环结构进行交换即可
{
for (int j = sum-2; j < i; j++)
{
printf(" ");
}
for (int k = i+1; k < sum*2; k++)
{
printf("* ");
}
}
i++; //循环变量自增1;
printf("\n");//每行进行一次换行
}
return 0;
}
结果图展示:
如果想要不输入而直接输出一个菱形的话: 下面展示底边长为5的菱形代码,获得其他底边长菱形修改sum的值即可
#include <stdio.h>
int main(int argc, char const *argv[])
{
int sum, i = 0;
sum=5;//改这里!!
while (i < sum*2-1) //因为两个三角形有一行重叠所以要减去一行,表示输出的行数
{
if (i < sum) //上半三角形的输出
{
for (int k = i; k < sum; k++) //定义整型k,表示每行输出的空格数量,第一行输出sum个,第二行输出sum-1个……
{
printf(" "); //输出空格
}
for (int j = 0; j <= i; j++) //定义整型j,表示每行输入的* 数量,第一行输出1个,第二行2个……
{
printf("* "); //输出*
}
}
else //下半三角形的输出 与上三角基本相同,把空格和* 的循环结构进行交换即可
{
for (int j = sum-2; j < i; j++)
{
printf(" ");
}
for (int k = i+1; k < sum*2; k++)
{
printf("* ");
}
}
i++; //循环变量自增1;
printf("\n");//每行进行一次换行
}
return 0;
}