社区讨论

这题是我冲的最难受的一次,写一下心得

P1957口算练习题参与者 23已保存回复 23

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
23 条
当前快照
1 份
快照标识符
@lqb2th8u
此快照首次捕获于
2023/12/18 23:34
2 年前
此快照最后确认于
2023/12/19 11:29
2 年前
查看原帖
在洛谷冲的最难受的一集,导了半天才出来: 字符串类型题,难点第一是scanf的一个特性,第二个scanf还会输入之前缓冲流留下来的\n换行符,导致输入bug,用scanf(" %c")加个空格或者第一个scanf后面放一个getchar修好之后,我在想办法判断一个数输进来是字符还是数字,我又不屑于用那个ctype.h头文件(其实是我不会用),于是用了大小号直接比较ascii数值判断完事之后,于是来到了第二个最恶心的难点,getchar会把第一个字符给弄掉,这样检测的成本是把我的数给破坏了,我想吸回来getchar吸走的第一个数字字符,于是用sprintf格式化把字符和残缺的整数合并为字符串,再用atoi函数变成整数,这样就可以“吸回来了”,把第一个读取的数字弄完整,但这样做还有一个致命的问题,譬如1025这样的数,1被getchar吸走之后变成025被scanf(“%d”)读走的时候不是025而是25,用上述的方法组合成完整的数字后就变成125,这个bug又把我烦恼半天,最后我想起在CSDN看的一个能把读到的字符放回输入流的函数ungetc,把吸走的1放输入流,这样也不用上述一堆复杂的逻辑拼凑完整,最后终于AC了

回复

23 条回复,欢迎继续交流。

正在加载回复...