处理字符getchar()-------Puzzle
题目链接: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的更多相关文章
- 关于getchar()的知识
char* s1 = "123",字符串"123"这段内存是只读的,就是说其内容不能改变///char *s 这个是指申请一个地址空间 记录一个地址 #incl ...
- getchar getche getch的区别
getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘 ...
- C++/VC中ANSI与UNICODE中字符定义和函数对照表
这样查起来方便多了 ANSI UNICODE 通用 说明 数据类型 (char.h) (wchar.h) (tchar.h) char wchar_t TCHAR char * wchar_t ...
- 关于getchar的一些思考
这个问题是有一段代码引起的: 代码1: #include<iostream> using namespace std; int main() { char t; t=getchar(); ...
- getchar() getch() getche() gets() puts() scanf()的用法及区别
getchar() putchar(ch) scanf() 头文件stdio.h getch() getche() 头文件conio.h gets() puts() 头文件stdio.h ...
- getchar,scanf以及缓冲区
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.getch()和getche()是conio.h中的 ...
- c/c++学习系列之putchar、getchar、puts、gets的运用
如果您只想取得使用者输入的字元,則可以使用getchar(),它直接取得使用者輸入的字元并传回,如果只想要输出一個字元,則也可以直接使用putchar(),以下是个简单的例子: #include &l ...
- scanf函数与getchar函数
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h&g ...
- 《UNIX环境高级编程》笔记——2.标准和实现
随着UNIX各种衍生版本不断发展壮大,标准化工作就十分必要.其实干啥事都是这样,玩的人多了,必须进行标准化. 一.UNIX标准 1.1 ISO C(ANSI C) ANSI:Amerocan Nato ...
随机推荐
- 四层发现-TCP和UDP发现简介
虽然这里使用到了端口发现,但是四层发现阶段并不对端口进行解析,而是通过端口进行对ip是否存活的判断. 这里是对主机的发现,而不是对端口的识别. 四层发现的结果比三层发现的结果更加精确,基本不会被防火墙 ...
- IOT设备SmartConfig实现
一般情况下,IOT设备(针对wifi设备)在智能化过程中需要连接到家庭路由.但在此之前,需要将wifi信息(通常是ssid和password,即名字和密码)发给设备,这一步骤被称为配网.移动设备如An ...
- 基于TCP与UDP协议的socket通信
基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...
- 入门大数据---Kafka消费者详解
一.消费者和消费者群组 在 Kafka 中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka 之所以要引入消费者群组这个概念是因为 Kafka 消费者经 ...
- maven测试配置是否成功
测试maven 是否安装成功 win+r 输入 cmd 调出doc 输入 mvn -v maven安装完成测试报错 后来发现是java-home在path中配置缺少bin,如下图 这个是 java-h ...
- jQurey zTree API 3.5
https://jeesite.gitee.io/front/jquery-ztree/3.5/api/API_cn.html
- 使用MWeb进行博客发布测试
MWeb 是专业的 Markdown 写作.记笔记.静态博客生成软件,目前已支持 Mac,iPad 和 iPhone.MWeb 有以下特色: 软件本身: 使用原生的 macOS 技术打造,追求与系统的 ...
- tyvj 1198 矩阵连乘——区间dp
tyvj 1198 矩阵连乘 题目描述 一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算 ...
- [JAVA]使用字节流拷贝文件
import java.io.*; /** * @Description: * @projectName:JavaTest * @see:PACKAGE_NAME * @author:郑晓龙 * @c ...
- 从0开始,手把手教你开发并部署上线一个知识测验微信小程序
上线项目演示 微信搜索[放马来答]或扫以下二维码体验: 项目源码 项目源码 其他版本 Vue答题App实战教程 Hello小程序 1.注册微信小程序 点击立即注册,选择微信小程序,按照要求填写信息 2 ...