-1

我正在尝试计算数组中值的频率。我认为我目前的条目是正确的,但它似乎误算了“计数”。我想就如何正确显示数组的频率提出第二意见!这是我所拥有的:

#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 */
4

6 回答 6

3

if ( theArray[i]=x)应该是==

而且整体else {count = count;}是多余的。

而且你实际上并没有返回计数(或其他任何东西) - 即使签名说你这样做。

于 2013-03-06T01:52:09.533 回答
3

你有一个错字:

if ( theArray[i] = x )

应该:

if ( theArray[i] == x )

前者将设置theArray[i]xif 语句并将始终返回 true,而您想要做的是第二个,它是逻辑等效检查。

在旁注中,您的else陈述也是多余的,您不需要该else { count=count; }部分。此外,您的函数没有返回值,因此最好将返回值从 更改intvoid

于 2013-03-06T01:52:27.043 回答
2

3 件事

  1. if ( theArray[i]=x)  =应该 是==

  2. 整个 else{count = count;}是多余的。

  3. 该功能应该是void

于 2013-03-06T01:58:38.430 回答
0

创建数组后,您无法将元素添加到数组中。int theArray[] = {}; ...是一个空数组。

你必须:

  1. 询问数组的大小
  2. 动态创建数组(使用 malloc())
  3. 添加数字
  4. 将数组作为指针传递给频率()
  5. 退出前删除数组(使用free())
于 2013-03-06T01:55:51.307 回答
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;
}
于 2015-11-02T08:49:57.377 回答
-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;
}
于 2015-03-05T06:52:04.030 回答