C语言复习--数组

一、定义和引用一维数组

1.定义一维数组的一般形式为:类型符   数组名[常量表达式];

例如:int a[10];即定义了一个整形数组,包含10个整型元素。

注:数组的下标是从0开始的,即10个整型元素分别为a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。

2.引用数组元素的表示形式为:数组名[下标];

例如:a[7]即为数组a中序号为7的元素。

注:定义数组时用到的 数组名[常量表达式]和引用数组元素时用的数组名[下标]形式相同 ,但含义不同;

例如:int a[20],前面有类型符int,即定义数组,指定数组中包含20个元素。

t=a[8],a[8]表示的时引用a数组中序号为8的元素。

3.一堆数组的初始化

(1)在定义数组时对全部数组元素赋予初值。

例如:int a[10]={0,1,2,3,4,5,6,7,8,9};

(2)可以只给数组中的一部分元素赋值。

例如:int a[10]={1,2,3,4,5};即只给前五个元素赋初值,系统自动给后5个元素赋初值0。

(3)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

例如:int a[]={1,2,3,4,5,6};

二、定义和引用二维数组

1.定义二维数组

二维数组定义的一般格式:类型说明符  数组名[常量表达式][常量表达式];

例如:int a[3][3],   float b[5][3];

2.引用二维数组

二维数组元素的表示形式:数组名[下标][下标];

例如:a[3][4]表示的是a数组中行序号为3 列序号为4的元素。

3.二维数组的初始化

(1)分行给二维数组赋初值。

例如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

(2)可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。

例如:int a[2][2]={1,2,3,4};

(3)可以对部分元素赋初值。

例如:int a[3][3]={{1}{4}{7}};

(4)如果对全部元素都赋以初值,则定义数组时对第1维的长度可以不指定,但第2维的长度不能省.

例如:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

三、字符数组

1.定义字符数组

字符数组是用来存放字符数据的数组。例如 char c[10];

2.字符数组的初始化

(1)把各个字符依次赋给数组中各元素。

char c[5]={'I','L','V','O','E'};

3.引用字符数组中的元素

#include<stdio.h>
int main()
{
	char c[6]={'I','L','O','V','E'};
	int i;
	for(i=0;i<6;i++)
	printf("%c ",c[i]);
	printf("\n");
	getchar();
	getchar();
	return 0;
}

其运行结果为:

4.字符串和字符串结束的标志

(1)字符串结束的标志:'\0'是字符串结束标志。

注:C系统在用字符数组储存字符串常量时会自动加一个'\0'作为结束符。

(2)字符数组初始化

例如:char c[]="I am a student!";

5.字符数组的输入与输出

(1)逐个字符输入与输出,即用''%c''输入或输出一个字符。

(2)将整个字符串一次输入或输出,即用"%s"对字符串进行输入与输出。

注:1.输出的字符不包括结束符'\0'。

2.如果数组长度大于字符串的实际长度,也只能输出到遇'\0'结束。

#include<stdio.h>
int main()
{
	char c[10]="China";
	printf("%s",c);
	getchar();
	getchar();
	return 0;
}

其输出结果为:

 

(3)如果一个字符数中包含一个以上'\0',则遇第一个'\0'时输出就结束。

(4)可以用scanf函数输入一个字符串。

例如:scanf("%s",c);

注:scanf函数中的输入项如果是字符数组名,不要再加地址符&。

6.使用字符串处理函数

1.puts函数——输出字符串函数

其一般形式为:puts(字符数组)

作用:将一个字符串(以'\0'结束的字符序列)输出到终端。

#include<stdio.h>
int main()
{
	char str[]="I love China!";
	puts(str);
	getchar();
	getchar();
	return 0;

}

其运行结果为:

2.gets函数——输入字符串函数

其一般形式为:gets(字符数组)

作用:从终端输入一个字符串到字符数组,并且得到一个函数值。

#include<stdio.h>
int main()
{
	char str[10];
	gets(str);
	puts(str);
	getchar();
	getchar();
	return 0;

}

其运行结果为:

3.strcat函数——字符串连接函数

其一般形式为:strcat(字符数组1,字符数组2)

作用:把两个字符数组中的字符串连接起来,把字符串2连接到字符串1后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="He is a ";
	char str2[10]="student!";
	printf("%s",strcat(str1,str2));
	getchar();
	getchar();
	return 0;

}

其运行结果为:

注:(1)字符数组1大小必须足够大,以便容纳连接后的新字符串。

(2)连接前两个字符串的后面都有'\0',连接时将字符串1后面'\0'取消,只在新字符串后面保留'\0'。

4.strcpy和strcnpy函数——字符串复制函数

其一般形式为:strcpy(字符数组1,字符串2)

作用:将字符串2复制到字符数组1中。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="He is a student ";
	char str2[20]="I love China!";
	printf("%s",strcpy(str1,str2));
	getchar();
	getchar();
	return 0;

}

其运行结果为:

注:(1)字符数组1必须定义的足够大。

(2)'字符数组1'必须写成数组名形式(如 str1),"字符数组2"可以是字符数组名,也可以是一个字符串常量。

(3)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组,只能用strcpy函数复制。

例如:str1=''China!'';这种写法是错误的。

           str2=str1;这种写法也是错误的

(4)可以用strncpy函数将字符串2中的前面n个字符复制到字符数组1中。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="He is  a student ";
	char str2[20]="I love China!";
	printf("%s",strncpy(str1,str2,6));
	getchar();
	getchar();
	return 0;

}

其输出结果为:

即将str2中最前面6个字符复制到str1中,取代str1中原有最前面的6个字符。

5.strcmp函数——字符串比较函数

其一般形式为:strcmp(字符串1,字符串2)

作用:比较字符串1和字符串2。

(1)如果字符串1和字符串2全部字符相同,则认为两个字符串相等。

(2)如果出现不相同的字符,则以第一对不相同的字符的比较结果为准。

例如:"a">"A","A"<"B","computer">"compare".

1.如果字符串1与字符串2相同,则函数值为0。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="ABC";
	char str2[20]="ABC";
	printf("%d",strcmp(str1,str2));
	getchar();
	getchar();
	return 0;

}

其输出结果为: 0

2.如果字符串1>字符串2,则函数值为1。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="abc";
	char str2[20]="ABC";
	printf("%d",strcmp(str1,str2));
	getchar();
	getchar();
	return 0;

}

其输出结果为: 1

3.如果字符串1<字符串2,则函数值为-1。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="ABC";
	char str2[20]="abc";
	printf("%d",strcmp(str1,str2));
	getchar();
	getchar();
	return 0;

}

其输出结果为: -1

6.strlen函数——测字符串长度的函数

其一般形式为:strlen(字符数组)

作用:测量字符串的长度。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="We are family!";
	printf("%d",strlen(str1));
	getchar();
	getchar();
	return 0;

}

其运行结果为:

7.strlwt函数——转换为小写的函数

其一般形式为:strlwr(字符串)

作用:将字符串中的大写字母转换为小写字母

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="WE ARE YOUNG";
	printf("%s",strlwr(str1));
	getchar();
	getchar();
	return 0;

}

其运行结果为:

8.strupr函数——转换为大写的函数

一般形式为:strupr(字符串)

作用:将字符串中小写字母转换为大写字母

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[30]="he is smart";
	printf("%s",strupr(str1));
	getchar();
	getchar();
	return 0;

}

其运行结果为:

注:在使用字符串处理函数时,应当在程序文件的开头用    #include<string.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值