我正在尝试计算数组中值的频率。我以为我的目前参赛作品走在正确的轨道上,但似乎错误地计算了“计数”。我想对如何正确显示阵列频率的第二意见!这就是我所拥有的:
#include <stdio.h>
/************************************************************************/
/* Function: frequency */
/* */
/* Purpose: Obtains the frequency of a number in an array */
/* */
/* */
/* */
/* Parameters: theArray-The array in question */
/* n- the size of the array */
/* x- the number to search for frequency within the array */
/* */
/* Returns: The frequency of a given number in an array */
/* */
/************************************************************************/
int frequency (int theArray [ ], int n, int x)
{
int count = 0;
int i;
for (i = 0; i < n; ++i)
{
if ( theArray[i]=x)
{
count = count + 1 ;
}
else
{
count = count ;
}
}
printf ("\nThe frequency of %i in your array is %i ",x,count);
}
int main ()
{
int i;
int theArray[] = {};
int n;
int x;
printf ("Enter The Amount Of Numbers In Your Array: ");
scanf("%i", &n);/*Stores Amound Of Numbers In The Array*/
for (i = 0; i < n; ++i)
{
printf("\nEnter number for array: ");
scanf ("%i", &theArray[i]);
}
printf ("\nOK, Thanks! Now What Number Do You Want To Search For Frequency In Your Array? ");
scanf("%i", &x);/*Stores Number To Search For Frequency*/
frequency(theArray,n,x);
return(0); /* success */
} /* main */
答案 0 :(得分:3)
if ( theArray[i]=x)
应为==
。
整个else {count = count;}
是多余的。
并且您实际上并没有返回计数(或其他任何内容) - 即使签名表示您这样做。
答案 1 :(得分:3)
你有一个错字:
if ( theArray[i] = x )
应该是:
if ( theArray[i] == x )
前者会将theArray[i]
设置为x
并且将始终为if语句返回true,而您要做的是第二次是逻辑等效检查。
另外,您的else
声明也是多余的,您不需要else { count=count; }
部分。此外,您的函数未返回值,因此最好将返回值从int
更改为void
。
答案 2 :(得分:2)
3件事
if ( theArray[i]=x)
=
中的应为==
整个其他{count = count;}
是多余的。
该功能应为void
答案 3 :(得分:0)
创建数组后,无法向其中添加元素。 int theArray [] = {}; ......是一个空数组。
你必须:
答案 4 :(得分:0)
#include<stdio.h>
#include<conio.h>
#define MAX 10
int flag=0;
void display(int no,int cnt,int visi[]);
void main()
{
int arr[]={1,1,1,2,3,4,2,2,3,1};
int visited[MAX];
int i,j,no,cnt=1;
clrscr();
for(i=0;i<10;i++)
{
no=arr[i];
cnt=1;
for(j=i+1;j<10;j++)
{
if(no==arr[j])
cnt++;
}
display(no,cnt,visited);
}
}
void display(int no,int cnt,int visited[])
{
int static i;
int j;
if(flag==1)
for(j=0;j<=i;j++)
{
if(visited[j]==no)
return;
}
i++;
flag=1;
printf("\n%d=%d",no,cnt);
visited[i]=no;
}
答案 5 :(得分:-2)
#include<stdio.h>
int main(){
int n, t, i, j, arr[30],len, halflen,flag=0,count=0;
printf("Enter number of elements to insert in an array:");
scanf("%d",&len);
printf("Enter elements to insert in an array:");
for(i=0;i<len;i++){
scanf("%d",&t);
arr[i]=t;
}
printf("\n");
/*****************************/
for(i=0;i<len;i++){
count=1;
for(j=i+1;j<=len-1;j++){
if(arr[i]==arr[j] && arr[i]!='\0'){
count++;
arr[j]='\0';
}
}
if(arr[i]!='\0'){
printf("%d is %d times.\n",arr[i],count);
}
}
/*****************************/
getch();
return 0;
}