总结:1.EOF 2.fflush 3.语句逻辑错误
一.运行超时,如果你是这样做的:用c=getchar()获取字符,用temp存储数值,遇到空格和换行存入a[]并且换行之后break,但是没有考虑到最后一个字符是EOF(在第一组数据中是这样,第二组则不是,我从我的第三个错误中得到的结论),那么在读取EOF后没有break,导致进入死循环——运行超时。
解决的方法有
1.无视n,接收n之后数值全部scanf,使用while(~scanf("%d",&x)或者while(scanf("%d",&x)!=EOF).代码1(AC)
2.使用gets一行行以字符串的形式获取,再用strtok分割,atoi转化代码2(AC)。
二.结果错误——0分
有可能是因为你在scanf("%d",&n)之后使用的是fflush()而不是getchar()过滤换行解释1,一开始我是考虑n后面会不会有空格,只有一个getchar()只能过滤掉空格不能过滤换行导致数据读入缺失(实验已做,证明风险的确存在)。
三.结果错误——50分解释2
——————————————————————————
————分割线———————————————————
以下是原文
运行超时:一开始使用c=getchar()