循环-输出字母围起的正方形

【题】

输出字母围起的正方形


输入N*N图形正方形的边长N,图形左上角的字母,输出由字母围成的空心正方形。输出的字母是顺时针连续的,且是循环的,即输出字母'Z'后输出字母"A"。注意在两个字母之间有一个空格。
例如输入:
6  M
输出如下图形:
M N O P Q R
F         S
E         T
D         U
C         V
B A Z Y X W

【代码】

(1)在正方形 的边上打印固定字符。代码如下:

#include "stdio.h"

int main(int argc, char **argv)
{
	int n;
	char che;
	scanf("%d %c", &n, &ch);
	getchar();

	int i, j;

	for (i = 1; i <=n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			if (i == 1 && j == 1)             //左上角第一个字符
				printf("%c", ch);
			else if(j == 1)
				printf("%c", ch);         //正方形左侧的边
			else if(i == 1 && j != n)
				printf(" %c", ch);        //正方形上侧的边
			else if(j == n)
				printf(" %c", ch);        //正方形右侧的边

			else if(i == n && j != n)         //正方形下侧的边
				printf(" %c", ch);
			else                              //正方形的中间
				printf("  ");
		}
		printf("\n");
	}
	return 0;
}

【运行截图】



(2)字符递增,但不考虑字符越界的情况。

#include "stdio.h"

int main(int argc, char **argv)
{
	int n;
	char ch;
	scanf("%d %c", &n, &ch);
	getchar();

	int i, j;

	for (i = 1; i <=n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			if (i == 1 && j == 1)                //左上角第一个字符
				printf("%c", ch);
			else if(j == 1)                      //正方形左侧的边
				printf("%c", ch + n - 1 + n - 1 + n - 1 + n - i);
			else if(i == 1 && j != n)            //正方形上侧的边
				printf(" %c", ch + j -1);
			else if(j == n)                      //正方形右侧的边
				printf(" %c", ch + n - 1 + i - 1);
			else if(i == n && j != n)            //正方形下侧的边
				printf(" %c", ch + n - 1 + n - 1 + n - j);
			else                                 //正方形的中间
				printf("  ");
		}
		printf("\n");
	}
	return 0;
}

【运行截图】



 (3)终结版,考虑字母越界。

#include "stdio.h"


int main(int argc, char **argv)
{
	int n;
	char ch, base;
	scanf("%d %c", &n, &ch);
	getchar();


	int i, j;
	if (ch >= 'a')
		base = 'a';
	else
		base = 'A';


	for (i = 1; i <=n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			if (i == 1 && j == 1)
				printf("%c", ch);
			else if(j == 1)
				printf("%c", ((ch + n - 1 + n - 1 + n - 1 + n - i) - base)%26 + base);
			else if(i == 1 && j != n)
				printf(" %c", ((ch + j -1) - base)%26 + base);
			else if(j == n)
				printf(" %c", ((ch + n - 1 + i - 1) - base)%26 + base);
			else if(i == n && j != n)
				printf(" %c", ((ch + n - 1 + n - 1 + n - j) - base)%26 + base);
			else
				printf("  ");
		}
		printf("\n");
	}
	return 0;
}

【运行截图】



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值