一、定义和引用一维数组
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>