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
相关文档:
我是一个计算机专业的本科生,现在我们刚刚学完了数据结构。据说数据结构对于我们编程很重要,可是我现在不知怎么把数据结构和C语言结合起来,以便更好的进行c语言编程。有哪位高手指点一二,在下感激不尽!
......
转载自:
馨荣家园blog
在C语言中,假设我们有这样的一个函数:
int function(int a,int b)
调
用时只要用result =
function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算
机没有办法知道一个函数调用需要多少个、什么样的参数,也 ......
第一章 导言
1,定义(define)与声明(declaration)
定义表示创建变量或分配存储单元;而声明指的是说明变量的性质,但不分配存储单元。
第二章 类型、运算符和表达式
1,数据类型及长度
C中只有4种基本数据类型:char ,int ,float ......
第一次仔细地看这种代码,都是从网上复制做了略微改动后的产物。代码如下:
#include "reg52.h"
unsigned char Count;
sbit Xiang=P1^2 ; //蜂鸣器响
unsigned char code SONG[] ={
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x2 ......