0708梳理(数组一)

1.定义

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

2.格式:数组类型 数组名[常量];

注意:常量不能为0,不能为小数,不能空着

3.命名规则:参考前面的数据命名相关内容

4.例:

ubuntu@ubuntu:0708$ gcc dingyi.c
ubuntu@ubuntu:0708$ ./a.out
arr[0]=9,brr[0]=�,crr[0]=0.000000
ubuntu@ubuntu:0708$ cat dingyi.c
#include<stdio.h>
int main(int argc,char const *argv)
{
    int arr[5];
    char brr[5];
    double crr[5];
    printf("arr[0]=%d,brr[0]=%c,crr[0]=%lf\n",arr[0],brr[0],crr[0]);
    return 0;
}
ubuntu@ubuntu:0708$ 

5.数据初始化(三种方法)

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

B:局部初始化,初始化的个数小于数组长度,没有初始化的用0补齐

C:特殊初始化,在定义数组时,不给数组定义长度,数组长度由初始化个数决定

2.常规操作

1.输入输出,一定要用循环!!!

注意:由于c中不允许对字符数组以外的其他数组进行整体输入输出,因此只能找到数组元素,对单个元素进行操作

2.求和求均值,即对所有任意值进行累加(循环),均值不需要循环求

3.求最值,与每一个数值进行比较得出

4.查找

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

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

统一举例:

ubuntu@ubuntu:0708$ ./a.out
请输入第1个学生的成绩:80
请输入第2个学生的成绩:90
请输入第3个学生的成绩:88
请输入第4个学生的成绩:99
请输入第5个学生的成绩:78
请输入第6个学生的成绩:89
请输入第7个学生的成绩:70
请输入第8个学生的成绩:96
请输入第9个学生的成绩:87
请输入第10个学生的成绩:98
数组中的元素分别是:80    90    88    99    78    89    70    96    87    98    
总和为:-346315888,平均值为:-34631588.80
请输入您要查找的值:90
您要査找的值,存在于数组中
查找成功,您要找的值一共出现1次
ubuntu@ubuntu:0708$ cat juti.c
#include<stdio.h>
#define MAX 10
//宏定义一个常量
int main(int argc, const char *argv[])
//定义一个数组,用于存储班级所有成员的成绩
{
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);
//输出一个回车换行

//求和值、均值
int sum = 0;
double avg = 0;
//记录总和
//记录平均值
//遍历数组中的所有元素
for(int i=0;i<MAX;i++)
{
    sum += score;
}
//讲任意一个数据进行累加
//程序执行至此,表示总和已经求出来
avg = 1.0*sum/MAX;
printf("总和为:%d,平均值为:%.2lf\n",sum,avg);


//求最值(以求最大值为例)
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);

//查找
int search = 0;//用于遍历数组的循环变量
int i=0;
printf("请输入您要查找的值:");
scanf("%d",&search);
//开始遍历数组,实现存在性查找
for(i=0;i<MAX;i++)//判断数据是否是要查找的数据
{
    if(search == score[i])
    {
        break;
    }
}
//判断是否查找到
if(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);
}

return 0;
}
ubuntu@ubuntu:0708$ 
 

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值