您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 湖南省计算机二级考试C语言培训资料
1湖南省计算机二级考试培训内容一、语言基础1、标识符的命名规则(1)只能为字母、数字、下划线(2)第一个不能为数字(3)不能与关键字同名2、常量的合法性(1)整形八进制:以0开头,只能出现数字(0-7)。如0234非法的如078,出现了数字8十六进制:以0x开头,只能为(0-9,abcdef(ABCDEF))合法的有0x234abf,0x698AFE非法的如0x34AFK,出现了K(2)实型小数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5(非法),1.2E-3.5(非法)(3)字符字符常量:用单引号括起来的单个普通字符‘a’,’H’等,非法的如‘abd’字符串常量:用双引号(“”)括起来的字符序列如“abc”,“a“注意:“a“与‘a’的区别3、变量2变量定义的一般格式:数据类型变量1[,变量2,…,变量n];如intad,max,c;(定义三个变量,变量名为ad,max,c)。整形变量占2个字节,实型变量(float占4个字节,double占8个字节),字符变量占1个字节。指针变量占2个字节,结构体变量占其内各变量空间和,共用体变量占其内占空间最大的变量的字节数。变量必须先定义后使用,且使用前变量必须有确定值。4、运算符(1)运算符的优先级,结合性(2)算术运算符:+,-,*,/,%,++,--。①两整数相除,结果为整数,如3/5=0。②%要求两侧均为整型数据,如3.2%2(非法)。③当++,--运算符与其他运算符混合运算时,对前置++,--先自增、自减,再用自增、自减后的值参与其他运算;对后置++,--先用值参与其他运算,再自增、自减。注意:++--不能用于常量和表达式,如5++,(a+b)++(3)关系运算符,逻辑运算符①关系运算符:====!=②逻辑运算符:!&&||这2种运算符的结果只为0和1。对逻辑运算符,只看值的真和假(1代表真,0代表假),而不管值的大小,所有的非0值都为真,即1,只有0为假。如543,其结果为0(先作54运算,得结果1,再用1和3作13运算,得结果0)。(4)逗号运算符3形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:15,只比赋值运算符高逗号表达式的值:等于表达式n的值用途:常用于循环for语句中如a=3,a=a+4,a+6。表达式的值为a+6的值,即13,而a的值为7。5、三种结构的控制语句(1)三种结构:顺序结构,选择结构,循环结构。(2)选择结构if–else,switch①格式:if(expression)statement1[elsestatement2]if-else格式中,if可以单独出现,但else不能单独出现,必须与if配对(配对原则:else总是和它上面离它最近的未配对的if配对),if-else还可以嵌套。②格式:switch(表达式){caseE1:语句组1;break;4caseE2:语句组2;break;…….caseEn:语句组n;break;[default:语句组;break;]}说明:E1,E2,…En是常量表达式,且值必须互不相同语句标号作用,必须用break跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句(3)循环结构①while语句:5格式:while(表达式){循环体语句;}说明:先判断表达式,后执行循环体,循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return。无限循环:while(1)循环体;②do-while语句:格式:do{循环体语句;}while(表达式);说明:先执行循环体,后判断表达式至少执行一次循环体do-while可转化成while结构③for语句:格式:for(循环变量赋初值;循环条件;循环变量增值){循环体语句;}说明:for语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省无限循环:for(;;)相当与for(;1;)for语句可以转换成while结构④三种循环可以嵌套,如:6for(;4次;){……do{……}while(3次);……while(5次){……}…...}for循环每变化一次,do-while要循环3次,while要循环5次。⑤break,continue语句break语句:功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中continue语句:功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中6、数组7概念:构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定一维数组的定义:定义方式:数据类型数组名[常量表达式];例inta[6];一维数组的初始化:inta[5]={1,2,3,4,5};说明:数组不初始化,其元素值为随机数对static数组元素不赋初值,系统会自动赋以0值可以只给部分数组元素赋初值当全部数组元素赋初值时,可不指定数组长度一维数组的引用:数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:数组名[下标]其中:下标可以是常量或整型表达式二维数组的定义:定义方式:数据类型数组名[常量表达式][常量表达式];二维数组的初始化:inta[2][3]={{1,2},{4}};二维数组的引用:数组名[下标][下标];说明:数组元素的存放顺序原因:内存是一维的二维数组:按行序优先8字符数组:定义:例charc[10],ch[3][4];引用:charch[6]={“Hello”};charch[6]=“Hello”;charch[]=“Hello”;常用的字符串处理函数:字符串输出函数puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以‘\0’结束字符串输入函数gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’说明:输入串长度应小于字符数组维数字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去9返值:返回字符数组1的首地址说明:字符数组1必须足够大拷贝时‘\0’一同拷贝不能使用赋值语句为一个字符数组赋值字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止返值:返回int型整数,a.若字符串1字符串2,返回负整数b.若字符串1字符串2,返回正整数c.若字符串1==字符串2,返回零说明:字符串比较不能用“==”,必须用strcmp字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括‘\0’在内7、函数①定义形式:现代形式:函数类型函数名(形参类型说明表)10{说明部分语句部分}例intmax(intx,inty){intz;z=xy?x:y;return(z);}传统形式:函数类型函数名(形参表)形参类型说明{说明部分语句部分}例intmax(x,y)intx,y;{intz;z=xy?x:y;return(z);}②函数返回值形式:return(表达式);或return表达式;11或return;功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数说明:函数中可有多个return语句若无return语句,遇}时,自动返回调用函数若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换void型函数③函数参数及其传递方式形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换———函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放值传递方式方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值特点:形参与实参占用不同的内存单元单向传递地址传递方式12方式:函数调用时,将数据的存储地址作为参数传递给形参特点:形参与实参占用同样的存储单元“双向”传递实参和形参必须是地址常量或变量④函数的嵌套与递归调用嵌套调用:C规定:函数定义不可嵌套,但可以嵌套调用函数递归调用:8、宏定义不带参数宏定义一般形式:#define宏名[宏体]功能:用指定标识符(宏名)代替字符序列(宏体)例#definePI3.14(用标识符PI代替3.14)带参宏定义#define宏名(参数表)宏体例#definePOWER(x)x*x9、指针(1)变量与地址,地址与内容的关系(2)&与*运算符&含义:取变量的地址单目运算符优先级:213结合性:自右向左*含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左注意与乘法运算符区别(3)指针变量的定义一般形式:[存储类型]数据类型*指针名;例int*p1,*p2;float*q;staticchar*name;指针变量的初始化:一般形式:[存储类型]数据类型*指针名=初始地址值(4)指针变量的使用与其他变量的使用相类似,区别是一般变量存的是值,而指针变量存的是地址。针变量必须先赋值,再使用(5)指针与数组①intarray[10];int*p;p=&array[0];p=array;//或int*p=&array[0];或int*p=array;(组名是表示数组首地址的地址常量)②针变量的赋值运算14p=&a;p)(将变量a地址p=array;p)(将数组array首地址p=&array[i];p)(将数组元素地址p1=p2;p1)(指针变量p2值整型变量p,也不能把p的值不能把一个整数指针变量与其指向的变量具有相同数据类型③指针与数组间的等价关系对于一维数组:数组名array表示数组的首地址,即array[0]的地址;数组名array是地址常量array+i是元素array[i]的地址array[i]==*(array+i)对二维数组inta[3][4]:a-----二维数组的首地址,即第0行的首地址a+i-----第i行的首地址a[i]==*(a+i)------第i行第0列的元素地址a[i]+j==*(a+i)+j-----第i行第j列的元素地址*(a[i]+j)==*(*(a+i)+j)==a[i][j]注意:a+i=&a[i]=a[i]=*(a+i)=&a[i][0]值相等,含义不同a+I==&a[i],表示第i行首地址,指向行a[i]==*(a+i)==&a[i][0],表示第i行第0列元素地址,指向列(6)指针与函数函数指针:函数在编译时被分配的入口地址,用函数名表示①指向函数的指针变量:15定义形式:数据类型(*指针变量名)();如int(*p)();函数指针变量赋值:如p=max;函数调用形式:c=max(a,b);等价c=(*p)(a,b);②指针作为函数参数指针作函数参数,采用的是地址传递。(7)、指针数组定义:数组中的元素为指针变量定义形式:[存储类型]数据类型*数组名[数组长度说明];例int*p[4];8、指针总结定义含义inti;定义整型变量iint*p
本文标题:湖南省计算机二级考试C语言培训资料
链接地址:https://www.777doc.com/doc-2293512 .html