您的位置:首页 > 其它

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

2012-11-10 07:35 267 查看
【题】


输出字母围起的正方形

输入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;
}


【运行截图】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐