问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c语言输出

发布网友 发布时间:2022-04-21 21:06

我来回答

3个回答

热心网友 时间:2023-11-03 05:12

//这个问题的思路就是按规则走格子问题
//好比人物在一个5*5的房间里要走遍所有的位子
//规则如下:
//不走回头路
//不到万不得已不改变方向
//改变方向的次序为东>南>西>北

#include "stdafx.h"

#define R_WIDTH 7
#define R_HEIGTH 7

enum ROOM_DIR{
DIR_E=0,
DIR_S,
DIR_W,
DIR_N
};

typedef struct {
int x;
int y;
int dir;
} person_state_t;

int g_xofset[]={0,1,0,-1};
int g_yofset[]={1,0,-1,0};
char g_map[R_WIDTH][R_HEIGTH];
int g_step_num=1;

void init_room();
int print_map();
int step_one( person_state_t in_s,person_state_t *out_s );
int get_next_dir_val(person_state_t s,int dir);
int next_dir(int dir);

int main(int argc, char* argv[])
{
person_state_t cur_state,next_state;
int ret;

cur_state.x=1;
cur_state.y=1;
cur_state.dir=DIR_E;

init_room();
print_map();
while (1) {
ret = step_one(cur_state,&next_state);
if (ret !=0 ) {
break;
}
cur_state = next_state;
print_map();
}
print_map();

return 0;
}

int step_one( person_state_t in_s,person_state_t *out_s )
{
int cur_dir;

g_map[in_s.x][in_s.y]=g_step_num++;
if ( (get_next_dir_val(in_s,DIR_E)!=0) &&
(get_next_dir_val(in_s,DIR_S)!=0) &&
(get_next_dir_val(in_s,DIR_W)!=0) &&
(get_next_dir_val(in_s,DIR_N)!=0)
) {
return 1;
}
cur_dir = in_s.dir;
while (1) {
if ((get_next_dir_val(in_s,cur_dir)==0)) {
out_s->x = in_s.x+g_xofset[cur_dir];
out_s->y = in_s.y+g_yofset[cur_dir];
out_s->dir = cur_dir;
break;
}
cur_dir = next_dir(cur_dir);
}
return 0;
}

int get_next_dir_val(person_state_t s,int dir)
{
return g_map[s.x+g_xofset[dir]][s.y+g_yofset[dir]];
}

int next_dir(int dir)
{
if (dir==DIR_N) {
dir = DIR_E;
}else{
dir++;
}

return dir;
}

int print_map()
{
int i,j;
printf("========================\n");
for (i=0;i<R_WIDTH;i++) {
for (j=0;j<R_HEIGTH;j++) {
printf("%02d ",g_map[i][j]);
}
printf("\n");
}
printf("=======================\n\n");
return 0;
}

void init_room()
{
int i,j;

for (i=0;i<R_WIDTH;i++) {
for (j=0;j<R_HEIGTH;j++) {
if (i==0 || i==R_WIDTH-1 || j==0 || j==R_HEIGTH-1 ) {
g_map[i][j]=-1;
}else{
g_map[i][j]=0;
}
}
}
}

热心网友 时间:2023-11-03 05:12

#include<stdio.h>
main()
{
printf("1 2 3 4 5"\r\t);
printf("16 17 18 19 6"\r\t);
printf("15 24 25 20 7"\r\t);
printf("14 23 22 21 8"\r\t);
printf("13 12 11 10 9"\r\t);
}

热心网友 时间:2023-11-03 05:13

1 2 3 4 5
包括在里面么?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问信用卡暂未批准是什么意思 短发搭配什么帽子能吸睛?get下文各种短发的搭配攻略 入门智能机vivoy200t怎么样? 直短发配什么帽子好看 老狗狗为什么总低头 脚跟骨裂做了手术还装了钢板,请问要多长时间才能恢复。 脚跟粉碎性骨折术后多久能走路 脚跟骨折多久可以正常走路 如图,AD是∠BAC的平分线,点E在AB上,且AE=AC,EF ∥ BC交AC于点F.试说明... 如图,AD是角BAC的平分线,点E在AB上,且AE=AC,EF//BC交AC于点F.求证:EC... dos命令----求大全 delphi 自动填表下拉框年月日 iframe与frameset有什么区别 沪f-set294是什么意思 一道初中数学题:在一次“寻宝”游戏中,寻宝人已经... 谁能给一段点击之后出现日历的代码 没写 window.onload = function()时offfsetTop为空 off-set paper 什么纸 jar cvfm classes.jar mymanifset -c foo / . 什么... 淘宝花呗怎么看还款记录 怎么查花呗余额 手机里的视频太大怎么上传到电脑?(用qq上传到电... 手机QQ空间发视频怎么变大了 硬盘有几种接口 硬盘数据线与主板相连的那一端有几种接口类型?与... 数据线分哪几种? 全部硬盘数据线都一样通用吗? 电脑和硬盘连接的数据线是2种吗!数据线的型号和用... 硬盘数据线是哪个? ide硬盘数据线有几种 JavaScript月历问题 使用煎蛋工具发现ps痕迹明显,如何处理 高分请电脑高手帮忙·桌面无东西·任务管理器被锁 那种牌子的不粘平底锅最好,价钱要500以下的 ,要... 批处理实用文件 dj - 英文舞曲 成成劲爆英文嗨曲现场.mp3可以先上... 批处理 for 嵌套使用 变量无法赋值 如何在shell脚本中实现 scp 文件的时候不手动输入密码 如何在shell脚本中实现 scp 文件的时候不手动输入... 营业执照三证合一是哪三证? 个体工商户是三证合一吗 个体户怎么换三证合一 个体户需要三证合一吗 个人营业执照用办理三证合一吗 个体营业执照三证合一要哪些资料? 营业执照三证合一还有开户许可证吗? 三证合一后的营业执照和之前的营业执照有什么区别? 个体工商户营业执照需要三证合一吗 三证合一个体户营业执照注销流程 个体户要不要三证合一?