C语言实现用 * 打印X形图案

目录
  • C语言 用 * 打印X形图案
  • C语言 输出X图形

C语言 用 * 打印X形图案

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线长度。

针对每行输入,输出用"*"组成的x型图案。

第一次看到这道题,我想到的是按照寻找规律的方法来求解,将n / 2作为分割点,上下分开寻找规律打印空格。

网上给出的解题思路是以坐标轴的方式进行求解

以输入n = 7为例,由上图可知,设横轴为x,纵轴为y,当x = y,或者x + y = n - 1时,屏幕上输出 *,所以我们可以根据这个规律来进行运算。

这种方法的好处是不需要考虑空格的输出的规律,只需要根据交叉线条x的规律来打印即可。

	int a = 0;
	while (scanf("%d", &a) != EOF)
	{
		int i = 0;
		for (i = 0; i < a; i++)            //i为x轴
		{
			int j = 0;
            //每次循环输出一个*或者输出一个空格
			for (j = 0; j < a; j++)        //j为y轴
			{
				if (i == j)
					printf("*");
				else if (i + j == a - 1)
					printf("*");
				else
					printf(" ");
			}
			printf("\n");
		}
	}

C语言 输出X图形

/*
输出 X图形
程序:输入行数,输出该X图形
*/

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int n = 0, i = 0, j = 0;
	char arr[51][51] = { 0 };
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			arr[i][j] = ' ';
		}
	}

	for (i = 0; i < n; i++)
	{
		arr[i][i] = '*';
		arr[i][n - i - 1] = '*';
	}

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%c", arr[i][j]);
		}
		printf("\n");
	}
}

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

(0)

相关推荐

  • 如何利用C语言输出3D立体感心形图详解

    目录 ★头文件部分: ★主函数外自定义函数部分: ★主函数部分: 总结 首先我先在每行(除空白以及{}外)代码上标上序号(无序号源码放在了文末) #include <stdio.h> #include <math.h> float f(float x, float y, float z) { float a = x*x + 9.0f/4.0f*y*y + z*z - 1; return a*a*a - x*x*z*z*z - 9.0f/80.0f*y*y*z*z*z; } floa

  • C语言打印各种图案实例代码

    1.线段图案 #include<stdio.h> int main() { int a = 0; while(~scanf("%d",&a)) { int i = 0; for(i=0;i<a;i++) { printf("*"); } printf("\n"); } return 0; } 2.正方形图案 #include<stdio.h> int main() { int a = 0; while(~sc

  • 利用C语言如何实现一些简单图形的打印

    1#define_CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 //打印自定义长度的线段 #include<stdio.h> int main() { int i = 0; int n; while (~scanf("%d", &n)) { for (i = 0; i < n; i++) printf("* "); p

  • C语言实现用 * 打印X形图案

    目录 C语言 用 * 打印X形图案 C语言 输出X图形 C语言 用 * 打印X形图案 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线长度. 针对每行输入,输出用"*"组成的x型图案. 第一次看到这道题,我想到的是按照寻找规律的方法来求解,将n / 2作为分割点,上下分开寻找规律打印空格. 网上给出的解题思路是以坐标轴的方式进行求解 以输入n = 7为例,由上图可知,设横轴为x,纵轴为y,当x = y,或者x + y = n - 1时,屏幕上输出 *,所

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

    目录 C语言 循环打印星号图形再镂空 镂空的原理 C语言 打印菱形星号“*”图案 题目 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 ||

  • 利用php输出不同的心形图案

    首先为大家分享php输出心形曲线的代码,代码如下 <?php for($t=0;$t<360;$t++) { $y=2*cos($t)-cos(2*$t); //笛卡尔心形曲线函数 $x=2*sin($t)-sin(2*$t); $x+=3; $y+=3; $x*=70; $y*=70; $x=round($x); $y=round($y); $str[]=$x; $y=$y+2*(180-$y);//图像上下翻转 $x=$y; $str[]=$x; } $im=imagecreate(400

  • java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由于"*"位置的关系,我们必须带入空格同时打印.所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环. 第二部:对数字进行分析 在分析之前,我们必须明白外层循环控制行数,内层循环控制列数,因此我们需要分析他的行和列. 示例代码如下: class ForForTest

  • C语言结合ffmpeg打印音视频信息

    目录 一.通过此文可以得到什么 二.实现思路 三.实现效果 四.实现源代码  一.通过此文可以得到什么 通过此练习: 1.知道了如何计算一个音频和视频的播放时间: 2.知道了音视频解码的思路的大体流程,之后无非就是在这个流程上进行扩充细节: 3.知道了如何通过C语言或者C++编程语言结合ffmpeg拿到一些音视频的关键信息,例如:帧率等: 二.实现思路 三.实现效果 zhenghui@zh-pc:/data/project/VSCProject/ffmpegStudy$ make make al

  • C语言利用EasyX实现绘制足球图案

    目录 思路 截图 源码 思路 如何使用 C 语言配置EasyX绘图库绘制一个足球呢,今天我尝试了一下,难度还算可以,但是过程比较繁琐,代码写的有些复杂,后期有兴趣的,可以在我的代码的基础上进行优化,用更短的代码将这个图形绘制出来. 简单描述一下这个程序的思路和实现过程.足球是一个由五边形和六边形组成的球体.这里我使用一个旋转算法,首先确定一个足球的圆心.然后确定半径,通过等间距旋转,先获得一个五边形的坐标,使用多边形填充的方式,得到一个填充的五边形.然后通过同样的方式,获取一个十边形以及二十边形

  • C++和Java命令行绘制心形图案

    心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图形便是一个心脏线.心脏线的英文名称"Cardioid"是 de Castillon 在1741年的<Philosophical Transactions of the Royal Society>发表的:意为"像心脏的". 极坐标方程 水平方向: ρ=a(1-cosθ) 或 ρ=a(1+cos

  • Android自定义View实现心形图案

    本文实例为大家分享了Android自定义View实现心形的具体代码,供大家参考,具体内容如下 通过继承View实现的❤形 在绘制心形需要Path类中的两个重要方法分别是:moveTo.cubicTo moveTo 不会进行绘制,只用于移动移动画笔. lineTo 用于进行直线绘制. quadTo 用于绘制圆滑曲线,即贝塞尔曲线. cubicTo 同样是用来实现贝塞尔曲线的. 具体实现: public class HeartView extends View { private int mMeas

  • C语言编写银行打印程序实例参考

    简介 模拟银行的钱数大写输出例如345叁肆伍 方法/步骤 首先打开VC++ 文件>>>新建 创建一个C++空白文档 先声明头文件 复制代码 代码如下: #include<stdio.h>  声明变量 复制代码 代码如下: char *p[10]={"零","一","二","三","四","五","六","七",&quo

随机推荐