C 语言统计数组中各元素出现频率的程序

如何编写 C 语言程序来统计数组中各元素的出现频率?在阅读本文之前,请参考数组文章以了解大小、索引位置等概念。

C 语言统计数组中各元素出现频率的示例

该程序要求用户输入数组大小和元素。接下来,它将找出该数组中每个元素出现的频率(总次数)。

 #include <stdio.h>
 
int main()
{
	int arr[10], FreqArr[10], i, j, Count, Size;
	
	printf("\n Please Enter Number of elements in an array  :   ");
	scanf("%d", &Size);
	
	printf("\n Please Enter %d elements of an Array  :  ", Size);
	for (i = 0; i < Size; i++)
	{
    	scanf("%d", &arr[i]);
    	FreqArr[i] = -1;
   	}     
 
	for (i = 0; i < Size; i++)
	{
		Count = 1;
		for(j = i + 1; j < Size; j++)
		{
    		if(arr[i] == arr[j])
    		{
    			Count++;
    			FreqArr[j] = 0;
    		}
    	}
    	if(FreqArr[i] != 0)
    	{
    		FreqArr[i] = Count;
		}
	}

 	printf("\n Frequency of All the Elements in this Array are : \n");
 	for (i = 0; i < Size; i++)
  	{
  		if(FreqArr[i] != 0)
  		{
  			printf("%d Occurs %d Times \n", arr[i], FreqArr[i]);
		}		
  	}	     
 	return 0;
}
C Program to Count Frequency of each Element in an Array 1

在这个统计数组中各元素出现频率的程序中,我们声明了一个大小为 10 的一维数组 arr[],并声明了变量 i 用于遍历元素。

第一个 C 编程 printf 语句要求用户输入数组 arr[] 的大小(数组可以容纳的元素数量)。scanf 语句会将用户输入的数值赋给 Size 变量。

第一个 For 循环将帮助遍历 arr[5] 数组中的每个单元格。For 循环内的条件 (i < Size) 确保编译器不会超出限制。

For 循环内的 scanf 语句会将用户输入的数值存储到每个单独的数组元素中。例如 arr[0], arr[1], arr[2], arr[3], arr[4]。FreqArr[i] = -1 表示我们尚未开始计算某个元素的频率。

下一行,我们还有两个 For 循环来遍历数组中的每个元素。If 语句用于检查重复项。

从上面的截图可以看出,用户为 C 语言统计数组中各元素出现频率的程序输入的数值是:

a[5] = {10, 20, 20, 10, 50}

第一个 For 循环 – 第一次迭代:for(i = 0; i < 5; 0++)
条件 (0 < 5) 为真。
Count = 1

第二个 For 循环 – 第一次迭代:for(j = 0 + 1; 1 < 5; 1++)
条件 (1 < 5) 为真。因此,它将开始执行循环内的语句。
if(arr[i] == arr[j])
if(10 == 20) – 条件为假。

第二个 For 循环 – 第二次迭代:for(j = 2; 2 < 5; 2++)
条件 (2 < 5) 为真。
if(arr[i] == arr[j])
if(10 == 20) – 条件为假。

第二个 For 循环 – 第三次迭代:for(j = 3; 3 < 5; 3++)
C 语言统计数组中各元素出现频率的程序中的条件 (3 < 5) 为真。
if(arr[i] == arr[j])
if(10 == 10) – 条件为真。
Count++ 表示 Count = 2。
FreqArr[j] = 0

第二个 For 循环 – 第四次迭代:for(j = 4; 4 < 5; 4++)
条件 (4 < 5) 为真。
if(arr[i] == arr[j])
if(10 == 50) – 条件为假。

第二个 For 循环 – 第五次迭代:for(j = 5; 5 < 5; 5++)
条件 (5 < 5) 为假。因此,编译器将退出第二个 For 循环。
接下来,它将进入 If 语句。
if(FreqArr[i] != 0)
FreqArr[0] = Count => 2

对剩余的迭代执行相同的操作。

最后,我们使用 For 循环打印元素。我建议您参考打印元素文章以了解循环。

C 语言统计数组中各元素出现频率的示例 2

在我们之前的程序中,我们计算了数组中每个元素的频率。此程序允许用户选择数组元素并使用 IF Else 语句检查该特定元素的频率。

 #include <stdio.h>
 
int main()
{
	int arr[10], i, j, k, Size;
	
	printf("\n Please Enter Number of elements in an array  :   ");
	scanf("%d", &Size);
	
	printf("\n Please Enter %d elements of an Array \n", Size);
	for (i = 0; i < Size; i++)
	{
    	scanf("%d", &arr[i]);
   	}     
 
	for (i = 0; i < Size; i++)
	{
		for(j = i + 1; j < Size;)
		{
    		if(arr[i] == arr[j])
    		{
    			for(k = j; k < Size; k++)
    			{
    				arr[k] = arr[k + 1];
				}
				Size--;
			}
			else
			{
				j++;
			}
		}
	}

 	printf("\n Final Array after Deleteing Duplicate Array Elements is:\n");
 	for (i = 0; i < Size; i++)
  	{
 		printf("%d\t", arr[i]);
  	}	     
 	return 0;
}
Program to Count Frequency of each Element in an Array 2