【问题标题】:Counting and sorting in CC中的计数和排序
【发布时间】:2025-12-01 18:25:01
【问题描述】:

我正在研究一个常规的 C 程序,它计算输入的数量并相应地对它们进行分类。我现在真的没有写任何代码,因为我还在考虑如何去做,所以我会尽力解释。

作为我想使用这个程序的一个例子,假设我希望它计算人们的投票数。我只对人口统计感兴趣,而不是实际投票。因此,用户使用个人选票输入每个人的性别和年龄,然后在最后添加一个总数,并在男性和女性之间进行统计。每个年龄段都会分配一个字符来帮助计算。例如年龄 0-20 = A,21-40 = B,41+ = C。然后,会有一个像 X0 这样的输入来结束计数:

所以它看起来像这样,将性别和年龄作为用户输入(忽略项目符号):

  • 输入性别和年龄:男性 17
  • 输入性别和年龄:女20
  • 输入性别和年龄:男性 30
  • 输入性别和年龄:女 46
  • 输入性别和年龄:男性 35
  • 输入性别和年龄:X0
  • 男:ABB
  • 女:交流
  • 总数:5

我正在考虑使用 while、for 和 do while 循环来完成此任务,因为我仍在学习该语言,但我很难做到这一点。

如果你们有任何建议,将不胜感激。

谢谢

【问题讨论】:

    标签: c counting


    【解决方案1】:

    您可能应该直接潜入并以您知道的方式编写它。早期的编码经验非常有用。如果您能得到与您描述的方式相符的东西,那么您只需通过繁重的工作就可以学到很多东西。

    要像您描述的那样在一行上获得输出和输入,您可能需要在printf 之后和scanf 之前调用fflush(stdout);

    顺便说一句,终止用户对程序的输入的常用策略是使用 EOF 代码(在 Unix/Linux 中为 ctrl-D,在 Windows 中为 ctrl-Z)。 scanf 如果遇到 EOF 而不是更多的键盘敲击,将返回负值。

    也就是说,作为一种更广泛的策略,我建议您开始考虑将这类程序视为非交互式。想象一下,如果程序不需要每次都检查问卷,而是直接从文件中读取数据。而不是完整的单词,它会有单字母代码,看起来更像

    M 17
    F 20
    

    而程序只是进行了计数。那不是更容易编写和使用吗?

    【讨论】:

      【解决方案2】:

      您可以使用 switch 语句和 if 语句,并使用计数器来记录选票。我会这样处理问题。试着在纸和笔上做一点,写一点代码我相信一旦你开始用纸和笔你就会得到它。同样对于排序,您可以使用一个循环来处理它。

      【讨论】: