在数组中查找任意数的出现次数

  int z[10]={5,87,7,5,89,5,76,9,5,89};
  printf("要查找的数字x=");
  scanf("%d",&x);
if(x<=0||x>=10)
printf("查找失败");
else 
{
for(i=1;i<=9;i++);
{
 if(z[i]==x)
 {
     j=0;
     j=j+1;
 }
} 
}
printf("x出现了%d次",j); 
 return 0; 

}

我想查数组里某个数字出现的次数,可是一直都在显示出现一次,请问各位大佬该怎么改

for(i=1;i<=9;i++);
这里多了分号!!!

其实可以排下序,找到那个数字最左端点和最右端点,相减就行了
还有for循环那多了个分号

有帮助的话 采纳一下

#include <stdio.h>

int main() {
  
  int z[10]={5,87,7,5,89,5,76,9,5,89};
  
  int x;
  printf("要查找的数字x=");
  scanf("%d", &x);
  
  if(x<=0 || x>=10) {
    printf("查找失败");
  } else {
  
    int i;
    int j = 0; // 初始化统计变量

    for(i=0; i<10; i++) {  
      if(z[i] == x) {
        j++;  
      }
    }
    
    printf("x出现了%d次", j);
  
  }

  return 0;
}


修改如下,改动处见注释,供参考:

#include <stdio.h>
int main()
{
    int z[10] = { 5,87,7,5,89,5,76,9,5,89 }, x, i, j; // x i j  都未定义 修改
    printf("要查找的数字x=");
    scanf("%d", &x);
    //if (x <= 0 || x >= 10)  //  修改
    //    printf("查找失败");
    //else
    //{
    for (i = 0, j = 0; i <= 9; i++)  //; 这句最后多了分号';'  修改
    {
        if (z[i] == x)
        {
            //j = 0;
            j = j + 1;
        }
    }
    //}   修改
    if (j)                        //  修改
        printf("x=%d出现了%d次", x, j); // 修改
    else
        printf("查找失败");      //  修改 
    return 0;
}

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/816743
  • 你也可以参考下这篇文章:查找某数据在单链表中出现的次数
  • 除此之外, 这篇博客: 找出一个数组中出现次数最多的那个元素。中的 输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 复制2

    2

     题解:对于像我一样的新手,方法比较简单粗暴;

    我的思路是先开两个数组,一个用于存题中数据,另一个·存每个数据出现的次数;

    代码如下:

    #include <iostream>
    using namespace std;
    int main()
    {
        int n;
        int a[20],b[20]={0};//开数组,存取数据。
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<n;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(a[i]==a[j])//每次遇到在i之后且与a[i]相等的数据次数都会被存在相应的b[i]中。
                    b[i]++;
            }
        }
        int max=0;
        for(int i=0;i<n;i++)
        {
            if(b[i]>b[max])//找出最大的b[i]
            {
                max=i;
            }
        }
        cout<<a[max]<<endl;
        return 0;
    }

  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 循环队列的入队出队扩容操作小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    要在一个数组中查找某个数的出现次数,可以使用以下步骤来解决问题:

    1. 初始化一个用于存储出现次数的变量 count,设置初始值为 0。

    2. 遍历数组的每个元素,对于每个元素,判断是否与给定的数相等。

    3. 如果相等,将 count 的值加 1。

    4. 遍历结束后,count 的值就是给定数在数组中出现的次数。

    下面以C++语言为例给出具体的代码示例:

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;  // 数组长度
        int a[20];  // 存储数组的数组
        int target;  // 要查找的数
        int count = 0;  // 出现次数
    
        // 输入数组长度和数组元素
        cout << "输入数组长度:";
        cin >> n;
        cout << "输入数组元素:";
        for(int i = 0; i < n; i++) {
            cin >> a[i];
        }
    
        // 输入要查找的数
        cout << "输入要查找的数:";
        cin >> target;
    
        // 遍历数组,统计出现次数
        for(int i = 0; i < n; i++) {
            if(a[i] == target) {
                count++;
            }
        }
    
        // 输出结果
        cout << "给定的数在数组中出现的次数:" << count << endl;
    
        return 0;
    }
    

    运行以上代码,在适当的位置输入数组长度、数组元素和要查找的数,即可得到给定数在数组中的出现次数。

    请注意,以上代码是通过遍历数组的方式来查找出现次数,时间复杂度为O(n),其中n为数组的长度。如果数组已经排序,也可以使用二分查找的方式来提高查找效率,时间复杂度为O(logn)。