目录
1. 数组概述
(1)数组是多个具有相同数据类型数值的有序的集合。
(2)根据存储方式分为一维数组和二维数组
根据存储内容分为数值型数组、字符型数组、字符串数组
2. 数组应用
2.1 一维数组
(1)概念
一维数组就是通常所说的数组,是指数组中存储的元素只有唯一的下标,我们称这样的数组为一维数组。
(2)一维数组定义
格式:数据类型 数组名【数组长度】
例:int num【6】={1,2,3,4,5,6}
数组长度定义:
①未初始化赋值:定义数组时没有给数组中的元素赋值,则根据【】中的值来定义数组的长度 int【5】
②以初始化赋值:定义数组时已给数组中的元素赋值,则根据数组中元素的个数来确定数组长度 int【】={1,2,3,4}
数组名是数组首地址。buff----&buff【0】
数组长度必须为一个正整数常量
2.1.1 数值数组
#include<stdio.h>
int main()
{
int bu[3];
int i,sum=0;
for(i=0;i<3;i++)
{
printf("输入整数:");
scanf("%d",&bu[i]);
}
for(i=0;i<3;i++)
{
printf("%d",bu[i]);
sum+=bu[i];
}
printf("三数合为:%d",sum);
}
2.1.2 字符型数组
用来存放字符数据的数组
例:char a[5]={‘a’,‘b’,‘c’,‘d’,‘e’}
#include <stdio.h>
int main()
{
char buff1[] = {'b',' '};
char str[5]= {'a','v','x','1'};
char buff2[15];
printf("%d\n",sizeof(buff1)); //2
printf("%d\n",sizeof(str)); //5
printf("%d\n",sizeof(buff2)); //15
printf("%c\n",str[4]);//'\0'----0
}
2.1.3 字符串数组
字符串数组是由字符数组加上字符串结束符“\0”来组成的,一般使用“”来直接对数组进行赋值,字符串数组的长度为数组中字符的个数+1
例:char a[]={“sssss”} {}可加可不加
a其中有效长度为5,实际长度为6,字符串数组结尾为\0
字符串数组一定是字符数组,字符数组不一定是字符串数组
#include<stdio.h>
int main()
{
char bu[6];
int i;
for(i=0;i<5;i++)
{
bu[i]=i+'0';
}
bu[5]=0;
printf("%s",bu);
}
//编写一个程序,将字符数组a中的全部字符复制到字符数组b中
#include<stdio.h>
int main()
{
char a[10]={"sada123"};
char b[5]={"123"};
printf("%s\n",b);
int i;
for(i=0;i<5;i++)
{
b[i]=a[i];
}
b[i]='\0';
printf("%s\n",b);
}
//输入两个字符串,进行拼接,然后输出
#include<stdio.h>
int main()
{
char a[128],b[128];
int i=0,wei=0;
gets(a);
gets(b);
while(a[i]!='\0')
{
i++;
wei++;
}
printf("a位数:%d\n",wei);
i=0;
while(b[i]!='\0')
{
a[wei+i]=b[i];
i++;
}
a[wei+i]='\0';
printf("%s",a);
}
2.2 二维数组
又称为矩阵数组
数组格式:数据类型 数组名[数组行长度][数组列长度] = {{元素1,元素2……元素n},{元素1,元素2……元素n}};
#include<stdio.h>
int main()
{
int i,j;
int a[3][3]={1,2,3,1,2,2,3};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
}
3. 冒泡算法
冒泡算法又称为冒泡排序法,是指将数组中的所有元素降序或升序排列的一种算法。
循环无序数列中的元素,将相邻的元素一一比较,如果顺序排列错误,就交换两者位置。
#include<stdio.h>
int main()
{
int str[]={1,2,65,32,54};
int a,b,i;
for(a=0;a<4;a++)
{
for(b=0;b<4-a;b++)
{
if(str[b]>str[b+1])
{
i=str[b];
str[b]=str[b+1];
str[b+1]=i;
}
}
}
for(i=0;i<5;i++)
{
printf("%d\t",str[i]);
}
}