20240708作业

数组

数组的概述及定义

1>定义:数组是连续存储多个相同数据类型的变量的集合,数组属于构造数据类型

        数组,就是多个变量的集合。

2> 注意:

        1、连续存储,说明这多个变量的地址是连续的

        2、相同数据类型,说明同一个数组中的每个变量的数据类型都是一样的

        3、变量的集合:说明数组定义时不能为空

3> 定义格式: 数据类型 数组名[常量];

        1、数据类型:可以是基本数据类型,也可以是构造数据类型、指针类型或者空类型

        2、数组名:标识符,要符合标识符的命名规则

                1) 只能由字母、数字、下划线组成

                2) 不能以数字开头

                3) 不能使用关键字

                4) 严格区分大小写

                5) 做到见名知意

        3、中括号:表示这是数组的标识,正在定义一个数组

        4、常量:表示定义的数组长度,或者说是定义的变量的个数

                1) 不能为0

                2) 不能为小数

                3) 不能空着

4> 数组的初始化:所谓初始化,就是在给变量申请空间时,顺便给定初始值。初始化时,用一对花括号将元素的值包裹起来,多个值之间使用逗号隔开

对于数组的初始化而言,有三种方式

        1、全部初始化:数组的长度为多少,就初始化几个元素的值

        int arr[5] = {520, 1415, 666, 999, 1234}; arr[0] arr[1] arr[2] arr[3] arr[4]

        2、部分初始化:初始化元素的个数,小于数组的长度,此时,默认从前面元素进行初始化,没有初始化的元素用0补齐

        int arr[5] = {520, 1415, 666}; 0 0 arr[0] arr[1] arr[2] arr[3] arr[4]

        3、特殊初始化:在定义数组并初始化时,可以不用给定数组的长度,数组的长度由初始化元素个数而定

        int arr[] = {520, 1415, 666, 999, 1234}; arr[0] arr[1] arr[2] arr[3] arr[4]

数组元素的操作

1> 输入输出

        所谓对数组进行输入输出,其实就是对任意一个元素进行重复性输入输出,重复性的动作我们使用循环解决

        注意:C语言不允许对除字符数组外的其他数组整体进行输入输出,只能找到数组元素,对单个元素进行操作

        //定义一个数组,用于存储班级所有成员的成绩

        int score[MAX] = {0}; //完成对成员成绩的输入

        for(int i=0; i<MAX; i++) { //找到任意一个元素:

        score[i] printf("请输入第%d个学生的成绩:", i+1);

        scanf("%d", &score[i]); } //程序执行至此,表示数组元素全部赋值成功

        //输出数组元素

        printf("数组中的元素分别是:");

        for(int i=0; i<MAX; i++) {

        printf("%d\t", score[i]);

        } putchar(10); //输出一个回车换行        

2> 求和值、均值

        所谓求和值,就是将所有任意值进行累加,需要定义一个变量存储总和,但是要求,在使用之前,必须清零

        所谓均值,就是将数据总和除以总个数,均值不需要循环求

        //求和值、均值

        int sum = 0; //记录总和

        double avg = 0; //记录平均值

        for(int i=0; i<MAX; i++) //遍历数组中的所有元素

        { sum += score[i]; //讲任意一个数据进行累加 }

        //程序执行至此,表示总和已经求出来

        avg = 1.0*sum/MAX;

        printf("总和为:%d, 平均值为:%.2lf\n", sum, avg);

3> 求最值

        套路:将数组中的第一个先设置成当前的最值,然后拿着当前的最值与数组中的任意一个元素进行比较,如果比较过程中,不满足条件,则更新最值,直到所有数据都跟最值比较一遍后,得到最值

        //求最值(以求最大值为例)

        int max = 0; //存储数组的中最大值

        int maxi = 0; //记录最大值所在的下标

        //先将数组中的第一个当做最值

        max = score[0];

        maxi = 0;

        //记录当前最值所在的下标

        for(int i=0; i<MAX; i++) {

        //将当前的最值,与任意一个数据进行比较

        if(max < score[i])

        { max = score[i]; //更新最值中的数据

        maxi = i; //更新记录最值下标的变量 } }

        //程序执行至此,表示最值以及最值的下标已经求出

        printf("当前数组的最大值为:%d, 在数组的第%d个位置\n", max, maxi+1);

4> 查找

        存在性查找:当数组中出现要查找的数据时,立即结束本次查找

        统计性查找:将数组全部元素进行遍历一遍,统计出要查找数据的个数

        //查找

        int search = 0;

        int i = 0; //用于遍历数组的循环变量

        printf("请输入您要查找的值:");

        scanf("%d", &search);

        //开始遍历数组,实现存在性查找

        for(i=0; i<MAX; i++) {

        //判断数据是否是要查找的数据

        if(search == score[i]) { break; } } //判断是否查找到

        f(i==MAX) { printf("查找失败\n"); }

        else { printf("您要查找的值,存在于数组中\n"); }

        //遍历数组,完成统计性查找

        int count = 0;

        //计数器

        for(int i=0; i<MAX; i++)

        { if(search == score[i]) { count++; //计数器自增

        } } //循环结束后,对计数器进行判断

        if(count == 0) { printf("查找失败\n"); }

        else { printf("查找成功,您要找的值一共出现%d次\n", count); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值