(1)、输入: 1、先一行一行输入(五行); 2、判断是否是Z; 4、再将其存储在二维数组中;
(2)、进行操作指南的输入: 1、以零结尾的一维数组,注意回车; (3)、再将操作指南一一对比可得: 1、if语句连接: 2、判断是否无效; (4)、输出: 1、二维数组;其中注意空行;
输入用幂: TRGSJ XDOKI M VLN WPABE UQHCF ARRBBL0 ABCDE FGHIJ KLMNO PQRS? TUVWX AAA LLLL0 ABCDE FGHIJ KLMNO PQRS? TUVWX AAAAABBRRRLL0 Z
首先,对于这道题,我遇到很多问题:
(1)、输入我遇到了问题:
1、一开始,我想使用直接输入二阶矩阵。但我不知道怎样输入Z的值。最后我利用了一行一行输入字符串。但我又遇到了问题,这个问题是我利用的是scanf("%s")输入的。但他遇到空格会直接变成另一行。我将它又换成了fgets()来解决它。但我又遇到了问题,它的'\n'会存在于新输入的之中。我将含有‘\n’将它删除,重新赋值;
2、a与c不匹配。我就将那个c匹配成a相等的,从我的方法角度来看就只有这个方法。
3、看我的输出用幂就知道了,这个题目其实有问题。没有明确告诉你,怎样搞,我是在网上找的AC的答案的写出来的。
4、
#include<stdio.h>
#include<string.h>
int main() {
int i=0,j,k,l,m,n,flag=0,ph=0,pl=0;
char a[1000],c[1000],b[1000];
char x[100][100];
int count=0;
while(1){
int error=0;
for(i=0; i<5; i++) {
fgets(a,10,stdin);
if(a[0]=='\n'){
i--;
continue;
}
c[0]='Z';
c[1]='\n';
c[2]='\0';
if(!strcmp(a,c)) {
flag=1;
break;
}
x[i][0]='\0';
for(k=0; k<5; k++) {
x[i][k]=a[k];
if(x[i][k]==' '){
ph=i;
pl=k;
}
}
}
if(flag==1) {
break;
}
int sum=0;
while(1){
scanf("%c",&b[sum]);
if(b[sum]=='0'){
b[sum]='\0';
break;
}
sum++;
}
for(l=0;l<sum;l++){
int ph1=ph,pl1=pl;
char t;
if(b[l]=='A'){
ph--;
}
else if(b[l]=='B'){
ph++;
}
else if(b[l]=='L'){
pl--;
}
else if(b[l]=='R'){
pl++;
}else if(b[l]!='\n'){
error=1;
break;
}
if(pl<0||pl>4||ph<0||ph>4){
error=1;
break;
}
t=x[ph1][pl1];
x[ph1][pl1]=x[ph][pl];
x[ph][pl]=t;
}
if(count!=0){
printf("\n");
}
printf("Puzzle #%d:\n",++count);
if(error==1){
printf("This puzzle has no final configuration.\n");
}
else{
for(m=0;m<5;m++){
for(n=0;n<5;n++){
if(n<4)
printf("%c ",x[m][n]);
else {
printf("%c\n",x[m][n]);
}
}
}
}
}
return 0;
}
TRGSJ XDOKI M VLN WPABE UQHCF ARRBBL0 Puzzle #1: T R G S J X O K L I M D V B N W P ? A E U Q H C F ABCDE FGHIJ KLMNO PQRS TUVWX AAA LLLL0
Puzzle #2: ? A B C D F G H I E K L M N J P Q R S O T U V W X ABCDE FGHIJ KLMNO PQRS TUVWX AAAAABBRRRLL0
Puzzle #3: This puzzle has no final configuration. Z
|