输出如下图案菱形,输出菱形:
*markdown
***ide
*****post
*******spa
*****code
***blog
*it
答案解析:
该题目须要关心当前行对应的从最左边到第一颗*
的空格数量以及星星数量。将该题分为两个部分,前面4行和后面3行来进行拆分。io
前4行中:class
第一行:行号为0, 空格数为3,星星数量为1;im
第二行:行号为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("\n") ; } //输出后三行 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("\n"); } return 0; }