C语言数组的学习小结
(2019-04-14 15:06:16)
标签:
c语言数组排序查找悠悠大尉 |
分类: 教育教学资源 |
数组
定义:数组是有序的并且具有相同类型的数据的集合。
分为一维数组和多维数组,其存储方式画为表格的话就会一目了然,其实就是把相同类型的变量有序的放在一起。因此,在处理比较多的数据时(这也是大多数的情况)数组的应用范围是非常广的。
一维数组
1、一般形式:类型说明符 数组名[常量表达式];例如: int a[10]; 元素为a[0]----a[9].
2、常量表达式中不允许包含变量,可以包含常量或符号常量。
3、数组元素下标可以是任何整型常量、整型变量或任何整型表达式。
4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。
5、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。
6、需要整体赋值时只可以在定义的同时整体赋值。如
7、可以只给一部分元素赋值。例如:
8、对全部数组元素赋值时可以不指定数组长度,例如:
二维数组
1、一般形式:类型说明符 数组名[常量表达式1][常量表达式2];例如:
2、与一维数组一样元素下标可以是是任何整型常量、整型变量或任何整型表达式。
3、需要整体赋值时只可以在定义的同时整体赋值。例如:
4、可以把所有数据写在一个花括号内。例如:
5、可以只对部分元素赋值。例如:
6、对全部数组元素赋值时可以省略第一维长度,第二维不可以省略。例如:
字符数组
1、定义:char a[10];字符数组a长度为10。每个元素只能存放一个字符。例如:
2、初始化:
3、C语言中没有字符串变量,字符串的输入、存储、处理和输出等必须通过字符数组实现。
4、字符串的输入。
5、字符串的输出。
常用字符串处理函数(以下函数需要头文件“string.h”)
1、strlen()作用是测试字符串长度。这里不包括‘\0’.使用形式strlen(数组名或字符串常量)
2、strcat()作用是连接两个字符串。调用方式strcat(字符数组1名,字符数组2名);合并后的字符串存放在字符数组1中。
3、strcmp()比较两个字符串是否相等。调用方式strcmp(字符串1,字符串2);相等时值为0。1>2时为正数。1<2时为负数。
4、strcpy()复制字符串。调用方式strcpy(字符数组1,字符串2);2的内容复制到1中。1只能是字符数组名。
数组的复习和应用
具体的实际应用随后举例,而且绝大多数是与指针相结合的,到指针一章学习后再说明,认为学习数组在更大程度上是为学习指针做一个铺垫。作为基础的基础要明白几种基本操作:即数组赋值、打印、排序(冒泡排序法和选择排序法)、查找。这些都不可避免的用到循环,如果觉得反应不过来,可以先一点点的把循环展开,就会越来越熟悉,以后自己编写一个功能的时候就会先找出内在规律,较好的运用了。另外数组做参数时,一维的[]里可以是空的,二维的第一个[]里可以是空的但是第二个[]中必须规定大小。
冒泡法排序函数:
void bubble(int a[],int n)
{
int i,j,k;
for(i=0,i
}
选择法排序函数:
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0,i
k=j;
}
#include
#define N 8
void binsearch(int a[]);
void show(int a[]);
int main()
{
}
void show(int a[])
{
}
void binsearch(int a[])
{
}
相关常用的算法还有判断回文,求阶乘,Fibanacci
数列,任意进制转换,杨辉三角形计算等等。
字符串:
了一圈问题,最后发现是因为
char *name;
而不是
char name[10];
前者没有说明指向哪儿,更没有确定大小,导致了乱码的错误,印象挺深刻的。
另外,字符串的赋值也是需要注意的,如果是用字符指针的话,既可以定义的时候赋初值,即
char *a="Abcdefg";
也可以在赋值语句中赋值,即
char *a;
a="Abcdefg";
但如果是用字符数组的话,就只能在定义时整体赋初值,即 char a[5]={"abcd"};
而不能在赋值语句中整体赋值。
常用字符串函数列表如下,要会自己实现:
函数作用
字符串追加函数
字符串比较函数
字符串长度
字符串型->整型
itoa(int,char *,int)
赋给字符串,而不打印出来。课设时用也比较方便
注:对字符串是不允许做==或!=的运算的,只能用字符串比较函数

加载中…