返回信息流题目是这样的:把手放在键盘上时,稍不注意就会往右错一位。这样的话,Q会变成W,J会变成K等。样例输入: OS, GOMR YPFSU/ 样例输出: I AM FINE TODAY.代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
char *s = "`1234567890-=QWERTYUIOP[]ASDFGHJKL;'\\ZXCVBNM,./";
int main() {
char c;
int i;
while((c=getchar())!=EOF){
for(i=0;s[i]&&s[i]!=c;i++); //s[i]&&s[i]是什么意思?
if(s[i]) putchar(s[i-1]);
else putchar(c); //这里又是什么意思?
}
return 0;
}
希望大神们能解答一下
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #93166同步于 2017/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
【问题】算法竞赛入门经典的一道例题
Starsunny
2017/5/9镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
第一个//标的那句楼上解释了,用来找到c的位置
第二个//标的那句发生在输入不在s中的情况,比如tab这种
然而这个解法真的大丈夫吗,比如输入Q会输出=。。
多谢啦,的确是存在这个问题...
【 在 vividear 的大作中提到: 】
: 第一个//标的那句楼上解释了,用来找到c的位置
: 第二个//标的那句发生在输入不在s中的情况,比如tab这种
: 然而这个解法真的大丈夫吗,比如输入Q会输出=。。
s[i]&&s[i]!=c
我的理解是先判断s[i]是否为空
在判断!=c
难道java里面!=的优先级高么?
不是&&这种运算,第一个不成立,直接不执行第二个么?