每天都要刷题系列之循环2

描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”三角形图案。

输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的“空心”三角形,每个“*”后面有一个空格。

示例1

输入:

4

复制输出:

*       
* *     
*   *   
* * * *

解题思路

这道题可以把三角形看成一个全*组成的三角形,其中行和列不等于0,列不等于行以及行不是最底的时候打印空格字符就可以,所以只需要一个嵌套循环加上一个判断就可以实现

int main()
{
	int num = 0;
	int row = 0;
	int col = 0;
	while (scanf("%d", &num) != EOF)
	{
		for (row = 0; row < num; row++)
		{
			for (col = 0; col <= row; col++)
			{
				if ((row != num - num&&row != num - 1) && (col != row && col != num - num))
				{
					printf("  ");
				}
				else
				{
					printf("* ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用数字组成的数字三角形图案。

输入描述:

多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。

输出描述:

针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。

示例1

输入:

4

复制输出:

1
1 2
1 2 3
1 2 3 4

解题思路

只是打印一个三角形,把*号替换成列

int main()
{
	int num = 0;
	int row = 0;
	int col = 0;
	while (scanf("%d", &num) != EOF)
	{
		for (row = 1; row <= num; row++)
		{
			for (col = 1; col <= row; col++)
			{
				printf("%d ", col);
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

 

描述

今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。

输入描述:

输入圣诞树的高度h,1<= h <= 1001<=h<=100

输出描述:

输出对应的圣诞树

示例1

输入:

1

复制输出:

  *  
 * * 
* * *
  *

复制说明:

 

示例2

输入:

2

复制输出:

     *     
    * *    
   * * *   
  *     *  
 * *   * * 
* * * * * *
     *
     *

复制说明:

 

解题思路

这个题首先将圣诞树树叶部分看成一个三角形,无论大小都是 行等于3*输入数,列等于3*输入数的三角形,至于中间的空白部分则有两种情况,一种时行大于2且与3为0且列余3不为0时输出空白,另一种是行大于2且余3为1且列余3为2时输出空白,剩余部分全部打印“* ”

#define LINE 3

int main()
{
	int num = 0;
	int row = 0;
	int col = 0;
	while (scanf("%d", &num) != EOF)
	{
		for (row = 0; row < num * LINE; row++)
		{
			for (col = 0; col < num*LINE - row - 1; col++)
			{
				printf(" ");
			}
			for (col = 0; col <= row; col++)
			{
					if (row%LINE == 0&&col%LINE!=0&&row>2)
					{
						printf("  ");
					}
					else if (row%LINE == 1 && col%LINE == 2&&row>2)
					{
						printf("  ");
					}
					else
					{
						printf("* ");
					}
			}
			printf("\n");
		}
		for (row = 0; row < num; row++)
		{
			for (col = 0; col < num*LINE; col++)
			{
				if (col == num*LINE - 1)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
			printf("\n");
		}
	}

	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值