与众不同地计算数组元素出现的次数和元素所在位置的索引号。
小技巧帮了很多忙,详细源码如下:
#include <stdio.h>
#include <stdint.h>
#include <string.h>
void main(void)
{
int i, p, q;
int arr[10] = {1,2,0,1,1,2,3,1,0,4};
int i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0;
int index_i0 = 0, index_i1 = 0, index_i2 = 0, index_i3 = 0, index_i4 = 0;
/*以下都按照10元素保存数组,多余不是内部元素,每一个数组具体多少元素可根据次数遍历即可*/
int index_i0_arr[10], index_i1_arr[10], index_i2_arr[10], index_i3_arr[10], index_i4_arr[10];
for (i = 0; i < sizeof(arr)/sizeof(int); i++)
{
if (arr[i] == 0)
{
i0++;
index_i0_arr[index_i0++] = i;
}
if (arr[i] == 1)
{
i1++;
index_i1_arr[index_i1-++] = i;
}
if (arr[i] == 2)
{
i2++;
index_i2_arr[index_i2++] = i;
}
if (arr[i] == 3)
{
i3++;
index_i3_arr[index_i3++] = i;
}
if (arr[i] == 4)
{
i4++;
index_i4_arr[index_i4++] = i;
}
}
printf("0出现的次数===========%d\n", i0);
printf("1出现的次数===========%d\n", i1);
printf("2出现的次数===========%d\n", i2);
printf("3出现的次数===========%d\n", i3);
printf("4出现的次数===========%d\n", i4);
for (i = 0; i < i1; i++)//这里按照1出现的次数遍历
{
printf("1在数组中的索引为===========%d\n", index_i1_arr[i]);
}
system("pause");
return 0;
}
执行结果: