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

前言供检索 : 编写程序,生成一种10×10字符数组(初始时全为字符'.')

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

#include

#include

#include

#define N 10

int main()

{

int i,j;

char a[N][N];

for (i=0;i

{ for(j=0;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

{ for(j=0;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;

导致我原先早就写对 但是一直跑不对 上网还另外看了两个小时左右

依旧没有发现有人给出正确代码 希望大家和我都要引以为戒

书写规范 别偷懒 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值