目标图案:
第一眼看到这个题目,我们可以循序渐进来解答这个问题:
我们先在屏幕上每行打印出来目标个数的“ * ”
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j;
int n;
printf("请输入菱形上半部分的行数:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 0; j < i*2-1; j++)
{
printf("*");
}
printf("\n");
}
for (i = n-1; i >=0; i--)
{
for (j = 1; j <= i * 2 - 1; j++)
{
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}
程序生成图:
实现了第一个小目标后,我们只要把“ * ”居中,上下形成三角形。这个问题就算解决了!
通过观察目标图案,我们可以发现:
第 i 行有 2*i - 1 个星星,菱形上半部分的行数为n,则每行行需要n-i个空格
程序代码:
int main()
{
int i, j;
int n;
printf("请输入菱形上半部分的行数:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 0; j < n - i; j++)//打印空格
{
putchar(' ');//一次只打印一个字符
}
for (j = 0; j < 2*i-1; j++)//打印星星
{
putchar('*');
}
putchar('\n');
}
for (i = n-1; i >=1; i--)
{
for (j = 0; j < n - i; j++)//打印空格
{
putchar(' ');//一次只打印一个字符
}
for (j = 0; j < 2 * i - 1; j++)//打印星星
{
putchar('*');
}
putchar('\n');
}
system("pause");
return 0;
}
程序生成图: