getchar与回车符
getchar()非常神奇,就连回车也能读。
想要获得更好的阅读体验?
对于洛谷 P1765 手机,我们会很自然地写出如下的代码:
#include<cstdio>
int list[]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
int main()
{
char c;
int n=0;
while ((c=getchar())!=EOF)
{
if (c==' ')
n++;
else
n+=list[c-'a'];
}
printf("%d\n",n);
return 0;
}
然后很自然地得到了零分。
现场
下载第一组测试数据,我发现输入的末尾有回车符,这个回车符也被读了进去,导致了 WA 一片。
上网搜索得:
回车,ASCII码13
换行,ASCII码10
空格,ASCII码32
修改代码:
//洛谷P1765 手机
#include<cstdio>
int list[]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
int main()
{
char c;
int n=0;
while ((c=getchar())!=EOF)
{
if (c==13||c==10)
break;
if (c==' ')
n++;
else
n+=list[c-'a'];
}
printf("%d\n",n);
return 0;
}
AC!