1.题目
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。
输入格式:
输入在一行中给出一个正的奇数n。
输出格式:
输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。
输入样例:
7
输出样例:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
2.思路
3.模版代码
#include <stdio.h>
int main()
{
int n;
int i, j;
scanf("%d", &n);
int l1 = (n + 1) / 2;
int l2 = (n - 1) / 2;
int a = l1-1;
int b = 1;
for (i = 1; i <= l1; i++)//有两次大循环,循环次数为上层(下层)金字塔的层数
{
for (j = 1; j <= a; j++)//一共四次小循环,每次循环模版一样,只需要分别考虑循环结束的条件,
{
printf(" ");
}
for (j = 1; j <= 2 * b - 1; j++)
{
printf("* ");
}
printf("\n");
a--;//而每次循环结束的条件都是在变化的,
b++;//用自增(逐层增加)自减(逐层减少)的方式统一体现,因此在小循环的结束的条件只需要考虑第一次循环的结束条件
}
int c = 1;
int d = l2;
for (i = 1; i <= l2; i++)
{
for (j = 1; j <= c; j++)
{
printf(" ");
}
for (j = 1; j <= 2 * d - 1; j++)
{
printf("* ");
}
printf("\n");
c++;
d--;
}
return 0;
}
如果你会写这种题,但是每次都在循环条件上犹豫很久,不妨试试这个模版,除夕快乐哦~🥳🥳