求助 一维数组求重复元素以及个数
输入6个从小到大排列的数字,首要条件:要求输出其中重复元素最多的项以及个数,如果有多组重复元素个数一样时,输出最大的元素以及个数Eg: 输入:3 3 5 5 7 9 得到:value=5, 相同个数为2;//元素3、 5均重复两次,所以取5
输入:5 5 5 5 7 7 得到:value=5, 相同个数为4;//虽然7大于5,但是5重复了4次,所以取5
我首先写的代码如下,求大神帮我修改一下,感激不尽!!!
程序代码:
#include <stdio.h> #define SIZE 6 int main (void) { int number[SIZE],i,k,value; int score; value=0; k =1; i = 0; while (i < SIZE) { scanf("%d", &number[i]); i++; } i=0; while(i<SIZE-1) { if (number[i]==number[i+1]) { value = number[i]; k++; } i++; } printf("value=%d, 相同个数为%d\n", value, k);
在这种情况下,当只有一组元素重复时时满足条件的,但当我输入3 3 5 5 7 9的时候,得到的k的结果为3了,c语言在3的时候判断了一次,在5的时候判断了一次,所以得到的结果不符合条件。
然后我进行了修改,改成了下面的模式:(开头部分因为和上面相同,所以我省略了,只写了判断的部分)
程序代码:
k=0; i=0; while(i<SIZE-1) { if (number[i]==number[i+1]) { value = number[i]; } i++; } for(i=0;i<SIZE;i++) { if(number[i]==value) { k++; } } printf("value=%d, 相同个数为%d\n", value, k);
修改后对于3 3 5 5 7 9 这串数组满足条件了,但是对于5 5 5 5 7 7, 输出的结果为value=7, 相同个数为2;这里满足了输出最大的元素这个条件而不是重复次数最多的条件,这里我不知道该怎么改了,求求大神帮忙修改下,谢谢啦!
[ 本帖最后由 rtfbvg 于 2015-4-10 15:09 编辑 ]