题目链接:https://vjudge.net/problem/UVA-227#author=0

题解:这个题不难但需要注意很多点

1.需要输入空格,而cin不读取空格,所以需要getchar,而getchar与NULL联系时,优先级过低,需要加()。

2.每次都需要换行,换行需要getchar()

3.我一开始就报错Runtime error,原因是,最后就算到0到6,越界,也进行运算,那么行数就会变为-1,就越界了,解决办法时加个if

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char qi[7][7];
int main()
{
    int cou=0;
    memset(qi,0,sizeof(qi));
    while((qi[1][1]=getchar())!=NULL)//cin自动忽略空格,而getchar优先级比较低,需要加()
    {
        cou++;
        int flag=1;
        if(qi[1][1]=='Z') break;
        for(int i=2;i<=5;i++)
            qi[1][i]=getchar();
        getchar();
        for(int j=2;j<=5;j++)
        {
           for(int i=1;i<=5;i++)
                qi[j][i]=getchar();
            getchar();
        }
        int bx,by;
        for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++)
            if(qi[i][j]==' ')
        {
            bx=i;
            by=j;
        }
        char ch,t;
        for(;;)
        {
            ch=getchar();
            if(ch=='0') break;

if(flag==1)
            {
               if(ch=='A')
           {
                qi[bx][by]=qi[bx-1][by];
                qi[bx-1][by]=' ';
                bx--;
                if(bx==0) flag=0;
            }
            else if(ch=='B')
            {
                qi[bx][by]=qi[bx+1][by];
                qi[bx+1][by]=' ';
                bx++;
                if(bx==6) flag=0;
            }
            else if(ch=='L')
            {
                qi[bx][by]=qi[bx][by-1];
                qi[bx][by-1]=' ';
                by--;
                if(by==0) flag=0;
            }
            else if(ch=='R')
            {
                qi[bx][by]=qi[bx][by+1];
                qi[bx][by+1]=' ';
                by++;
                if(by==6) flag=0;
            }
            }
        }
        getchar();
        if(cou>1) cout<<endl;
        cout<<"Puzzle #"<<cou<<":"<<endl;
        if(flag==0) cout<<"This puzzle has no final configuration."<<endl;
        else
        {
            for(int i=1;i<=5;i++)
            {
                for(int j=1;j<=5;j++)
                {
                    if(j!=1) cout<<' ';
                    cout<<qi[i][j];
                }
                cout<<endl;
            }
        }
        memset(qi,0,sizeof(qi));
    }
    return 0;
}

处理字符getchar()-------Puzzle的更多相关文章

  1. 关于getchar()的知识

    char* s1 = "123",字符串"123"这段内存是只读的,就是说其内容不能改变///char *s 这个是指申请一个地址空间 记录一个地址 #incl ...

  2. getchar getche getch的区别

    getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘 ...

  3. C++/VC中ANSI与UNICODE中字符定义和函数对照表

    这样查起来方便多了 ANSI UNICODE 通用 说明 数据类型 (char.h) (wchar.h) (tchar.h)   char wchar_t TCHAR   char * wchar_t ...

  4. 关于getchar的一些思考

    这个问题是有一段代码引起的: 代码1: #include<iostream> using namespace std; int main() { char t; t=getchar(); ...

  5. getchar() getch() getche() gets() puts() scanf()的用法及区别

    getchar() putchar(ch) scanf()   头文件stdio.h getch() getche()   头文件conio.h gets() puts()    头文件stdio.h ...

  6. getchar,scanf以及缓冲区

    getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.getch()和getche()是conio.h中的 ...

  7. c/c++学习系列之putchar、getchar、puts、gets的运用

    如果您只想取得使用者输入的字元,則可以使用getchar(),它直接取得使用者輸入的字元并传回,如果只想要输出一個字元,則也可以直接使用putchar(),以下是个简单的例子: #include &l ...

  8. scanf函数与getchar函数

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h&g ...

  9. 《UNIX环境高级编程》笔记——2.标准和实现

    随着UNIX各种衍生版本不断发展壮大,标准化工作就十分必要.其实干啥事都是这样,玩的人多了,必须进行标准化. 一.UNIX标准 1.1 ISO C(ANSI C) ANSI:Amerocan Nato ...

随机推荐

  1. django drf 10大请求序列化方法

    ## 整体单改 路由层.模型层.序列化层不需要做修改,只需要处理视图层:views.py ```python"""1) 单整体改,说明前台要提供修改的数据,那么数据就需要 ...

  2. 个人认为目前比较好用的ECMAScript(16-20)新特性

    ECMAScript(16.17.18.19)新特性 Array.prototype.includes includes 是数组上的简单实例方法,可以轻松查找到数组中是否包含指定内容(包括NaN) 返 ...

  3. Springboot--元注解及自定义注解(表单验证)

    本文简单说明一下元注解,然后对元注解中的@Retention做深入的讨论,在文章最后使用元注解写一个自定义注解来结尾. 一.结论: @Target:注解的作用目标 @Target(ElementTyp ...

  4. python 异常类型大全

    try except 处理异常真舒服!!!

  5. html+css快速入门教程(4)

    练习 1.网易考拉下拉菜单 2.爱奇艺新闻 3.ps滤镜菜单 4.爱奇艺列表 7 布局 7.1 盒子模型 网页设计,首先要做好整体的布局,网页布局就是将不同的元素按照一定的规则放置在浏览器的不同位置, ...

  6. 安装hadoop2.9.2 jdk1.8 centos7

    安装JDK1.8 查看JDK1.8的安装 https://www.cnblogs.com/TJ21/p/13208514.html 安装hadoop 上传hadoop 下载hadoop     地址h ...

  7. .net Core中如何读取Appsetting配置文件

    现在APPSetting下面配置以下节点 { "Logging": { "IncludeScopes": false, "LogLevel" ...

  8. 前端JS 下载大文件解决方案

    问题场景 点击导出按钮,提交请求,下载excel大文件(超过500M),该文件没有预生成在后端, 直接以文件流的形式返回给前端. 解决方案 在Vue项目中常用的方式是通过axios配置请求,读取后端返 ...

  9. 【Linux】CentOS7 常用命令集合

    CentOS7 常用命令集合 常用命令 文件与目录 操作命令解析 cd /home 进入 ‘/home’ 目录cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp ...

  10. 数据可视化基础专题(十二):Matplotlib 基础(四)常用图表(二)气泡图、堆叠图、雷达图、饼图、

    1 气泡图 气泡图和上面的散点图非常类似,只是点的大小不一样,而且是通过参数 s 来进行控制的,多的不说,还是看个示例: 例子一: import matplotlib.pyplot as plt im ...