为了账号安全,请及时绑定邮箱和手机立即绑定

第一次函数用数组解体,就一直报错,求大佬指点

第一次函数用数组解体,就一直报错,求大佬指点

慕用7336610 2018-09-28 05:58:27
#include<iostream>#include<string.h>#include<ctype.h>#include<iomanip>#include<stdio.h>using namespace std;void search(char st[],int m,int n);int main(void){    int r,p=0,m=0,n=0,time=0;char st[5][4];int a,b;    char ope[99];    char button;    while(1)    {time++;        memset(st,0,sizeof(st));        for(r=1; r<=5; r++)        {            st[r]=getchar();            if(st[1][0]=='Z')            {                p=1;                break;            }        }        if(p)            break;            search(st,m,n);      while((button=getchar())!='0')      {          switch(button)      {case 'A':        st[m][n]=st[m-1][n];        st[m-1][n]=' ';        m=m-1;        break;        case'B':        st[m][n]=st[m+1][n];        st[m+1][n]=' ';        m=m+1;        break;        case'R':        st[m][n]=st[m][n+1];        st[m][n+1]=' ';        n=n+1;        break;        case'L':        st[m][n]=st[m][n-1];        st[m][n-1]=' ';        n=n-1;        break;}      }      cout<<"Puzzle #"<<time<<":"<<endl;      if(m*m<25&&n*n<25){        for(a=1;a<=5;a++)    for(b=0;b<=4;b++)    {if(b<4)cout<<st[a][b]<<' ';    if(b==4)cout<<st[a][b]<<endl;    }cout<<endl;}else cout<<"This puzzle has no final configuration."<<endl<<endl;}    return 0;    }void search(char st[],int m,int n){int a,b,stop=0;for(a=1;a<=5;a++)   {    for(b=0;b<=4;b++)    {if(st[a][b]==' '){m=a;n=b;break;stop=1;}}    if(stop)break;}    }
查看完整描述

2 回答

?
onemoo

TA贡献883条经验 获得超454个赞

我没看你的代码逻辑,单就导致错误的点说下:

在 main 函数中,别用所谓的“二维数组”char st[5][4],改为普通数组——比如 char st{20}——这样传入 search 函数时才不会报错。至于原因,你学了指针就知道了。  那么 search 中访问 st 元素的方式也要据此变化。

查看完整回答
反对 回复 2018-09-28
?
onemoo

TA贡献883条经验 获得超454个赞

你先说说,已经学过“指针”“指针和数组的关系”了吗?

查看完整回答
反对 回复 2018-09-28
  • 2 回答
  • 0 关注
  • 1839 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信