循环-输出字母围起的正方形
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)在正方形 的边上打印固定字符。代码如下:
【运行截图】
(2)字符递增,但不考虑字符越界的情况。
【运行截图】
(3)终结版,考虑字母越界。
【运行截图】
输出字母围起的正方形
输入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; }
【运行截图】
相关文章推荐
- OJ 2687: 用循环实现连续大写英文字母的输出
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- php循环输出26个大小写英文字母
- 循环输出 26 个字母
- 用循环实现连续大写英文字母的输出
- 通过线程按照顺序循环输出ABC n次
- for循环图形打印(三角形菱形实心/空心,字母K)
- Eclipse - 循环cin的输出怎样终止
- 用for循环,循环输出随机数的两种…
- 一个字符串中可能包含a~z中的多个字符,如有重复,求出现次数最多的那个字母及次数,如有多个重复最多的则都输出。
- 循环遍历输出数组
- C 小写字母编程大写并输出
- ruby各种循环输出数组元素
- 2018.2.28【 UVa - 202 】解题报告(紫书练习题,循环小数,输出格式)
- 从键盘输入一批字符(以@结束),按要求加密并输出。加密规则为:1.所有字母均转化为小写;2.若是a到y,则转化为下一个字母;3.若是z,则转化为a;4.其他字符保持不变
- 编写一个程序从标准输入读取字符,并把他们写到标准输出,除了大写字母转换成小写字母之外,其他的原样输出。
- 数据结构 c语言实现链式循环队列(输入数字入队 输入字母出队)
- C语言——实例006 用*号输出字母C的图案。
- 输入一行字符,统计其中字母、数字、空格、其它字符的数量,并输出到控制台
- 循环控制语句的学习(以输出反序数为例)