我给你举个例子 就看你的第一个循环
如果我输入的是'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