目录
文章目录
前言
一、一维数组的定义和引用
1.1一维数组的定义
1.2一维数组元素的引用
1.3一维数组的初始化
二、一维数组的应用举例
2.1.求数组元素和
2.2.求数组元素极大值和次大值
2.3.斐波那契数列
2.4.逆序输出
2.5.选择排序
2.6.冒泡排序
2.7.插入排序
2.8.二分查找
总结
C语言提供除了基本类型(整型、字符型、实型)以外的构造类型数据,它们有数组类型、结构体类型和共用体类型。构造类型数据是由基本类型数据按一定规则组成的,因此它们又被称为“导出类型”。将数组与循环结合起来,可以有效地处理大批量的数据,大大提高了工作效率,十分方便。
本篇介绍在C语言中怎样定义和使用一维数组。
数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。
一维数组的定义方式为
类型说明符 数组名[常量表达式]:
注意:
(1)数组名的命名规则和变量名相同,遵循标识符命名规则。
(2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。例如,指定a[10],表示a数组有10个元素。下标是从0开始的,这10个元素是:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。不存在数组元素a[10]。
(3)常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,C语言不允
许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下
面这样定义数组是不行的:
int n;
scanf("%d",&n); /在程序中临时输人数组的大小*/
int a[n];
数组必须先定义,然后使用。C语言规定只能逐个引用数组元素而不能一次引用整
个数组。
对数组元素的初始化可以用以下方法实现。
(1)在定义数组时对数组元素赋予初值。例如:
int a[10] = {0,1,2,3,4,5,6,7,8,9};
将数组元素的初值依次放在一对花括号内。
(2)可以只给一部分元素赋值。例如:
int a[10]={0,1,2,3,4};
定义数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,
后5个元素值为0。
(3)如果想使一个数组中全部元素值为0,可以写成:
int a[10]={0,0,0,0,0,0,0,0,0,0};
或
int a[10] = {0};
不能写成
int a[10] = {0 * 10};
不能给数组整体赋初值。
(4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长
度。例如:
int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5}:
代码如下(示例):
#include
int main(void)
[
int i = 0;
int a[]=[1,2,3,4,5,6,7,8,9]:
int len = sizeof(a)/sizeof(a[0]);
int sum = 0;
for (i = 0;i < len;++i)
{
sum += a[i];
}
printf("数组的元素和为%dn",sun);
return 0;
}
代码如下(示例):
#include
#include
int main(void)
{
int i = 0;
int j = 0;
int k = 0;
int a[]=[100,2,3,4,5,6,7,8,9,32,12};
int max = a[0];
int mid INT_MIN;
int len sizeof(a)/sizeof(a[]);
for (i = 1;i < len;++i)
{
if(a[i] >max)
{
max = a[i];
}
for (j = 1;j
代码如下(示例):
#include
int main(void)
{
int i = 0;
int k = 0;
int a[10]=[1,1]:
int len = sizeof(a)/sizeof(a[0]);
for(i = 2;i
代码如下(示例):
1 #include
2
3 int main(void)
4 {
5 int i = 0;
6 int j = 0;
7 int k = 0;
8 int a[5] = {1,2,5,4,6};
9 int len = sizeof(a) / sizeof(a[0]);
10 for(i = 0 ; i < len / 2 ; ++i)
11 {
12 k = a[i];
13 a[i] = a[len - i - 1];
14 a[len - i - 1] = k;
15 }
16
17 for(j = 0 ;j < len ; ++j)
18 {
19 printf("%d ",a[j]);
20 }
21 printf("\n");
22 return 0;
23
24 }
~
代码如下(示例):
#include
int main(void)
{
int i = 0;
int j = 0;
int k = 0;
int home = 0;
int a[] = {1,2,3,4,9,8,7,5,6};
int len = sizeof(a) / sizeof(a[0]);
for (i = 0;i< len - 1;++i)
{
for(k = i + 1;k < len; ++k)
{
if (a[i] > a[k])
{
home = a[k];
a[k] = a[i];
a[i] = home;
}
}
for(j = 0;j < len;++j)
{
printf("%d ",a[j]);
printf("\n");
}
return 0;
}
代码如下(示例):
#include
int main(void)
{
int i = 0;
int j = 0;
int k = 0;
int temp = 0;
inta[]=[1,2,3,4,9,8,7,5,6];
int len = sizeof(a)/sizeof(a[0]);
for(i=len-1;i>0;--i)
{
for(k = 0;ka[k+1])
{
temp a[k];
a[k]=a[k+1];
a[k +1]temp;
}
}
}
for(i=0:i
代码如下(示例):
#include
int main(void)
{
int i = 0;
int j = 0;
int k = 0;
int n = 0;
int a[]=[1,2,3,4,5,6,7,8,9}:
int len = sizeof(a)/sizeof(a[0]);
for(i = 1;i < len;++i)
{
int temp = a[i];
k = i - 1;
while(k >=0 && a[k]>temp)
{
a[k+1]=a[k];
--k;
}
a[k +1] = temp;
for(n = 0;n < len;++n)
{
printf("%d ",a[n]);
}
printf("\n");
return 0;
}
代码如下(示例):
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int len = sizeof(a) / sizeof(a[0]);
int num ;
scanf("%d", &num);
int begin = 0;
int end = len - 1 ;
int mid;
while(begin <= end)
{
mid = (begin + end) / 2;
if(a[mid] > num)
{
end = mid - 1 ;
}
else if(a[mid] < num)
{
begin = mid + 1 ;
}
else
{
break;
}
}
if(begin <= end)
{
printf("found!");
}
else
{
printf("not found!");
}
return 0;
以上就是今天要讲的内容,详细地介绍了如何在C语言中定义和使用一维数组。通过一系列的实例,我学习了如何进行一维数组的定义、引用和初始化,以及一些常见的操作如求数组元素和、求数组的极值、斐波那契数列、逆序输出、选择排序、冒泡排序、插入排序以及二分查找等。这些知识为我进一步学习更复杂的数据结构和算法打下了基础。