菱形输出-小江增强版

题目描述

小丁说她一直比较头疼图形输出题,于是一个星期前她找小江学习了图形输出题的解题方法,这一类问题其实就是寻找行列和输出内容的联系即可。

受此启发,作为一位仁慈的出题人,为了检验大家这段时间学习的怎么样,小江特意修改了一下这道题,本题主要考察对for的控制以及if的使用,请大家根据下方的要求,完成这一道“简单”的图形输出题吧!

要求输入n的值,按图形打印规则打印相应图形!

输入格式

只有一行,一个数字 n , n 为菱形中心位置的数字。

输出格式

按要求输出相应图形。

样例

输入数据 1

2

输出数据 1

  +
 +1+
+121+
 +1+
  +

输入数据 2

3

输出数据 2

   +
  +1+
 +121+
+12321+
 +121+
  +1+
   +

数据范围

n为整数,且 1 ≤ n ≤ 10^3

Tips

请忽略10以上时无法对齐的情况,正常输出即可!

 

思路:

主要是进行划分,可以划分为上半部分和下半部分,左半部分和右半部分。

下面请看AC代码(仅供参考):

#include<stdio.h>

int main() {
	int n;
	scanf("%d", &n);

	//输出上半段
	for (int i = 1; i <= n; i++) printf(" ");
	printf("+\n");//第一行 
	for (int i = 1; i <= n; i ++ ) {
		// 左部 
		for (int j = 1; j <= n - i; j ++) printf(" ");
		printf("+");
		for (int j = 1; j <= i; j ++) printf("%d", j);
		// 右部 
		for (int j = i - 1; j >= 1; j --) printf("%d", j);
		printf("+\n");
	}
	//输出下半段

	for (int i = n - 1; i >= 1; i --) {
		// 左部 
		for (int j = 1; j <= n - i; j ++) printf(" ");
		printf("+");
		for (int j = 1; j <= i; j ++) printf("%d", j);
		// 右部 
		for (int j = i - 1; j >= 1; j --) printf("%d", j);
		printf("+\n");
	}
	for (int i = 1; i <= n; i++) printf(" ");
	printf("+\n");//最后一行 

	return 0;
}

 

posted @ 2022-09-25 21:07  Luli&  阅读(158)  评论(0)    收藏  举报