【发布时间】:2017-07-18 09:57:18
【问题描述】:
我最近开始学习 C,遇到了这个小测试。
编写一个从用户那里读取 10 个数字的代码。
打印最大和最小输入值,然后打印最频繁的数字。
对我来说一切都很简单,但最常见的数字让我发疯,我搜索了一段时间,找不到任何明确的答案。
我写的代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int hi[10], i=0, largest, smallest;
while(i<10)
{
printf("Enter a number:");
scanf("%d", &hi[i]);
i++;
}
smallest = hi[0];
largest = hi[0];
printf("Entered Numbers: ");
while(i!=0)
{
if(hi[10-i] < smallest) { smallest = hi[10-i]; }
if(hi[10-i] > largest) { largest = hi[10-i]; }
printf("%d | ", hi[10-i]);
i--;
}
printf("\nLargest number is = %d || Smallest number is = %d", largest, smallest);
return 0;
}
我想到的唯一想法是:
-
制作另一个数组。
-
获取原始数组中[i]的值。
-
将 [i] 与原始数组的其余值进行比较(如果它们相等或不相等)。
-
如果它们相等,则增加另一个数组的值。
-
检查另一个数组中的最大值,应该是最频繁的数字。
-
现在,我知道了最常见元素的顺序以及该元素被输入了多少次。
【问题讨论】:
-
@Vittorio Romeo:嗯,是的,这似乎是 OP 已经想出的解决方案。这对我来说似乎很明智。
-
查看此处提供的解决方案:stackoverflow.com/questions/26566265/… 并对其进行编辑以满足您的需求。
-
对数组进行排序。然后在 for 循环中从 hi[0]..h[9] 枚举数组中的项目。然后使用额外的变量来跟踪重复计数。
-
@sudo_coffee 这正是我所需要的!对其进行了一些修改,并且有效。 doynax,哎呀,所以我想我的想法还不错。我基本上是害怕在循环中的某个地方搞砸。