| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:将程序改编为 加入调用函数,出现问题
只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
将程序改编为 加入调用函数,出现问题
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define MAXX 11
#define MAXY 11

void generate_random_walk(char walk[][]);      //问题点1 
void print_array(char walk[][]);               //

int main() 
{
    char get[MAXX][MAXY];
    generate_random_walk(walk);        //问题点2 
    print_array(walk);                  // 
    
    return 0;
}

void generate_random_walk(char walk[][])         //问题点3 
{
    int i =0, j = 0, count = 1;
//    char walk[MAXX][MAXY];
    const char str='A';
        srand( (unsigned) time(NULL) );
  

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

void print_array(char walk[][])          //问题点4 
{
    int i, j;
    for(i=1;i<10;i++)
      {
         for(j=1;j<10;j++)
         printf("%c ",walk[i][j]);
         printf("\n");
      }
     
}

有疑惑的地方我都注明了。主要是函数调用那和下面新函数开始的那个地方。(程序是改编【生成一种10*10的字符数组的随机步法,从A走到Z。下图为原程序的一个输出】)[local]1[/local]原程序应该没什么问题,改编如要加入调用函数。虚心求教
2015-09-22 14:31
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 楼主 达尔文
图片附件: 游客没有浏览图片的权限,请 登录注册

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-22 14:32
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
编译不通过

总有那身价贱的人给作业贴回复完整的代码
2015-09-22 14:39
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 3楼 embed_xuel
是的。程序改编后就不能通过了,我把出错的地方注释了,还是搞不清楚

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-22 14:59
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:20 
回复 4楼 达尔文
char get[MAXX][MAXY];
    generate_random_walk(walk);        //入参的walk在哪里定义的?
    print_array(walk);                 //入参的walk在哪里定义的?

总有那身价贱的人给作业贴回复完整的代码
2015-09-22 15:02
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 5楼 embed_xuel
抱歉,我之前写的是walk[MAXX][MAXY]的。结果老是不通过,我就把它改着看看,看是不是定义多了。我试着把后面的[][]都填入MAXX MAXY 或者11,结果就能通过编译了。由于学习C不是很久,很生疏。我按着书上函数声明的模式进行的声明,结果各种尝试都不能通过,书上的是一维数组[]内没有写东西,而这道题是2维数组,如果[][]里面没有东西的话就无法通过,这是属于某个遗漏的知识点呢还是能通过纯属巧合,与函数声明[][]里面有没有东西无关,虚心求教3Q

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-22 15:20
快速回复:将程序改编为 加入调用函数,出现问题
数据加载中...
 
   



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

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