90分求助,最后一个一直是WA

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

我给你举个例子 就看你的第一个循环 如果我输入的是'A'然后直接换行 你会读入A 处理 这个时候因为你的c1是A所以会进下一次循环 然后你会读入'\n'并处理 然而这次处理我们并不想要(表达能力太差不知道能不能看懂
by oxygen_minister @ 2022-12-13 21:52:08


``` #include<stdio.h> int main() { char c1,c2; int b1,b2,a1=1,a2=1; c1=getchar(); while(c1!='\n') { a1=a1*(c1-64); c1=getchar(); } c2=getchar(); while(c2!='\n') { a2=a2*(c2-64); c2=getchar(); } b1=a1%47; b2=a2%47; if(b1==b2)printf("GO"); else printf("STAY"); return 0; } ``` 这样就轻松过了
by oxygen_minister @ 2022-12-13 21:52:35


@[oxygen_minister](/user/145177) 所以是不是说,按我原先的代码,在while的判断之前,\n已经读进去并进行运算了,所以结果不对;而优化之后的代码是先进行判断再运算再读值,就会避免这个问题(实际上就是先后顺序问题)?
by qgzhuyin @ 2022-12-18 13:53:51


@[qgzhuyin](/user/846575) 是的是的 我们需要先判断是否合法再对他进行处理
by oxygen_minister @ 2022-12-18 17:01:37


@[oxygen_minister](/user/145177) 好的好的,太感谢了❀
by qgzhuyin @ 2022-12-18 20:35:32


好像他的样例二错了
by zhengjinrun @ 2022-12-25 16:43:33


ABSTAR USACO
by zhengjinrun @ 2022-12-25 16:44:10


|