【问题描述】

编写程序,生成一种贯穿10*10字符数组的随机步法。字符数组初始化为全 '.'。程序随机地从一个元素“走到”另一个元素,每次可以向左、向右、向上、向下移动一个元素位置,不可越出边界。已访问过的元素按字母顺序标记为A到Z,不可再次走入。到达Z为一次成功行走。若4个方向都被堵住,则行走失败。输入初始位置,输出一次行走结果。

方向规定:0为上,1为右,2为下,3为左。即顺时针。

4个方向的尝试准则:如果随机到的方向不能走,则从该方向开始按顺时针一一尝试。例如,某一步随机到了方向 2,经检验 2 方向行不通,则尝试方向 3 ;如果方向 3 也行不通,则尝试方向 0 ( (3+1) % 4);如果方向 0 还是行不通,则尝试方向 1;如果 1 也行不通,4个方向都行不通,就认定行走失败,整个行走过程结束。

注意:如果行走失败,那么就退出行走,仍然要输出行走结果。

【输入形式】两个数x, y ,两个数之间用空格隔开,分别代表初始位置的行和列。0<=x,y<=9
【输出形式】输出10*10的方阵。输出的每个字符用空格隔开,每行末尾有空格。

【样例输入1】0 0
【样例输出1】

A . . . . . O P Q R

B C F G H I N M . S

. D E . . J K L . T

. . . . . . . . . U

. . . . . . . X W V

. . . . . . . Y Z .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

【样例说明】由于编译器的不同,导致rand的随机结果不一样。所以平台的输出和同学们在本机上的输出是不同的,因此不要纠结于和样例不一样。本样例是在dev c++下的输出,如果您使用了其他 IDE,可能会有完全不一样的输出。

分析:使用stdlib.h中的rand()函数来生成随机数,例如:rand()%4 输出 0~3的随机数。为方便助教检查,要求以输入初始位置为随机种子。例如:输入初始位置为x行y列,则设置随机种子为 x+10*y,通过开始前调用 srand(x+10*y) 来完成。之后就不要再调用 srand 函数了。

例如:

int x = 0, y= 0, i;

srand(x + 10 * y);

for (i = 0; i < 26; i++) {

int dir = rand() % 4;

printf("%d\n", dir);

}

另外,上下左右行走也就是横纵坐标加减1。

代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>void ranwalk (char walk[10][10]);
void array (char walk[10][10]);//打印结果int main()
{char a[10][10];ranwalk(a);array(a);
}void ranwalk (char walk[10][10])
{int x, y, seed;int i, j, k;scanf ("%d%d", &x, &y);seed = x + 10 * y;static int dir, m;for (i = 0; i < 10; i++){for (j = 0; j < 10; j++){walk[i][j] = '.';}}srand(seed);walk[x][y] = 'A';for (m = 66; m < 91; m++){dir = rand() % 4;for ( k = 0; k <= 3;){i = x, j = y; switch(dir) {case 0 :if(x != 0)x = x - 1;break;case 1 :if (y != 9)y = y + 1;break;case 2 :if (x != 9)x = x + 1;break;case 3 :if (y != 0)y = y - 1;break;}if (walk[x][y] == '.'){walk[x][y] = m;break;}else{dir = (dir + 1) % 4;x = i; y = j;}k++;}if (k == 4)break;}
} void array(char walk[10][10]){int i, j;for (i = 0; i < 10; i++) {for (j = 0; j < 10; j++) {printf("%c ", walk[i][j]);}printf("\n");}
}

大一C语言总结贴(持更) Part 10 随机步法相关推荐

  1. 大一C语言总结贴(持更) Part1 输出菱形

    本系列为大一C语言小白的上学期程序设计作业,一学期结束特简单整理一下.内容部分有参考大神的文章,部分代码段也稍显麻烦,本着分享总结的目的,不足之处欢迎指正!!! [问题描述]给定一个数 n ,2 &l ...

  2. 大一C语言挣扎之路1(电子计算机概述和Visual Studio )

    大一C语言挣扎之路1(电子计算机概述和Visual Studio ) C语言 一 电子计算机概述 1. 计算机的诞生 2. 冯·诺依曼结构 功能 组成部件 计算机工作流程 3. 计算机的发展历史 4. ...

  3. c语言大一期中考试含答案,大一C语言期末考试选择复习题.docx

    大一C语言期末考试选择复习题 ### ~~~1 下列叙述中正确的是( ). 程序设计就是编制程序 程序的测试必须由程序员自己去完成 程序经调试改错后还应进行再测试 程序经调试改错后不必进行再测试 ~C ...

  4. 【大一C语言项目】Cjson的认识与实现(一)

    [大一C语言项目]Cjson的认识与实现(一) 一.初识json 参考网站 菜鸟教程:JSON JSON介绍 JSON在线解析 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...

  5. 大一c语言大作业课题大全,昆明理工大学大一C语言大作业题目.doc

    昆明理工大学大一C语言大作业题目 综合性实践排序求平均值(包括将数拆散求最大最小值).函数ReadDat()随机产生100个存放到数组aa中00个jsSort()函数的功能是:进行降序排列.最后调用函 ...

  6. 大学c语言程序设计期末考试试卷,大学大一c语言程序设计期末考试试卷及答案.doc...

    大学大一c语言程序设计期末考试试卷及答案.doc 计算机科学学院C语言程序设计试卷A第1页(共8页)四川师范大学计算机科学学院20122013学年度第二学期期末考试C语言程序设计试卷试卷A答卷说明1. ...

  7. 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...

    大学大一c语言程序设计实验室上机题全部代码答案(实验报告) C语言实验报告 实验1-1: hello world程序: 源代码: #include main() { printf("hell ...

  8. c语言的实验题答案,大一C语言上机实验试题及答案

    大一c语言基础 实验三 选择结构程序设计(2学时) 一.实验方式:一人一机 二.实验目的: 1.熟练掌握if语句和switch语句. 2.练习并掌握多分支选择结构的编程方法. 3.学习调试和修改程序的 ...

  9. 大一c语言程序课程报告,大一C语言课程设计.doc

    大一C语言课程设计 C语言课程设计报告 班 级: 电气1004 学 号: 201009334 姓 名: 雷海燕 指导教师: 王果 2011 年 07 月 18 日 1 基本题目 1.1题目 1.1 题 ...

最新文章

  1. Node.js的url模块简介
  2. WCF服务的REST / SOAP端点
  3. 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名
  4. Codeforces 524E Rooks and Rectangles 线段树
  5. 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)
  6. 浅析聚簇索引与非聚簇索引(也叫二级索引)
  7. 四大利器帮你走出IT运维管理的困境
  8. Qt实现简单的密码加密
  9. 短视频无水印解析网站源码
  10. Anylogic学习—银行排队模型
  11. Linux 下设置 SVN 忽略的目录和文件
  12. linux系统安装yarn,centos安装yarn
  13. python0不能做除数报错_浅谈pandas dataframe对除数是零的处理
  14. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾 二
  15. 快速学会网页中鼠标经过图片放大效果
  16. Shader GrabPass应用实例——实现扭曲效果
  17. intelGMA950开启3d特效
  18. 网站提示HTTP503Service Unavailable的处理办法
  19. 微信小程序点击图片预览真机无法显示的问题
  20. 112-RTKLIB中关于dcb文件读取的问题

热门文章

  1. PPT打开密码,如何解密?
  2. 邓俊辉 数据结构与算法C++版 第十三章 串 ADT
  3. Windows10蓝牙突然失灵 无法连接鼠标
  4. svg学习之svg动画
  5. 个人陈述怎么写计算机专业自招,自主招生个人陈述范文
  6. mirrors.aliyun.com 无法解析域名
  7. 基于BPM(业务流程管理)的低代码开发平台有哪些优势?
  8. ios系统升级记录适配篇
  9. 案例分析 | 优衣库DTC模式之全渠道零售
  10. 本地安装MySQL详细步骤