C语言 循环打印星号图形再镂空
镂空的原理
判断什么时候打印星号,什么时候打印空格
如果把这个图形镂空 成下面这个图形
int i,j;
//外层控制行数和换行
for(i=0;i<5;i++)
{
//内存循环控制列数和星数量
for(j=0;j<=3-i;j++)
{
printf(" ");
}
for(j=0;j<=i*2;j++)
{
if(i==0 || i==4 || j ==0 || j == 2*i) //第一行和最后一行不要镂空,然后就是中间的两边,分别是j=0和j取最大值的时候
printf("*");
else
printf(" ");0
}
printf("\n");
}
return 0;
第二种:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(i == 0 || i == 8 || j == 0 || j == 8)
{
printf("*");
}
else
printf(" ");
}
printf("\n");
}
第三种效果图:
int main()
{
//上半部分
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<2-i;j++)
{
printf(" ");
}
for(j=0;j<=2+2*i;j++)
{
if(i == 0 || j == 0 || j == 2+2*i)
printf("*");
else
printf(" ");
}
printf("\n");
}
//中间部分
for(i=0;i<3;i++)
{
for(j=0;j<7;j++)
{
if(j == 0 ||j == 6)
printf("*");
else
printf(" ");
}
printf("\n");
}
//下半部分
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(j=0;j<=6-2*i;j++)
{
if(i == 2 || j == 0 || j ==6-2*i )
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
第四种:
int main()
{
int i,j;
//上半部分
for(i=0;i<3;i++)
{
for(j=0;j<2-i;j++)
{
printf(" ");
}
for(j=0;j<=2*i;j++)
{
printf("*");
}
printf("\n");
}
//下半部分
for(i=0;i<7;i++)
{
for(j=0;j<5;j++)
{
if(j == 2)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
C语言 打印菱形星号“*”图案
题目
打印菱形星号“*”图案。输入一个正整数n(n为奇数),打印一个高度为n的“*”菱形图案。试编写相应程序。
程序简易流程图如下:
#include<stdio.h>
int main (void)
{
int n,j,i;
printf("(n为奇数)输入图案高度n:\n");
scanf("%d",&n);
if (n<=0||n%2==0)
printf("输入错误!");
else
{
for(i=1;i<=n/2+1;i++)
{
for(j=1;j<=n/2+i;j++)
{
if(j>=n/2-i+2)
printf(" *");
else
printf(" ");
}
printf("\n");
}
for(i=n/2;i>=1;i--)
{
for(j=1;j<=n/2+i;j++)
if(j>=n/2-i+2)
printf(" *");
else
printf(" ");
printf("\n");
}
}
return 0;
}
运行结果:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。