zoukankan      html  css  js  c++  java
  • 输出以下图案

    输出以下图案菱形,输出菱形:

    ​ *

    ​ ***

    *****

    *******

    *****

    ​ ***

    ​ *

    答案解析:

    该题目需要关心当前行对应的从最左边到第一颗*的空格数量以及星星数量。将该题分为两个部分,前面4行和后面3行来进行拆分。

    前4行中:

    第一行:行号为0, 空格数为3,星星数量为1;

    第二行:行号为1, 空格数为2, 星星数量为3;

    第三行:行号为2, 空格数为1, 星星数量为5;

    第四行:行号为3, 空格数为0,星星数量为7;

    则我们可以推出两组关系,即行号和空格数量关系为:空格数 = 3 - 行号 。行号与星星的关系为:星星数 = 2 * 行号 + 1

    后三行中:

    第一行:行号为0,空格数为1,星星数量为5;

    第二行:行号为1, 空格数为2, 星星数量为3;

    第三行:行号为2, 空格数为3,星星数量为1;

    则我们推出两组关系,即行号与数量的关系:空格数 = 行号 + 1。行号与星星的关系:星星数 = 7 - 2 * (行号+1)

    基于上面的关系,我们写出如下代码:

    代码示例:

    #include <stdio.h>
    
    int main()
    {
    	int cur_row, space_count, start_count;
    	//输出前4行内容
    	for (cur_row = 0; cur_row < 4; cur_row++)
    	{
    		//计算当前行空格数量,并且进行打印
    		for (space_count = 3 - cur_row; space_count > 0; space_count--)
    		{
    			printf(" ");
    		}
    		//计算当前行*数量,并且进行打印
    		for (start_count = 2 * cur_row + 1; start_count > 0; start_count--)
    		{
    			printf("*");
    		}
    		printf("
    ") ;
    	}
    	//输出后三行
    	for (cur_row = 0; cur_row < 3; cur_row++)
    	{
    		for (space_count = cur_row + 1; space_count > 0; space_count--)
    		{
    			printf(" ");
    		}
    
    		for (start_count = 7 - 2 * (cur_row + 1); start_count > 0; start_count--)
    		{
    			printf("*");
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    

    运行截图:

    输出菱形图案

  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/inta/p/13254687.html
Copyright © 2011-2022 走看看