概述
文章目录
- 文档视频讲解链接地址
- 5.1 一维数组
文档视频讲解链接地址
- 腾讯课堂链接 : 38_数组_一维数组
5.1 一维数组
-
一维数组
- 数组是构造数据类型之一。
- 数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。
- 数组中各元素的数据类型要求相同,用数组名和下标确定,数组可以是一维的,也可以是多维的。
- 在科学计算中,许多重要的应用都是基于数组的, 数组在科学中叫矩阵。
-
一维数组定义
-
所谓一维数组是指只有一个下标的数组。
-
数组在计算机的内存中是连续存储的。
-
C语言中,一维数组的说明形式如下:
-
<存储类型> <数据类型 > <数组名>[<表达式>] ;
- 数组名: 合法的标识符
- [] : 数组运算符
- 表达式: 表示元素个数,下标从0开始
-
例如: int a[6];
- 数组名表示内存的首地址,是地址常量
- 编译时分配连续内存
内存字节数 = 数组维数*sizeof(元素数据类型)
-
注意:
- c99允许使用变量定义数组维数
int i=15; int data[i]; //能用变量定义数组维数
- C语言对数组不作越界检查,使用时要注意
int data[5]; data[5]=10; // 越界的访问可能会引发段错误, 内存访问错误 , 程序直接结束
-
-
一维数组的引用
- 数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组。
- 数组元素表示形式:数组名[下标] , 下标从0开始。
- 其中:下标可以是常量或整型表达式。
- 例如:
int a[10]; printf(“%d”,a); // 错误用法 for(j=0;j<10;j++) { printf(“%dt”,a[j]); // 正确用法 }
-
一维数组的初始化
- 数组不初始化,其元素值为随机数
- 只给部分数组元素赋初值, 其余值为0
- 如:int a[5]={0,1,2};系统自动给后2个元素赋初值为0。
- 对static数组元素不赋初值,系统会自动赋以0值
- 如:static int a[5]; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0。
- 当全部数组元素赋初值时,可不指定数组长度
- 如:int a[5]={0,1,2,3,4}; 这时[ ]中的5也可以不写。
- 例如:
- 源文件:
01-cbase49-array.c
- 源代码:
#include <stdio.h> int main(int argc, char const *argv[]) { int a1[5]; // 定义一个数组, 不对其初始化, 其值是随机值 for (int i = 0; i < 5; i++) { printf("a1[%d]=%dn", i, a1[i]); } /* a1[0]=8 a1[1]=0 a1[2]=56 a1[3]=0 a1[4]=1577936 */ printf("***************************n"); int a2[5] = {1, 2, 3}; // 只给部分数组元素赋初值 , 其余元素为0 for (int i = 0; i < 5; i++) { printf("a2[%d]=%dn", i, a2[i]); } /* a2[0]=1 a2[1]=2 a2[2]=3 a2[3]=0 a2[4]=0 */ printf("***************************n"); static int a3[5] ; // 对static数组元素不赋初值,系统会自动赋以0值 for(int i=0;i<5;i++) { printf("a3[%d]=%dn",i,a3[i]); } /* a3[0]=0 a3[1]=0 a3[2]=0 a3[3]=0 a3[4]=0 */ printf("***************************n"); // 当全部数组元素赋初值时,可不指定数组长度, 会根据初始化的个数,自动确定长度 int a4[] ={1,2,3,4,5} ; for(int i=0;i<5;i++) { printf("a4[%d]=%dn",i,a4[i]); } /* a4[0]=1 a4[1]=2 a4[2]=3 a4[3]=4 a4[4]=5 */ return 0; }
- 运行结果:
a1[0]=8 a1[1]=0 a1[2]=4199705 a1[3]=0 a1[4]=8 ********************************************* a2[0]=1 a2[1]=2 a2[2]=3 a2[3]=0 a2[4]=0 ********************************************* a3[0]=0 a3[1]=0 a3[2]=0 a3[3]=0 a3[4]=0 ********************************************* a4[0]=1 a4[1]=2 a4[2]=3 a4[3]=4 a4[4]=5
-
实例51
从键盘输入10个数(int类型参数)存入一维数组中,并且逆序输出。- 源文件:
01-cbase51-array.c
- 源代码
#include <stdio.h> int main(int argc, char const *argv[]) { int a[10] = {0} ; for(int i=0;i<10;i++) { printf("请输入第%d个整数>:",i+1); scanf("%d",&a[i]) ; // 数组的输入 } printf("数组的内容为:"); for(int i=0;i<10;i++) { printf("%d ",a[i]); // 数组的输出 } printf("n"); for(int i=0,t=0;i<10/2;i++) { t = a[i]; a[i] = a[10-1-i]; a[10-1-i] = t; } printf("数组的内容为:"); for(int i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }
- 运行结果
请输入第1个整数>:12 请输入第2个整数>:34 请输入第3个整数>:9 请输入第4个整数>:23 请输入第5个整数>:27 请输入第6个整数>:87 请输入第7个整数>:23 请输入第8个整数>:76 请输入第9个整数>:2 请输入第10个整数>:876 数组的内容为:12 34 9 23 27 87 23 76 2 876 数组的内容为:876 2 76 23 87 27 23 9 34 12
-
实例52
- 从键盘输入10个数(int类型参数)存入一维数组中,找出这个10个数中最大的数并输出。
- 解题思路:可以第一个和第二个比较, 如果第1个大于第2个, 交换两个元素, 这样的话第2个就是最大的, 接下来比较第2个和第3个,以此类推可以找出最大值。
- 源文件
01-cbase52-array.c
- 源代码
#include <stdio.h> int main(int argc, char const *argv[]) { int a[10]={0}; for(int i=0;i<10;i++) { printf("请输入第%d个数>:",i+1); scanf("%d",&a[i]); } printf("数组的内容为>:"); for(int i=0;i<10;i++) { printf("%d ",a[i]); } printf("n"); // 如果3个数去找最大值, 需要比较2次 for(int i=0,t;i<10-1;i++) // 10个数找出最大值需要比较9次 { if(a[i] > a[i+1]) // 第i个数比第i+1个数大, 则交换 , 最右边是最大值 { t = a[i]; a[i] = a[i+1]; a[i+1] = t; } } printf("max=%dn",a[10-1]) ; // 最右边的是最大值 return 0; }
- 运行结果
请输入第1个数>:12 请输入第2个数>:3 请输入第3个数>:24 请输入第4个数>:674 请输入第5个数>:123 请输入第6个数>:370 请输入第7个数>:862 请输入第8个数>:87 请输入第9个数>:20 请输入第10个数>:12 数组的内容为>:12 3 24 674 123 370 862 87 20 12 max=862
最后
以上就是无心悟空为你收集整理的第5章 C语言的一维数组 (一)的全部内容,希望文章能够帮你解决第5章 C语言的一维数组 (一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复