c++复试题目,cin被跳过

题目如下:
机器人走迷宫
迷宫由 N W S E 组成 踩到N向上走一格 踩到W 向左走一格 踩到S向下走一格 踩到E 向右走一格
输入迷宫行数 列数 不大于10 机器人初始列数(注意 这个列数是从1开始数的) 判断能否走出迷宫。能走出输出步数
多组输入 遇 0 0 0 结束输入

输入

4 6 5
N N N N S N
N N N S W N
N N S W N N
N S W N N N
3 5 2
N S N N N N
N S W N N N
N E N N N N
0 0 0

输出

7
no

当输入第一组的时候就可以出去并且嗯继续执行,但是当输入第二组样例后,程序就陷入了死循环,cin>>那里应该输入但是却被直接跳过就陷入了死循环了不明白为什么,求大佬指点

我的代码

#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
    
    char str[10][10];
    while(1)
    {
        int a,b,c;
        cin>>a>>b>>c;
        if(a==0&&b==0&&c==0)break;
        for(int i=0;i<a;i++)
        {
            for(int j=1;j<=b;j++)
            {
                cin>>str[i][j];
            }
        }
        int count,d;
        d=count=0;
        while(count<=a*b)
        {
            
            if(str[d][c]=='N')
            {
                count++;
                d=d-1;
                if(d<0)
                {
                    break;
                }
                
            }
            if(str[d][c]=='S')
            {
                count++;
                d=d+1;
                if(d>=a)
                {
                    break;
                }
                
            }
            if(str[d][c]=='W')
            {
                count++;
                c=c-1;
                if(c<0)
                {
                    break;
                }
                
            }
            if(str[d][c]=='E')
            {
                count++;
                c=c+1;
                if(d>b)
                {
                    break;
                }
                
            }
        }
    
        if(count<=a*b)
        {
            cout<<count<<endl;
        }
        else
        {
            cout<<"no"<<endl;
        }
    }
    system("pause");
    return 0;
}
阅读 3.1k
3 个回答

行数3,列数5,但是你输入的矩阵是列数6。

数据给错了,同时while里面第三个if里面应该c<1跳出循环,第四个if应该c>b跳出。
两个原因一起导致了死循环的产生。

你不是输入0 0 0了吗

新手上路,请多包涵

检查cin的状态,应该是出错了。比如cin.good()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题