“顶嵌杯”--初赛第5题分析
来源:互联网 发布:淘宝客链接转换器 编辑:程序博客网 时间:2024/05/29 16:30
字母旋转游戏
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
A B C D E F G H
V W X Y Z A B I
U J K L M N C J
T I H G F E D K
S R Q P O N M L
输入:
M为行数,N为列数,其中M,N都为大于0的整数。
输出:
分行输出相应的结果
样例输入:
4 9
样例输出:
A B C D E F G H I
V W X Y Z A B C J
U J I H G F E D K
T S R Q P O N M L
考察重点:程序逻辑设计
参考代码:
#include <stdio.h>
#define RIGHT 1
#define DOWN 2
#define LEFT 3
#define UP 4
int main(void)
{
int i = 0;
int M,N = 0;
int x,y = 0;
scanf("%d %d",&M, &N);
char a[M][N];
int dir = RIGHT;
for (x=0;x<M;x++) {
for (y=0;y<N;y++) {
a[x][y] = 0;
}
}
x = 0;
y = 0;
while (i < M*N) {
a[x][y] = 'A'+ i%26;
if (i+1 == M*N) break;
turn:
switch(dir) {
case RIGHT:
if ((y+1) == N || a[x][y+1] !=0) {
dir = DOWN;
goto turn;
}
y++;break;
case DOWN:
if ((x+1) == M || a[x+1][y] !=0) {
dir = LEFT;
goto turn;
}
x++;break;
case LEFT:
if ((y-1) == -1 || a[x][y-1] !=0) {
dir = UP;
goto turn;
}
y--;break;
case UP:
if ((x-1) == -1 || a[x-1][y] !=0) {
dir = RIGHT;
goto turn;
}
x--;break;
}
i++;
}
x = 0;
y = 0;
for (x=0;x<M;x++) {
for (y=0;y<N;y++) {
printf("%4c",a[x][y]);
}
printf("/n");
}
return 0;
}
文章来源:http://top-e.org/student/html/511.html
- “顶嵌杯”--初赛第5题分析
- “顶嵌杯”--初赛第1题分析
- “顶嵌杯”--初赛第2题分析
- “顶嵌杯”--初赛第3题分析
- “顶嵌杯”--初赛第4题分析
- 百度之星初赛A第5题 BD String
- NOIP2005初赛阅读程序第4题
- 2012百度之星初赛第2场c题
- 微软编程之美2013全国挑战赛 初赛第1场 第2题
- 顶嵌杯(初赛)
- 2005年百度之星程序设计大赛初赛试题与解答 第1题
- 2012百度之星初赛第2场:A题试题及参考答案
- Hdu 4500 (2013年 腾讯 马拉松 初赛 第0场 第一题 )
- 百度之星初赛第二轮第一题超时代码(可能还有错误)
- 科赛平台--2017中国网络安全技术对抗赛(初赛第14名分享)-第一题
- NOIP初赛准备:第6课时
- NOIP初赛准备第7课时
- 蓝桥杯初赛第三题
- 进步一点点
- “顶嵌杯”--初赛第1题分析
- “顶嵌杯”--初赛第2题分析
- “顶嵌杯”--初赛第3题分析
- “顶嵌杯”--初赛第4题分析
- “顶嵌杯”--初赛第5题分析
- 大二的期末考试
- 2010年1月14日
- 郁闷
- 博客园开通
- 系统程序员成长计划-组合的威力(三)
- Linux 进程管理剖析
- 【Silverlight】Bing Maps系列文章目录
- windows编程基础