ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

110.考试排名(输入有问题

2026/8/3 21:53:12 拓冰建站 浏览量
110.考试排名(输入有问题

为什么可以用while (scanf("%s", name) == 1)外层 + 内层for (i=0; i<n; i++) scanf("%s", prob)来正确读取像下面这样的多行输入?


📥 你的输入示例(8 题,罚分未给出,但格式如下):

Smith -1 -16 8 0 0 120 39 0 John 116 -2 11 0 0 82 55(1) 0 Josephus 72(3) 126 10 -3 0 47 21(2) -2 Bush 0 -1 -8 0 0 0 0 0 Alice -2 67(2) 13 -1 0 133 79(1) -1 Bob 0 0 57(5) 0 0 168 -7 0

✅ 总结

while+for能正确读取多行输入,是因为scanf("%s")忽略所有空白字符(包括换行),把整个输入看作一个连续的 token 流。

只要每行的 token 数量固定(1 + n),这种读法就完美匹配,简洁高效!

这也是 OJ(在线判题系统)中处理此类格式输入的标准做法