易截截图软件、单文件、免安装、纯绿色、仅160KB

C语言的一个简单算法: 26个字母随机步生成

一个简单的小程序, 原题目见<C语言程序设计-现代方法>第八章练习13.
由于自己只看到第八章, 所以, 不敢贸然使用函数等其他内容, 高手请放声大笑.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
/**
* @author: selfimpr
* @blog: http://blog.csdn.net/lgg201
* @email: lgg860911@yahoo.com.cn
* 功能:
* ROWS * COLS的方格中实现随机步. 即将26个大写字母按顺序以随机的方向排列.
* 这里实现的是八个方向(汗, 不知道有没有八个方向一说.)
* 缺陷:
* 有较大几率被困死, 没有做优化处理.
* 数据结构设计:
* 1. ROWS, COLS宏定义了棋盘的大小
* 2. board二维数组定义了棋盘, 没有字母的以.号补空
* 3. i, j为循环因子, 在方向控制时, 充当了移动的方向控制.
* 4. direction为方向控制变量.
* 5. ch是顺序获取字母的循环因子.
* 6. row, col存储临时的移动坐标, 存储该坐标为了保证获取的方向不可用时, 不影响原数据.
* 流程:
* 1. 初始化棋盘, 以.号初始化所有元素, 打印一次空棋盘后, 将棋盘[0, 0]坐标元素设置为'A'.
* 2. 设置随机数生成种子为当前时间, 以保证每次生成的随机数不同.
* 2. 循环处理字母
* 3. 获取随机方向, 并根据方向取得移动后的坐标, 保存到临时变量row和col中.
* 4. 判断新的坐标是否有效
* 5. 如果新坐标不可用, 到第3步重新获取方向.
* 6. 如果新坐标有效:
* 6.1. 设置棋盘对应位置的字母
* 6.2. 将临时坐标信息转存到真正的当前坐标i, j中.
* 6.3. 获取下一个字母
* 6.4. 到第2步重新开始处理下一个字母.
* 7. 打印最后生成的棋盘.
*
*/
int main() {
char board[ROWS][COLS];
int i, j, direction;
srand( (unsigned) time(NULL));
for(i = 0; i < ROWS; i ++) {
for(j = 0; j < COLS; j ++) {
board[i][j] = '.';
}
}
for(i = 0; i < ROWS; i ++) {
for(j = 0; j < COLS; j ++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
board[0][0] = 'A';
printf("\n");
char ch;
i = 0; j = 0;
int row = 0, col = 0;
for(ch = 'B'; ch <= 'Z';) {
direction = rand() % 8;
switch(directio


相关文档:

深入理解extern "C"

一、从C与C++编译连接方式深入理解extern "C"
<1>.C和C++对函数的处理方式是不同的.被extern "C"修饰的变量和函数是按照C语言方式编译和连接的.extern "C"用于实现C++与C及其它语言的混合编程。
<2>.未加extern “C”声明时的编译方式
首先看看C++中对类似C的函数是怎样编译的。
作为一种面向 ......

Linux环境下用c语言写的播放wav文件的小程序

本程序可以读取.wav文件,然后进行播放。
确认方法:cat /etc/sndstat,如果显示无此设备,则没有安装驱动。
#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/ioctl.h>#include <stdlib.h>#include <stdio.h>#include&nbs ......

C语言基本功教程系列(3) 快速的函数调用

C语言基本功教程系列(3) - 快速的函数调用
我又来了,今天坎坎函数调用的问题。函数哪里都有,小的程序一两个函数,大的程序成百上千个函数。即使在游戏的关键循环中,调用几十个函数也是很常见的。所以函数调用代码的质量,在很大程度上影响着游戏的质量。
还是先说最基本的代码风格问题。首先,对于函数的参数(特别是 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号