图案大合集

1.打印菱形

分析:

题目要求输出一个菱形,可以把它分成了两个部分,上三角(一共9行),下三角(一共八行),两个三角形拼接在一起就出现了菱形的效果。

上三角:

1、一共输出9行*,line <= 9;是外层循环的循环条件,只要满足条件就继续循环。line++;改变循环控制变量,每次循环后行号自增1。当line>9时跳出循环。

2、输出空格,行号和空格数之间的关系是:

第一行  8个空格

第二行  7个空格

第三行   6个空格

........以此类推,我们很容易就找到了空格数和行号的关系表达式:space = line -1;

3、输出*,行号和*之间的关系是:

第一行        1个*

第一行        3个*

第二行        5个*

第三行         7个*

........根据这样的规律,我们写出了它们间的表达式:stars = (line * 2) - 1; 

下三角:

1、外层循环line <= 8;是外层循环的循环条件。

2、输出空格,行号和空格数之间的关系是:

第一行  1个空格

第二行  2个空格

第三行   3个空格

........以此类推,空格数和行号的关系表达式:space = line;

3、输出*,行号和*之间的关系是:

第一行        15个*

第二行        13个*

第三行        11个*

第四行         9个*

........根据这样的规律,它们间的表达式为:(8 - line + 1) * 2 - 1;

代码实现:

#include <stdio.h>
int main()
{
	for (int line = 1; line <= 9; line++)//行数
	{
		for (int space = 1; space <= 9 - line; space++)//第一行有9-i个空格
		{
			printf(" ");
		}
		//打印*,(i*2)-1是*输出的规律
		for (int stars = 1; stars <= (line * 2) - 1; stars++)
		{
			printf("*");
		}
		printf("\n");
	}
	//从第十行开始,打印下三角
	for (int line = 1; line <= 8; line++)
	{
		for (int space = 1; space <= line; space++)
		{
			printf(" ");
		}
		for (int stars = 1; stars <= (8 - line + 1) * 2 - 1; stars++)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

结果:


2.打印箭型图案

问题描述:

多组输入打印一个箭形

 代码实现:

#include <stdio.h>
int main()
{
	int n = 0;
	while (scanf("%d",&n) != EOF)
	{
		//上边
		int i = 0;
		int space = 0;
		int star = 0;
		for (i = 0; i < n+1; i++)
		{
			//空格
			for (space = 0; space<n-i; space++)
			{
				printf("  ");
			}
			//*
			for (star = 0; star<=i; star++)
			{
				printf("*");
			}
			printf("\n");
		}
		//下边
		for (int i = 0; i < n; i++)
		{
			//空格
			for (space = 0; space<=i; space++)
			{
				printf("  ");
			}
			//*
			for (star = 0;star<n-i;star++)
			{
				printf("*");
			}
			printf("\n");
		}
	}
}

效果:

3.打印X图案

问题描述:

多组输入,打印X形图案 

代码实现:

#include <stdio.h>
int main()
{
	int n = 0;
	int i = 0;
	int j = 0;
	while (scanf("%d", &n) != EOF)
	{
		for (i = 0; i < n; i++)
		{		
			for (j = 0; j < n; j++)
			{
				//对角线打印
				if (i == j || i + j == n - 1)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	
	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值