| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1198 人关注过本帖
标题:一个作业(网格),刚开始学,不知道错哪儿 请各位帮忙看看
只看楼主 加入收藏
guesswhohia
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-27
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
一个作业(网格),刚开始学,不知道错哪儿 请各位帮忙看看
有一个5*5的网格,其中恰有一个格子是空的,其他格子各有一个字母。一共有4种指令:A,B,L,R,分别表示空格上、下、左、右的相邻字母移到空格中。输入初始网格和指令序列(以数字0结束),输出指令执行完毕后的网格。如果有非法指令,应输出"This puzzle has no final configeration.",例如,以下网格执行ARRBBL0后,效果如下:
T R G S J    执行后  T R G S J
X D O K I            X O K L I
M   V L N            M D V B N
W P A B E            W P   A E
U Q H C F            U Q H C F

各位随意批评指正,真的刚开始学好多地方不知道。。
也可以直接给个答案我自己看。。
#include<stdio.h>
#include<string.h>
void main(){
char a[4][4];
char b[50];
int x=0;
int y=0;
int i=0;
int n=0;
char t;
char ch;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));

void left(){
t=a[x][y];
if(y-1<-1) printf("This puzzle has no final configeration.");
a[x][y]=a[x][y-1];
a[x][y-1]=t;
}

void up(){
t=a[x][y];
if(x-1<-1) printf("This puzzle has no final configeration.");
a[x][y]=a[x-1][y];
a[x-1][y]=t;
}

void right(){
t=a[x][y];
if(y+1>5) printf("This puzzle has no final configeration.");
a[x][y]=a[x][y+1];
a[x][y+1]=t;
}

void down(){
t=a[x][y];
if(x+1>5) printf("This puzzle has no final configeration.");
a[x][y]=a[x+1][y];
a[x+1][y]=t;
}

void print(){
for(x=0;x<5;x++)
      {for(y=0;y<5;y++)
        printf("%c ",a[x][y]);
        printf("\n");}   
}


for(x=0;x<5;x++){
      for(y=0;y<5;y++)
      scanf("%c",&a[x][y]);}
    for(x=0;x<5;x++)
      {for(y=0;y<5;y++)
        printf("%c ",a[x][y]);
        printf("\n");}

scanf("%s",&b);
while((ch=getchar())!='0'){
    b[i++]=ch;
}

n=i;

for(i=0;i<=n;i++){
    if(b[i]=='A') up();
    if(b[i]=='B') down();
    if(b[i]=='L') left();
    if(b[i]=='R') right();
}
print();
}
搜索更多相关主题的帖子: 格子 字母 
2015-09-27 00:58
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:2 
你的代码报错是什么?

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-09-27 02:43
guesswhohia
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-27
收藏
得分:0 
回复 2楼 蚕头燕尾
没报错,但是不出结果
2015-09-27 09:51
the_second
Rank: 2
等 级:论坛游民
帖 子:115
专家分:80
注 册:2015-9-13
收藏
得分:2 
你的函数错的有点多啊
2015-09-27 11:09
the_second
Rank: 2
等 级:论坛游民
帖 子:115
专家分:80
注 册:2015-9-13
收藏
得分:0 
char a[4][4];是放不下每行5个字符的
2015-09-27 11:09
the_second
Rank: 2
等 级:论坛游民
帖 子:115
专家分:80
注 册:2015-9-13
收藏
得分:0 
你的函数定义也错了
2015-09-27 11:11
guesswhohia
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-27
收藏
得分:0 
回复 5楼 the_second
但是确实可以输出每行5个。。
2015-09-27 16:20
guesswhohia
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-27
收藏
得分:0 
那各位看错误麻烦。有能说个思路的吗、、
2015-09-27 16:26
白金伯爵
Rank: 2
等 级:论坛游民
帖 子:47
专家分:48
注 册:2015-9-21
收藏
得分:0 
感觉有一类问题,每一个调用函数的变量都要在该函数内声明。例如:
void left(){
t=a[x][y];
if(y-1<-1) printf("This puzzle has no final configeration.");
a[x][y]=a[x][y-1];
a[x][y-1]=t;
}
t,x,y,这三个变量你都没有声明,系统不知道在哪里找到这三个变量,理论上是无法执行的。
新人浅见,希望对你有所 帮助。
2015-09-27 21:19
快速回复:一个作业(网格),刚开始学,不知道错哪儿 请各位帮忙看看
数据加载中...
 
   



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

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