命令行窗口输出图案

#include "Graphic_fun.h"

/* 功能:输出为
		#
	   # #
	  #   #
	 #     #
	  #   #
	   # #
		#
*/

UINT32 Graphic_prismatic1(
	   UINT32 u32_line,
	   CHAR i8_m
	   )

{
	UINT32 u32_i = 0u, u32_j = 0u;
	/* 上半部分 */
	for ( u32_i = 1u; u32_i <= u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j <= (u32_line + u32_i); u32_j++)
		{
			if ((u32_j== ((u32_line + 1u) -u32_i))|| (u32_j == ((u32_line - 1u) + u32_i)))
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c", i8_m);
				}
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	/* 下半部分 */
	for ( u32_i = 1u; u32_i < u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j < ((2u * u32_line) - 1u); u32_j++)
		{
			if ( (u32_j == (u32_i + 1u)) ||( u32_j == ((2u * u32_line) - 1u -u32_i)))
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c",i8_m);
				}
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	return 0u;
}

/* 打印出实心的棱形 */
UINT32 Graphic_prismatic2(
       UINT32 u32_line,
	   CHAR i8_m
	   )

{
	UINT32 u32_i = 0u;
	UINT32 u32_j = 0u;
	/* 上半部分 */
	for ( u32_i = 1u; u32_i <= u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j < (u32_line + u32_i); u32_j++)
		{
			if ( (u32_j >= ((u32_line + 1u) -u32_i))&&(u32_j <= ((u32_line - 1u) + u32_i)))
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c",i8_m);
				}
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	/* 下半部分 */
	for ( u32_i = 1u; u32_i < u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j < ((2u *u32_line) - 1u) ; u32_j++)
		{
			if ( (u32_j >= (u32_i + 1u)) && ( u32_j <= ((2u * u32_line) - 1u -u32_i)))
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c",i8_m);
				}
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	return 0u;
}

/* 十字架 */
UINT32 Graphic_prismatic3(
	   UINT32 u32_line,
       CHAR i8_m
	   )

{
	UINT32 u32_i = 0u;
	UINT32 u32_j = 0u;
	/* 上半部分 */
	for ( u32_i = 1u; u32_i <= u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j < (u32_line + u32_i); u32_j++)
		{
			if ( (u32_j == u32_line) || (u32_i == u32_line))
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c",i8_m);
				}
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	/* 下半部分 */
	for ( u32_i = 1u; u32_i < u32_line; u32_i++)
	{
		for (u32_j = 1u; u32_j < ((2u * u32_line) - 1u) ; u32_j++)
		{
			if ( u32_j == u32_line)
			{
				if ( NULL != i8_m)
				{
					(void)OSM_Printf("%c",i8_m);
				}
			}

			else
			{
				(void)OSM_Printf(" ");
			}
		}
		(void)OSM_Printf("\n");
	}
	return 0u;
}

/* 正弦波 */
UINT32 Graphic_prismatic4(
	   UINT32 u32_Max,
	   UINT32 u32_Time,
	   CHAR i8_m
	   )

{
	INT32 i32_x = 0;
	INT32 i32_y = 0;
	DOUBLE tmp =((DOUBLE)2) * PI / (INT32)u32_Time;
	for ( i32_x = 0; i32_x <= (INT32)u32_Time; i32_x++)
	{
		if ( sin(tmp * i32_x) >= 0.00000)
		{
			for ( i32_y = 0; i32_y <= (INT32)u32_Max + (INT32)u32_Max * sin(tmp * i32_x);i32_y++ )
			{
				(void)OSM_Printf(" ");
			}
			if ( NULL != i8_m)
			{
				(void)OSM_Printf("%c",i8_m);
			}
		}
		if ((DOUBLE)sin((DOUBLE)tmp * i32_x) < 0.0000)
		{
			for ( i32_y = 0; i32_y <= ( u32_Max + (u32_Max * sin(tmp * i32_x)) ); i32_y++)
			{
				(void)OSM_Printf(" ");
			}
			if ( NULL != i8_m)
			{
				(void)OSM_Printf("%c",i8_m);
			}
		}
		(void)OSM_Printf("\n");
	}
	return 0u;
}

/* 功能:输出相间的实心菱形,根据函数参数变化大小、行数和列数 */
UINT32 Graphic_prismatic5(
	UINT32 u32_line,
	UINT32 row,
	UINT32 column
	)

{
	UINT32 u32_i = 0u;
	UINT32 u32_k = 0u;
	UINT32 u32_t = 0u;
	UINT32 u32_j = 0u;
	/* 上半部分 */
	for (u32_k = 0u; u32_k < row; u32_k++)
	{
		for ( u32_i = 1u; u32_i <= u32_line; u32_i++)
		{
			for (u32_t = 1u; u32_t <= column; u32_t++)
			{
				for (u32_j = 1u; u32_j < ((2u * u32_line) -1u); u32_j++)
				{
					if ( (u32_j >= ((u32_line + 1u) -u32_i))&&(u32_j <= ((u32_line - 1u) + u32_i)))
					{
						(void)OSM_Printf("#");
					}
					else
					{
						(void)OSM_Printf(" ");
					}
				}
			}

			(void)OSM_Printf("\n");
		}
		/* 下半部分 */
		for ( u32_i = 1u; u32_i < (u32_line - 1u); u32_i++)
		{
			for (u32_t = 0u; u32_t < column; u32_t++)
			{
				for (u32_j = 1u; u32_j < ((2u *u32_line) - 1u) ; u32_j++)
				{
					if ( (u32_j >= (u32_i + 1u)) && ( u32_j <= ((2u * u32_line) - 1u -u32_i)))
					{

						(void)OSM_Printf("#");

					}
					else
					{
						(void)OSM_Printf(" ");
					}
				}
			}
			(void)OSM_Printf("\n");
		}
	}

	for ( u32_i = 1u; u32_i <= column; u32_i++)
	{
		for (u32_j = 1u; u32_j <= ((2u * u32_line) - 1u) ; u32_j++)
		{
			if ((u32_j == ((u32_line + 1u) -u32_i)) )
			{
				(void)OSM_Printf("#");
			}
			else
			{
				(void)OSM_Printf(" ");
			}
		}
	}
	return 0u;
}

主函数

#include "Graphic_fun.h"

UINT32 main(
	   void
	   )

{
	UINT32 line = 0u;
	CHAR simble;
	Graphic_prismatic1(7, '#');
	OSM_Printf("\n");
	Graphic_prismatic2(7, '#');
	OSM_Printf("\n");
	Graphic_prismatic3(10, '#');
	OSM_Printf("\n");
	Graphic_prismatic4(10,12, '#');
	OSM_Printf("\n");
	Graphic_prismatic5(4,4,4);
	return 0;
}

输出的图案:

这个对我们的控制循环有很大的帮助

时间: 2024-10-22 13:09:47

命令行窗口输出图案的相关文章

system调用命令行命令而不显示命令行窗口

system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 1 #pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" ) // 设置入口地址 2 #include <windows.h> 3 #include <stdio.h>

命令行日志输出

在linux中运行命令行时,会输出一些日志信息,特别典型的是启用WebLogic命令时,输出一些信息,当启用demon模式运行时,又想收集这些信息咋办? 解决的办法就是使用输出重定向,如下面的命令: nohup ./startWebLogic.sh  >  app.log    2>&1     & 这是什么意思呢? 其中app.log是保存输出的文件名称: 2>&1 表示不仅命令行正常的输出保存到app.log中,产生错误信息的输出也保存到app.log文件中:

C#中隐式操作CMD命令行窗口

原文:C#中隐式操作CMD命令行窗口 MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定可以使我们的程序简便不少. 下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法. 如下所示: System.Diagnosties.Process p=new System.Diagnosties.Process(); p.StartIn

plsql命令行窗口执行脚本打印输出

1.我们可以写一些简单的检查数据库的检查脚本 prompt Importing table t_test0... set feedback off set define off set linesize 32767; select t.fk_user,t.file_path,t.revision,t.flag from t_test0 t where rownum<8; prompt Done. 2.然后在命令行窗口执行我们脚本的时候,就会输出我们预期的查询结果 3.说明 1>prompt  

如何让Qt程序能在cmd命令行下输出qDebug信息

若让Qt程序能在cmd命令行下输出qDebug()信息, 则在pro文件中增加: WIN32: CONFIG += console 即可. 启动qt程序时会弹出一个cmd框和一个ui框,就可以看到调试信息了.

右键“在此处打开命令行窗口”的一个小秘密

右键"在此处打开命令行窗口"的一个小秘密 我们都知道windows7开始,提供了一个便于从当前文件夹打开cmd命令行窗口的快捷方式: Shift+鼠标右键==>"在此处打开命令行窗口" 如此,就能快速的在当前目录打开cmd窗口,以执行命令. 今天,在配置ant的环境变量时,添加了ant的bin目录到path变量中后,使用上述方式打开了想要build的工程的目录,输入ant命令,一直提示: 'ant' 不是内部或外部命令,也不是可运行的程序或批处理文件. 这就奇

如何通过命令行窗口查看sqlite数据库文件

1.找到AndroidSDK目录下的platform-tools文件夹,会发现该目录下有一个adb.exe文件. 到系统环境变量出去设置Path的值,将 adb.exe 所在的路径加进去. 2.在命令行窗口输入:" adb shell " 进入控制台 3.输入 " cd /data/data/包名.项目名称(小写)/databases/ " (如: cd /data/data/co m.keqi.test/databases/)进入项目文件所在的存储路径 4.可通过

30天自制操作系统之第17天 命令行窗口

我们把命令行窗口单独做成一个新的任务. 要实现字符输入,只要在键盘被按下的时候向console_task(命令行窗口任务)的FIFO发送数据即可.但要发送数据必须要知道struct FIFO的内存地址才行. 把 struct FIFO 放到 struct TASK里面.基本上没有什么任务是完全用不到FIFO的,因此我们把它们绑定起来. struct TASK { int sel, flags; // sel is used to save the index of GDT int priorit

windows下自动启动Redis隐藏命令行窗口

这段时间看了看关于Redis的相关内容,对于Redis在windows下的安装和常规启动我就不多说了.可以参考其他的博客http://www.cnblogs.com/edisonchou/p/3821228.html.我按照这篇博客的方法添加启动Redis的windows服务,但是在启动服务的时候,会报错:错误1053:服务没有及时响应启动或控制请求.如下图: 我查了相关资料,有的人说是因为windows8系统权限问题.我就想能不能绕过这个错误,实现自动启动Redis,而不用再命令行中启动. 一