找回密码
 register

QQ登录

只需一步,快速开始

[*编程自学*] 第十三课:一维数值数组

[复制链接]

[*编程自学*] 第十三课:一维数值数组

[复制链接]
Waylee

主题

0

回帖

7459

积分

仙帝

积分
7459
Waylee 2024-8-3 00:15 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
数组的概述
001.jpg
具有相同类型的变量 用连续的空间储存起来 这样的数据结构 就是数组
数组属于 构造数据类型
数值数组 int a[10]
字符数组 char s[10]
指针数组 char *p[10]
结构数组等....等等,暂时初步了解即可
数组的分类
  • int a[10] = {1,2,3,4,5,6};
  • int b[4][2] = { {1,2},{3,4},{5,6},{7,8} };
  • char string[8] = {'a','b','c'};
  • char *q[10] = { &a[0],&a[1],&a[2] };
  • struct student boy[5];
  • int (*sum[10])(int x,int y);
数值数组:
1.一维数值数组:
short a[10];
int b[10];
long c[10];
float b[10];
double e[10];
2.二维数值数组
int a[2][3] = { {80,75,78},{61,65,99} };
float b[2][3] = { {80.5,75.5,78.5},{61.5,65.5,99.5}  };
一维数值数组
1.数组的定义
需求:请定义一个数组,该数组有10个元素 每个元素为int类型
定义的时候:
  • arr[]   arr和[]结合是数组
  • 将确定的元素的个数放入中括号中
  • 用元素的类型 定义一个普通变量
  • 从上往下整体替换。
请定义一个数组,该数组 有10个袁术 每个元素为地址 每个地址int类型变量的地址:
  • arr[10]
  • *p
  • int num;
完成后:int *arr[10];
int arr[10];
注意:
  • 数组名 arr不能和其他变量名同名
  • 数组的元素小标是从0开始:0~9
  • 数组的元素分别是:arr[0]、arr[1]....arr[9],如果访问arr[10]数组越界
  • 数组的元素 等价于 普通变量
  • 在定义数组的时候 [] 里面的值 不能是变量。(C89不支持 C99支持变量 要考虑移植性,尽量别使用变量)
案例:遍历数组
#include<stdio.h>
void test01()
{
        int arr[10];//局部数组,如果不初始化,内容不确定
        int i = 0;
        //遍历数组
        for(i=0;i<10;i++)
        {
                printf("%d\n",arr);
        }
}
int main(int argc,char *argv[])
{
        test01();
        return 0;
}

运行结果:
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
Press any key to continue

案例:数组的初始化
初始化:定义的时候 给变量 或 数组元素 赋值的动作叫初始化。
全部初始化:
int arr[5] = {10,20,30,40,50};
//如果是 全部初始化 数组元素的个数 可能省略 实际的元素个数由 初始化个数确定
int arr[] = {10,20,30,40,50} //少用
//错误演示
int arr[];//错误,无法确定数组的大小

部分初始化:(重要)
//部分初始化 未被初始化的部分自动补0
int arr[5] = {10,20,30};
//初始化数组 常见操作(将数组的所有元素清零)
int arr[5] = {0};//只初始化arr[0] = 0,未被初始化的部分自动补0
int arr[5] = {2};// 2 0 0 0 0

扩展-特殊初始化:
//了解即可
int arr[5] = {[2]=3,[4]=7}; // 0 0 3 0 7
//[2]=3将数组的第2个元素 初始化为3
//[4]=7将数组的第4个元素 初始化为7
//部分编译器不支持这种写法!

数组的空间大小:
#include<stdio.h>
void test02()
{
        //arr数组名 作为数组类型 代表的是数组空间的总大小
        int arr[5] = {10,20,30,40,50};
        int n = 0;
        //数组的总大小 = 元素的个数 * 每个元素的大小 =  4*5=20
        printf("数组的总大小=%d\n",sizeof(arr)); //20字节
        //数组元素的大小 arr[0]代表数组的第0个元素
        printf("数组元素的大=%d\n",sizeof(arr[0])); //4字节
        //数组元素的个数 = 数组的总大小 / 每个元素的大小
        n = sizeof(arr)/sizeof(arr[0]);
        printf("数组元素的个数为:%d\n",n);
}
int main(int argc,char *argv[])
{
        test02();
        return 0;
}

案例:
#include<stdio.h>
void test03()
{
        int arr[] = {10,20,30,40,50,1,2,3};
        int n = sizeof(arr)/sizeof(arr[0]);
        int i = 0;
        //遍历数组
        for(i=0;i<n;i++)
        {
                printf("%d ",arr);
        }
        printf("\n");
}
int main(int argc,char *argv[])
{
        test03();
        return 0;
}

运行结果:
10 20 30 40 50 1 2 3
Press any key to continue

案例:
#include<stdio.h>
void test05()
{
        int arr1[5] = {1,2,3}; //20
        int arr2[] = {1,2,3}; //12
        char arr3[5] = {1,2,3}; //5
        int arr4[] = {[5]=7}; //24   VC++6.0不支持
        printf(" %d\n %d\n %d\n %d\n",sizeof(arr1),sizeof(arr2),sizeof(arr3),sizeof(arr4));
}
int main(int argc,char *argv[])
{
        test05();
        return 0;
}


数组元素的操作
数组的元素 等价于 普通变量
#include<stdio.h>
void test01()
{
        int arr[5] = {1,2,3,4,5};
        int n = sizeof(arr)/sizeof(arr[0]);
        int i = 0;
        //给数组元素赋值 
        arr[0] = 10;
        arr[1]++;  //arr[1] = arr[1] + 1;
        for(i=0;i<n;i++)
        {
                printf("%d\n",arr[i]);
        }
}
int main(int argc,char *argv[])
{
        test01();
        return 0;
}


案例:
定义数组 5个袁术 每个元素int类型 获取键盘输入
#include<stdio.h>
void test02()
{
        //数值数组 只能逐个元素操作 不能整体操作
        int arr[5] = {0};
        int n = sizeof(arr)/sizeof(arr[0]);
        int i = 0;
        printf("请输入%d个int数据\n",n);
        for(i=0;i<n;i++)
        {
                scanf("%d",&arr[i]);//&arr[i] 表示取第i个元素的地址
        }
        for(i=0;i<n;i++)
        {
                printf("%d ",arr[i]);//arr[i] 访问数组的第i个元素
        }
}
int main(int argc,char *argv[])
{
        test02();
        return 0;
}



作业:
定义数组 5个元素 每个元素int类型 获取键盘输入 请求出数组的最大值\最小值\平均值.

#include<stdio.h>
void test03()
{
        int arr[5] = {0};
        int n = sizeof(arr)/sizeof(arr[0]);
        int i = 0;
        int minnum = 0;//最小值
        int maxnum = 0;//最大值
        float average = 0;//平均值
        printf("请输入%d个int数据:\n",n);
        for(i=0;i<n;i++)
        {
                scanf("%d",&arr[i]);
        }
        
        minnum = arr[0];
        for(i=0;i<n;i++)
        {
                //求最大值
                if (maxnum < arr[i] )
                        maxnum = arr[i];

                //求最小值
                if(arr[i] < minnum )
                        minnum = arr[i];

                //求平均值
                average = average + arr[i];
        }
        
        printf("最大值:%d\n",maxnum);
        printf("最小值:%d\n",minnum);
        printf("平均值:%.2f\n",average/n); //// 打印平均值,保留两位小数

}
int main(int argc,char *argv[])
{
        test03();
        return 0;
}


雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2024-11-22 01:27 , Processed in 0.062433 second(s), 10 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表