描述:*组成的菱形图案,用户输入一个奇数 n,表示菱形的最大宽度(即中间一行的星号数)。
一、用while循环
i表示行数
j表示列上的图像
知道菱形中的*下面一行比上面一行多两个;
int a=(n+1)/2;表示上半的行数
while(j<i*2+1):两个两个的增加。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n=0,i=0,j=1,c=0;
printf("请输入一个奇数:");
scanf("%d",&n);
int a=(n+1)/2;
while(i<a)//上半个三角形
{
j=1;
while(j<a-i)
{
printf(" ");
j++;
}
j=0;
while(j<i*2+1)
{
printf("*");
j++;
}
i++;
printf("\n");
}
j=0;i=0;
while(i<a-1)//下半个三角形
{
j=0;
while(j<=i)
{
printf(" ");
j++;
}
j=0;
c=n-i*2;
while(j<c-2)
{
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
二、使用for循环
过程与上述类似
注意!for循环后,单个语句可以不加{},超过一个·需要加{};
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n=0;
printf("请输入一个奇数:");
scanf("%d",&n);
int a=(n+1)/2;
for(int i=0;i<a;i++)
{
for(int j=0;j<a-1-i;j++)
printf(" ");
for(int j=0;j<i*2+1;j++)
printf("*");
printf("\n");
}
for(int i=0;i<a-1;i++)
{
for(int j=0;j<=i;j++)
printf(" ");
int c=(a-i-1)*2;
for(int j=1;j<c;j++)
printf("*");
printf("\n");
}
return 0;
}
运行截图