C 程序 查找数组中的元素数

C程序查找数组中的元素数

本文介绍如何使用C语言在一个数组中查找元素,返回元素出现的次数。

程序代码

#include <stdio.h> 

/* 定义数组和要查找的元素*/
int arr[] = { 1, 4, 5, 7, 1, 3, 5, 8, 9, 2 };
int size = sizeof(arr) / sizeof(arr[0]); // 计算数组大小
int target = 5; // 要查找的元素

/* 定义函数来统计元素出现的次数 */
int count_elements(int *arr, int size, int target) 
{ 
    int count = 0;
    for(int i = 0; i < size; i++) 
    {
        if(arr[i] == target)
            count++;
    }
    return count; 
} 

int main() 
{ 
    int result = count_elements(arr, size, target);
    printf("元素 %d 出现了 %d 次.\n", target, result);
    return 0;
}

示例说明

在上面的C程序中,我们定义了一个大小为10的数组arr,它包含了一些整数。我们想要查找出数组arr中元素target(在本例中是5)的出现次数。

首先,我们定义了一个count_elements函数。函数接受三个参数:arr表示数组,size表示数组的大小,target表示要查找的元素。count_elements函数使用一个for循环遍历数组,并在每次循环中查看数组元素是否与目标元素target匹配。如果匹配,则count_elements函数将增加count的值。最后,count_elements函数返回count的值,该值表示目标元素target在数组中的出现次数。

在主程序中,我们通过调用count_elements函数来获取元素target在数组中的出现次数。一旦我们得到了元素出现的次数,在printf语句中就可以打印出来。

另一个示例

下面是一个更复杂的程序,它使用动态数组而不是静态数组。虽然程序中使用了其他一些额外的函数,但这些函数的作用都是为了帮助使用动态数组。

#include <stdio.h>
#include <stdlib.h> // 动态内存分配所需头文件

/* 定义一个结构体,表示整数数组 */
typedef struct {
    int *data; // 整数数组的指针
    size_t size; // 数组的大小
} IntArray;

/* 创建一个新的IntArray结构 */
IntArray *newIntArray(int size) {
    IntArray *arr = (IntArray *)malloc(sizeof(IntArray)); // 分配数组内存
    arr->data = (int *)malloc(size * sizeof(int)); // 分配数据内存
    arr->size = size;
    return arr;
}

/* 释放IntArray结构内存 */
void freeIntArray(IntArray *arr) {
    free(arr->data); // 释放数据内存
    free(arr); // 释放数组内存
}

/* 将值插入到IntArray中 */
void insertIntoIntArray(IntArray *arr, int val) {
    arr->size++; // 增加数组大小
    arr->data = (int *)realloc(arr->data, arr->size * sizeof(int)); // 分配更多的数据内存
    arr->data[arr->size - 1] = val; // 插入数据
}

/* 定义一个函数,使用动态数组来统计元素出现的次数 */
int count_elements(IntArray *arr, int target) {
    int count = 0;
    for(int i = 0; i < arr->size; i++) {
        if(arr->data[i] == target) {
            count++;
        }
    }
    return count; 
}

/* 主程序 */
int main() {
    IntArray *arr = newIntArray(0); // 创建一个空的IntArray
    insertIntoIntArray(arr, 1);     // 向数组中插入元素
    insertIntoIntArray(arr, 2);
    insertIntoIntArray(arr, 2);    

    int result = count_elements(arr, 2); // 查找元素,并计算其出现次数
    printf("元素 2 出现了 %d 次.\n", result);

    freeIntArray(arr); // 释放IntArray内存
    return 0;
}

该程序首先声明了一个名为IntArray的结构体,它包含了一个指向整数数组的指针data和数组的大小size。使用newIntArray函数创建一个新的IntArray结构体,创建一个指向动态分配的整数数组的指针,数组大小为sizefreeIntArray函数释放IntArray结构体中的动态分配的内存。

在主程序中,我们首先使用newIntArray函数创建了一个空的IntArray结构体。接下来我们调用insertIntoIntArray函数将元素插入到动态数组中。然后,我们调用count_elements函数来计算数组中元素的出现次数。最后,我们使用printf语句在屏幕上打印出出现次数。

总结

这就是在C程序中查找数组元素的方法:使用for循环和条件语句来遍历数组元素,并使用计数器来计算匹配元素的出现次数。当然,动态数组也可以使用类似的方法来查找元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 程序 查找数组中的元素数 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • 图文精讲java常见分布式事务理论与解决方案

    图文精讲Java常见分布式事务理论与解决方案 一、分布式事务概念 分布式事务指多个数据库或者多个应用之间的数据一致性问题。 例如,当一个事务需要涉及到多个数据库,并且这些数据库都需要成功地提交,才能使整个事务得以完成,此时就需要进行分布式事务的处理。 二、分布式事务的问题 在分布式环境下操作数据时,常常会出现下列问题: 并发问题:多个节点同时访问相同的数据;…

    C 2023年5月22日
    00
  • 深入解析C++11 lambda表达式/包装器/线程库

    深入解析C++11 lambda表达式/包装器/线程库 C++11 lambda表达式 Lambda表达式是C++11中最重要的新特性之一。Lambda表达式提供了一种简单且易于使用的方式,用于定义和传递匿名的、可调用的代码块。 基本语法 Lambda表达式的基本语法如下: [capture list] (params) -> return_type …

    C 2023年5月22日
    00
  • C++ Boost Thread线程使用示例详解

    C++ Boost Thread线程使用示例详解 C++ Boost Thread是一个开源的线程库,可以用于实现多线程编程。本文将详细讲解C++ Boost Thread的使用方法,并提供两个示例说明。 安装及配置Boost Thread 在开始使用Boost Thread之前,我们需要先安装并配置它。这里提供一些简单的步骤: 下载boost_1_68_0…

    C 2023年5月23日
    00
  • win7启动程序时弹出异常代码c0000005怎么办?

    下面是“win7启动程序时弹出异常代码c0000005”的完整攻略: 问题描述 在启动某些程序时,可能会遇到异常代码c0000005的错误提示,例如: 异常代码c0000005,详细信息是:ACCESS_VIOLATION 解决方案 方案一:更新或重装程序 可能是程序本身存在问题,建议先到官网下载最新版本安装或者尝试重装程序,看看能否解决问题。 方案二:检查…

    C 2023年5月23日
    00
  • MySQL系列之开篇 MySQL关系型数据库基础概念

    MySQL系列之开篇 MySQL关系型数据库基础概念 什么是关系型数据库? 关系型数据库是最为常见的数据库类型,它使用了表格来存储数据,每个表格都有一个唯一的名字,并且由一个或多个列组成。 在关系型数据库中,表格之间可以相互关联,从而形成一个关系型的数据模型。 关系型数据库的优点 简单易学,广泛使用。 数据之间的关系清晰。 可靠性、稳定性好。 支持事务处理,…

    C 2023年5月22日
    00
  • c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    C++ vector(向量)使用方法详解 简介 vector 是 C++ STL 中的一个重要数据结构,用于实现动态数组。它具有许多优点,包括支持尾部插入、常量时间访问、动态分配内存等。 基本操作 创建 vector 创建一个空的 vector 和一个具有初始值的 vector 的方式如下: #include <vector> using nam…

    C 2023年5月22日
    00
  • C语言实现导航功能

    C语言实现导航功能攻略 概述 本攻略介绍如何使用C语言实现导航功能。导航功能需要通过地图信息和用户的目的地,给用户提供最短路径。 实现步骤 1. 定义地图和结构体 定义一个地图结构体,它包含节点和边。每个节点都有一个ID和一组坐标。每条边都有起点、终点、距离以及其它属性 typedef struct { int id; // 节点ID double x, y…

    C 2023年5月23日
    00
  • iOS之异常与信号使用场景分析

    iOS之异常与信号使用场景分析 异常 什么是异常 异常是指运行期间发生错误,导致应用程序不能正常执行的事件,例如:数组越界访问、空指针引用等。在OC中,异常时指通过在方法内部 raise 一个异常对象实例来表示异常事件的。 异常处理 在OC中,我们可以通过以下两个关键字来处理异常: @try: 被检测的代码中可能发生异常的部分需要放在这个语句块里; @cat…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部