| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1521 人关注过本帖
标题:如何将字母A放在数组左上角第一个位置(随机分布)
只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:24 
如何将字母A放在数组左上角第一个位置(随机分布)
编写程序,生成一种贯穿10*10字符数组的“随机分布”。A-Z
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define MAXX 10
#define MAXY 10
int main() 
{
    int i =0, j = 0, count = 0;
    char map[MAXX][MAXY];
    const char str='A';
    
    

    
    for (i=0; i<MAXX; i++)
    {     
        for (j=0; j<MAXY; j++)
        {
            map[i][j]='.';
        }
    }

    srand( (unsigned) time(NULL) );    
    i = rand()%MAXX; 
    j = rand()%MAXY;
    
    while(1)
    {
        

        
        
        switch (rand()%4) //0、1、2、3分别代表上、下、左、右
        {        
        case 0: if (i-1>=0    && map[i-1][j  ]=='.') 
        {  map[i-1][j]=str+count;
           count ++;
           i -= 1;
        }     break;
    
        case 1: if (i+1<=MAXX && map[i+1][j  ]=='.') 
        {  map[i+1][j]=str+count;
           count ++;
           i += 1;
        }     break;
        case 2: if (j-1>=0    && map[i  ][j-1]=='.') 
        {  map[i][j-1]=str+count;
           count ++;
           j -= 1;
        }     break;
        case 3: if (j+1<=MAXY && map[i  ][j+1]=='.')
         {  map[i][j+1]=str+count;
           count ++;
           j += 1;
        }     break;    
        }
        if(count ==26)   break;
}
    

      for(i=0;i<10;++i)
      {
         for(j=0;j<10;++j)
         printf("%c ",map[i][j]);
         printf("\n");
      }
     return 0;
}

搞了好久,求教
搜索更多相关主题的帖子: 编写程序 如何 字母 
2015-09-15 12:53
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
const char str='A';下面还有这句
map[0][0]=str; 不小心给删了。可还是没什么用哈

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-15 12:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
是这个样子吗???????

程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    char t[26];
    for(int i=0;i<26;i++) t[i]=i+65;
    srand((unsigned)time(NULL));
    char s[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            s[i][j]=t[rand()%26];
        }
    }
    s[0][0]='A';
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            printf("%4c",s[i][j]);
        }
        printf("\n");
    }
    return 0;
}
/*

 A   B   I   E   G   J   W   W   V   V

 Z   S   I   T   E   Q   A   D   G   H

 B   Q   U   B   Q   Z   B   P   D   H

 P   G   H   R   H   H   V   L   A   E

 L   Z   S   P   H   U   I   U   C   R

 D   Z   Q   W   H   S   Z   N   Q   I

 U   H   I   A   R   C   N   M   U   W

 K   M   M   H   E   A   T   J   Z   S

 U   P   Y   M   R   H   K   N   B   C

 R   S   J   H   E   A   T   D   M   N
*/

DO IT YOURSELF !
2015-09-15 15:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
回复 3楼 wp231957
他要将 ABC……Z 排成一条蛇状,估计和“贪吃蛇”游戏差不多
最难的就是,当无法继续时,怎么回退?比如
A H G
B I F
C D E
此时 J 没有地方放了
2015-09-15 16:11
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 3楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

像这样,怎么把A弄左上角第一个'.'那呢

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-15 18:19
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 4楼 rjsp
如果4个方向都走不通了,程序得终止了。。像有时候编译出来什么都没有显示,是不是属于走不通这种情况呢?如果走不通,如何输出结果呢?(走了多少个字母显示多少个)。虚心求教

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-15 18:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没明白你想干什么。什么叫“走不通”?走什么?

授人以渔,不授人以鱼。
2015-09-15 23:04
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 7楼 TonyDeng
像4楼所说那样,如果
A H G
B I F
C D E
此时 J 没有地方放了,则程序必须输出

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-16 10:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
还是不明白,你8楼这些字母是用什么规律摆上去的?

授人以渔,不授人以鱼。
2015-09-16 22:14
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 9楼 TonyDeng
随机走(4个方向【上 下 左 右】)。依次ABCD......Z。如果上下左右都被前面输出的字母占据,没有走的路了。则选择输出。

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-16 22:48
快速回复:如何将字母A放在数组左上角第一个位置(随机分布)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018976 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved