C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点 5. 头文件在程序开始,用“#include”说明 6. C语言区分大小写 7. C程序从main( )开始,终止在main( )
C程序的结构 在C语言中,子程序以函数的形式表现,主干程序以主函数main( )的形式表现。 由main( )函数调用其它函数,但其它函数不能调用main( )函数。其它函数之间可以相互调用。 库函数----由C系统提供的函数,用户可以直接使用。 自定义函数----用户自己定义的函数 函数的形式分为无参函数和有参函数 无参函数----调用此类函数不需要传送数据,但可以带回函数值。 有参函数----调用函数时有数据传输。
C语言复习1----数组
数组定义的形式 类型 数组名[下标1][下标2]...[下标n] 其中: 类型----数组的类型也是数组中每个元素的类型。 下标个数为n是n维数组。 下标的值----数组元素的个数,必须是整型,C语言数组的下标从0开始
一维数组 类型 数组名[常量表达式] 其中: 类型----数组中所有数据所具有的共同数据类型 常量表达式----此一维数组的固定长度 例如: 类型 数组名[常量表达式] 其中: 类型----数组中所有数据所具有的共同数据类型 常量表达式----此一维数组的固定长度 例如: int a[10] 定义了1个一维数组,数组名为a,数据类型为整型,数组中有10个元素,分别是a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。
数组元素的引用 #include<stdio.h> void main() { int i,a[10]; for(i=0;i<10;i++) a[i]=i; /*一维数组循环赋值*/ printf("%d ",a[i]); /*一维数组循环引用*/ } 运行结果: 0 1 2 3 4 5 6 7 8 9
二维数组 类型 数组名[常量表达式][常量表达式] 例如:int a[3][2]; 类型 数组名[常量表达式][常量表达式] 例如:int a[3][2]; 这表示数组a是一个3行2列的数组,共有6个元素,每个元素都是int型。 C语言的二维数组的下标都从0起算 a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
二维数组的引用 二维数组的引用与一维数组类似,形式为: 数组名[下标表达式] [下标表达式] 与一维数组一样,引用时下标表达式可以是整形常量、整型变量或整形表达式,如: a[2][2],a[2-1][2*2-1] 数组元素可以被赋值 b[1][2]=a[2][3]/2
字符数组 字符数组就是类型为char的数组,形式如下: char 数组名[常量表达式] 例如:char c[6]; 字符数组的赋值与一般数组一样,例如: c[0]=‘i’;c[1]=‘1’;c[2]=‘a’;c[3]=‘m’;c[4]=‘y’;c[5]=‘h’; 字符型与整型是互通的,字符数组的处理基本上与整型数组相同,只是在ASCII表中,每个字符的数值小于255。
定义和初始化1个二维字符数组 char c[5][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}}; * * * * *
字符数组的引用 #include<stdio.h> void main() { char c[5][5]={{' ',' ','*',' ',' '},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*',' ',' '}}; int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) printf("%c",c[i][j]); printf("\n"); } 运行结果: * * * * *
字符串 字符串是若干个字符构成的序列,以’\0’为结束标志。 字符串常量是用双括号括起来的一串字符,如”China”,C语言会在其尾部添加字符’\0’。 在C语言中没有字符串变量,字符串是作为一维字符数组来处理的。 程序用检测’\0’的位置来判定字符是否结束。
字符串输入函数gets 调用形式: gets(字符数组); 功能:从终端输入1个字符串,存入字符数组,并且得到1个函数值,此函数值就是字符数组的起始地址。例如: char c[25]; gets(c); 从键盘输入: hello 所输入的字符串被送进字符数组c中,函数值就是字符数组c的起始地址。
字符串输出函数puts 调用形式: puts(字符数组); 功能:将1个字符串输出到终端。 注意:字符串必须是以’\0’结尾的,当输出时,此字符串结束标志就转换成了’\n’,即输出字符串后进行换行。 字符串中也可以包含转义字符’\0’,例如: char c[ ]={“hello\nworld”}; puts(c); 输出为: hello world
Strcmp(”compare”,”computer”) 调用形式: strcmp(字符串1,字符串2); 功能:把两个字符串从左到右逐个进行比较,直到出现不同字符或遇到’\0’为止。比较的结果由数值返回。要用头文件#include <string.h>。 函数值=0,字符串1=字符串2; 函数值>0,字符串1>字符串2; 函数值<0,字符串1<字符串2; 例如: Strcmp(”compare”,”computer”)
If(strcmp(str1,str2)>0) 字符串比较 两字符串逐个字符比较,当出现不同字符时,以第1个不相同的字符为准。 实际上,计算机中字符的比较是用其ASCII编码来进行比较,编码大的为大。 char a[]={"compare"}; char b[]={"computer"}; printf("%d",strcmp(a,b)); 注意:对两个字符串的比较,不能用以下形式: If(str1>str2) 只能用 If(strcmp(str1,str2)>0) 运行结果 -1
字符串拷贝函数strcpy 调用形式: strcpy(字符数组1,字符串2) 功能:把字符串2的内容拷贝到字符数组1中。 要用头文件#include <string.h> 例如: char a[]={"compare"}; char b[]={"computer"}; strcpy(b,a); puts(b); 就是把字符串a的内容拷贝到字符串b中,后面自动加1个结束符’\0’。 如果把strcpy(b,a)改为strcpy(a,b),会应为超长而出错。 运行结果: compare
字符串拷贝函数的说明 strcpy(字符数组1,字符串2) 1)“字符数组1”必须是字符串数组,“字符串2”可以是字符串数组也可以是字符串常量。例如: strcpy(str1,”china”); 2)如果之前未对字符数组str1赋初值,在进行strycpy后,字符串2的内容及其后的’\0’拷贝到字符数组1, 如”china0”,取代前6个字符,但后面的剩余字符空间并没有被自动充值成0.
字符串连接函数strcat 调用形式: Strcat(字符数组1,字符数组2); 功能:将字符数组2中的字符连接到字符数组1字符串的后面,结果放在字符数组1中。要用 #include <string.h>。 字符数组1原来的结束标志’\0’会被删除,连接后新的字符串后面保留’\0’。例如: char str1[30]={“People’s Republic of "}; char str2[10]={"China"}; printf("%s",strcat(str1,str2)); 输出结果为: People’s Republic of China
字符串长度测试函数strlen 调用形式: Strlen(字符串); 功能:测试字符串的长度,函数返回值为字符串的实际长度,其中不包括’\0’。例如: char str[10]={“China”}; printf(“%d”,strlen(str)); 输出结果是5。 也可以直接测试字符串常量的长度,例如: strlen(“China”);