C语言实现循环打印星号图形再镂空

 更新时间:2022年11月15日 13:51  点击:566 作者:粥ou

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;                              /*i为行数,j为每行中的项数*/
	printf("(n为奇数)输入图案高度n:\n");
	scanf("%d",&n);
	if (n<=0||n%2==0)                        /*判断n输入正误*/
		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--)               /*打印下三角,(不包括中间行)*/
		{                             /*将i改为倒序,这样就不必再次考虑每行中项的打印,下个for循环可以直接复制上三角部分*/
			for(j=1;j<=n/2+i;j++)         /*这个for循环与上三角一致 */
				if(j>=n/2-i+2)
					printf(" *");
				else
					printf("  ");
			printf("\n");
		}
	}
	return 0;
}

运行结果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。

原文出处:https://blog.csdn.net/weixin_42166745/article/details/850580

[!--infotagslink--]

相关文章

  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • Java8处理List的双层循环问题

    这篇文章主要介绍了Java8处理List的双层循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-19
  • jquery中常用的SET和GET$(”#msg”).html循环介绍

    复制代码 代码如下: $(”#msg”).html(); //返回id为msg的元素节点的html内容。 $(”#msg”).html(”new content“); //将“new content” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content $(”...2013-10-13
  • 浅谈Java8 的foreach跳出循环break/return

    这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28
  • C#的循环语句集锦及案例详解

    这篇文章主要介绍了C#中的基本循环:while循环、for循环和foreach循环,大家都知道循环结构可以简化程序编码,更好地实现理想的效果,并结合案例给大家讲解,需要的朋友可以参考下...2020-06-25
  • shell中的for循环用法详解

    这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-11
  • mybatis-plus  mapper中foreach循环操作代码详解(新增或修改)

    这篇文章主要介绍了mybatis-plus mapper中foreach循环操作代码详解(新增或修改),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-17
  • python 实现循环定义、赋值多个变量的操作

    这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 解决vue-router路由拦截造成死循环问题

    这篇文章主要介绍了解决vue-router路由拦截造成死循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
  • c# 循环语句的使用方法

    这篇文章主要介绍了c# 循环语句的使用方法,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • c# 获取已安装的打印机并调用打印文件

    这篇文章主要介绍了c#如何获取已安装的打印机并调用打印文件,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2020-12-08
  • vue实现页面打印自动分页的两种方法

    这篇文章主要为大家详细介绍了vue实现页面打印自动分页的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
  • Springboot+MDC+traceId日志中打印唯一traceId

    本文主要介绍了Springboot+MDC+traceId日志中打印唯一traceId,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-17
  • Java8之Stream流代替For循环操作

    这篇文章主要介绍了Java8之Stream流代替For循环操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-19
  • JavaScript循环遍历的24个方法,你都知道吗

    这篇文章主要给大家介绍了关于JavaScript循环遍历的24个方法,文中对每种方法都给出了详细的实例代码,方便大家理解学习,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-09-15
  • Python While循环语句实例演示及原理解析

    这篇文章主要介绍了Python While循环语句实例演示及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-30
  • C#操作excel打印的示例

    这篇文章主要介绍了C#操作excel打印的示例,帮助大家利用c#打印表格,提高办公效率,感兴趣的朋友可以了解下...2020-12-08
  • C#基本打印事件用法实例

    这篇文章主要介绍了C#基本打印事件用法,实例分析了C#中print打印及DrawString文本字符串绘制等相关技巧,需要的朋友可以参考下...2020-06-25
  • 如何检测JavaScript中的死循环示例详解

    这篇文章主要给大家介绍了关于如何检测JavaScript中死循环的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
  • 解决vue中的无限循环问题

    这篇文章主要介绍了解决vue中的无限循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27