数组(Array)、输入、输出、查询、修改、插入 C语言知识点

数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。

创建数组

顺序表(数组)

顺序表一般 占用一片连续的存储空间

注意:下标从0开始还是从1开始

数组名 是首元素地址,也是指针

数组的特点:

1、数组中的数据类型必须是同一种数据类型,可以是基本数据类型也可以是引用数据类型

2、数组在定义的时候必须指定大小,而且大小是不可以改变的

3、从数组中获取数组元素的时候,需要使用下标来获取,下标从0开始

4、数据是有序集合,这个有序指的不是大小的排序,指的是插入的顺序

数组的输入:

void input(int arr[],int len){
    //定义循环变量
    int i;
    
    int *p = arr;
    
    for(i=0;i<len;i++){
        printf("请输入第%d个元素:",i+1);
        scanf("%d",&arr[i]);
        //scanf("%d",arr+i);
        //scanf("%d",p+i);
    }
}

输出元素(遍历数组)

void output(int arr[],int len){
    //循环变量
    int i;
    
    int *p = arr;
    
    for(i=0;i<len;i++){
        printf("%d",arr[i]);
        //printf("%d ",*(arr+i));
        //printf("%d ",*(p+i));
    }
    
}

遍历数组,通过当前元素的值作为下标,找到下一个元素。最后得到的数组中,下标(因为数组的下标都是从0开始的,所以需要+1)为数组中出现的元素,每个下标对应的值取反输出即是该元素出现的次数。

  • 若当前元素小于0,则跳过

  • 若当前元素大于0,则判断其作为下标对应的元素是否大于0。若大于0,则把对应的元素赋值给当前元素,并把它的值设置为-1;若小于0,则把对应的元素自减1,当前元素置为0;

查询元素

//根据元素的值去找 下标
int searchValue(int arr[],int len,int value){
    
    int i;
    
    for(i=0;i<len;i++){
        if(value == arr[i]){
            return i;
        }
    }
    return -1;
}
//根据下标 查找元素
int searchKey(int arr[],int len,int key){
    
    //判断位置是否在数组范围之内
    if(key<0 || key>len-1){
        printf("位置不对!");
        return;                //exit(0);        结束程序
    }
    
    printf("查找的元素是:%d\n",arr[key]);
}

动态生成 数组

void * getArray(){        //返回一个指针变量
    
    int i,*p;        //p指向动态数组首地址
    
    p = (int *)malloc(sizeof(int)*num);
    
    if(p==NULL){
        printf("空间申请失败!");
        return;
    }
    
    return p;
}

修改元素

void updateValue(int arr[],int len,int value){
    
    // 修改前 修改后
    int firstValue , lastValue;
    
    printf("请输入你要修改的元素:\n");
    scanf("%d",&firstValue);
    
    printf("请输入修改后的元素:\n");
    scanf("%d",&lasrtValue);
    
    for(i=0;i<len;i++){
        if(arr[i] == firstValue){
            arr = lastValue;
        }
    }
}
//根据位置修改
void updateKey(int arr[],int len){
    int key,value;
    
    printf("请输入你要修改的位置:\n");
    scanf("%d",&key);
    
    printf("请输入你要修改后的值:\n");
    scanf("%d",&value);
    
    if(key<0 || key>len-1){
        printf("位置不对!");
        return;
    }
    arr[key] = value;
}

插入元素

void insert(int arr[],int len,int index,int value){
    
    int i,temp;
    
    if(index<0 || index>len-1){
        return;
    }
    
    //元素后移
    for(i=len-1;i>=index;i--){
        arr[i+1] = arr[i];
    }
    
    //插入元素
    arr[index] = value;
    
    //长度变化
    len++;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值