您的位置:首页 > 编程语言 > C语言/C++

C语言程序设计现代方法 K.N.KING 第8章第9题

2018-02-04 23:28 218 查看
前言供检索 : 编写程序,生成一种10×10字符数组(初始时全为字符'.') 

希望我最后的注释大家引以为戒

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int main()
{
int i,j;
char a

;

for (i=0;i<N;i++)
{	for(j=0;j<N;j++)
{a[i][j]='.';
printf(".");
}
printf("\n");          //打印点阵
}
printf("\n");
srand((unsigned)time(NULL)); // 生成随机数

i=0,j=0;
a[i][j]=65; //////////65 is 'A'

int remove;

for(char k =66;k<91;k++) // 66 means B 90 is z
{
once:
if	((a[i-1][j]!=46)&&(a[i+1][j]!=46)&&(a[i][j-1]!=46)&&(a[i][j+1]!=46))
break;        // 判断是否四周都有活路  46为 . 的ASCII 码

remove = (rand()%10)%4;  // 开始 随机 扔数字 0 上 1 下 2 坐 3 右
switch (remove)
{
case 0: if(i>0 &&a[i-1][j]==46)
{a[--i][j]=k ;
break;
}
else goto once;
case 1: if(i<9 &&a[i+1][j]==46)
{	a[++i][j]=k ;
break;
}
else goto once;
case 2: if(j>0 &&a[i][j-1]==46)
{	a[i][--j]=k ;
break;
}
else goto once;
case 3: if(j<9 &&a[i][j+1]==46)
{	a[i][++j]=k ;
break;
}
else goto once;
}
}

for (i=0;i<N;i++)
{	for(j=0;j<N;j++)
{
printf("%c", a[i][j]);     // 打印最后的图
}
printf("\n");
}
return 0;
}
/* 书写规范的问题 我之前每条 case 语句 是这样写的
if(i>0 &&a[i-1][j]==46) a[--i][j]=k; break;
goto once;
导致我原先早就写对 但是一直跑不对 上网还另外看了两个小时左右
依旧没有发现有人给出正确代码 希望大家和我都要引以为戒
书写规范 别偷懒   */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程题