湖南省计算机二级考试C语言培训资料.docx

上传人:b****7 文档编号:9740294 上传时间:2023-02-06 格式:DOCX 页数:45 大小:41.04KB
下载 相关 举报
湖南省计算机二级考试C语言培训资料.docx_第1页
第1页 / 共45页
湖南省计算机二级考试C语言培训资料.docx_第2页
第2页 / 共45页
湖南省计算机二级考试C语言培训资料.docx_第3页
第3页 / 共45页
湖南省计算机二级考试C语言培训资料.docx_第4页
第4页 / 共45页
湖南省计算机二级考试C语言培训资料.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

湖南省计算机二级考试C语言培训资料.docx

《湖南省计算机二级考试C语言培训资料.docx》由会员分享,可在线阅读,更多相关《湖南省计算机二级考试C语言培训资料.docx(45页珍藏版)》请在冰豆网上搜索。

湖南省计算机二级考试C语言培训资料.docx

湖南省计算机二级考试C语言培训资料

湖南省计算机二级考试培训内容

一、语言基础

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、变量

   变量定义的一般格式:

    数据类型变量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为假。

     如5>4>3,其结果为0(先作5>4运算,得结果1,再用1和3作1>3运算,得结果0)。

  (4)逗号运算符

       形式:

表达式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

     [else

statement2]

             if-else格式中,if可以单独出现,但else不能单独出现,必须与if配对(配对原则:

else总是和它上面离它最近的未配对的if配对),if-else还可以嵌套。

            ②格式:

switch(表达式)

{     case    E1:

                                      语句组1;

                                      break;

                          case    E2:

                                      语句组2;

                                       break;

                           …….

                          case   En:

                                     语句组n;

                                      break;

                          [default:

                                      语句组;

                                       break;]

}

          说明:

E1,E2,…En是常量表达式,且值必须互不相同

语句标号作用,必须用break跳出

case后可包含多个可执行语句,且不必加{}

switch可嵌套

多个case可共用一组执行语句

(3)循环结构

①while语句:

     格式:

while(表达式)

              {循环体语句;}

     说明:

先判断表达式,后执行循环体,循环体有可能一次也不执行

循环体可为任意类型语句

下列情况,退出while循环

条件表达式不成立(为零)

循环体内遇break,return。

无限循环:

while

(1)

                      循环体;

②do-while语句:

     格式:

do

              {循环体语句;}

           while(表达式);

     说明:

先执行循环体,后判断表达式

至少执行一次循环体

do-while  可转化成while结构

③for语句:

格式:

for(循环变量赋初值;循环条件;循环变量增值)

{循环体语句;

}

说明:

for语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省

无限循环:

for(;;)相当与for(;1;)

for语句可以转换成while结构

        ④三种循环可以嵌套,如:

                for(;4次;)

                 {   ……

                     do

                       {  ……

                        }while(3次);

                      ……

                     while(5次)

                       {  ……

                        }

                       …...

}

           for循环每变化一次,do-while要循环3次,while要循环5次。

        ⑤break,continue语句

            break语句:

功能:

在循环语句和switch语句中,终止并跳出循环体或开关体

说明:

break只能终止并跳出最近一层的结构

break不能用于循环语句和switch语句之外的任何其它语句之中

          continue语句:

功能:

结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断

仅用于循环语句中

       6、数组

           概念:

构造数据类型之一

数组:

有序数据的集合,用数组名标识

元素:

属同一数据类型,用数组名和下标确定

           一维数组的定义:

定义方式:

  数据类型数组名[常量表达式];

例  inta[6];

一维数组的初始化:

inta[5]={1,2,3,4,5};

    说明:

数组不初始化,其元素值为随机数

对static数组元素不赋初值,系统会自动赋以0值

可以只给部分数组元素赋初值

当全部数组元素赋初值时,可不指定数组长度

          一维数组的引用:

数组必须先定义,后使用

只能逐个引用数组元素,不能一次引用整个数组

数组元素表示形式:

数组名[下标]

其中:

下标可以是常量或整型表达式

       二维数组的定义:

定义方式:

 

              数据类型 数组名[常量表达式][常量表达式];

二维数组的初始化:

inta[2][3]={{1,2},{4}};

二维数组的引用:

数组名[下标][下标];

   说明:

数组元素的存放顺序

原因:

内存是一维的

二维数组:

按行序优先

字符数组:

定义:

例  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中去

返值:

返回字符数组1的首地址

说明:

字符数组1必须足够大

                      拷贝时‘\0’一同拷贝

                      不能使用赋值语句为一个字符数组赋值

              字符串比较函数strcmp

格式:

strcmp(字符串1,字符串2)

功能:

比较两个字符串

比较规则:

对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止

返值:

返回int型整数,

a.若字符串1<字符串2,返回负整数

                         b.若字符串1>字符串2,返回正整数

                         c.若字符串1==字符串2,返回零

说明:

字符串比较不能用“==”,必须用strcmp

             字符串长度函数strlen

格式:

strlen(字符数组)

功能:

计算字符串长度

返值:

返回字符串实际长度,不包括‘\0’在内

7、函数

  ①定义形式:

现代形式:

函数类型    函数名(形参类型说明表)

{说明部分

语句部分}

                  例  intmax(intx,inty)

                            {   intz;

                                 z=x>y?

x:

y;

                                 return(z);

                             }

传统形式:

函数类型    函数名(形参表)

形参类型说明

{

说明部分

语句部分

}

    例intmax(x,y)

       intx,y;

       {   intz;

            z=x>y?

x:

y;

            return(z);

        }

②函数返回值

   形式:

return(表达式);

        或return  表达式;

        或return;

  功能:

使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数

说明:

函数中可有多个return语句

若无return语句,遇}时,自动返回调用函数

若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换

void型函数

③函数参数及其传递方式

形式参数:

定义函数时函数名后面括号中的变量名

实际参数:

调用函数时函数名后面括号中的表达式

说明:

实参必须有确定的值

形参必须指定类型

形参与实参类型一致,个数相同

若形参与实参类型不一致,自动按形参类型转换———函数调用转换

形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放

              值传递方式

方式:

函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值

特点:

形参与实参占用不同的内存单元

单向传递

               地址传递方式

方式:

函数调用时,将数据的存储地址作为参数传递给形参

特点:

形参与实参占用同样的存储单元

“双向”传递

实参和形参必须是地址常量或变量

④函数的嵌套与递归调用

嵌套调用:

C规定:

函数定义不可嵌套,但可以嵌套调用函数

               递归调用:

  

8、宏定义

             不带参数宏定义

一般形式:

  #define  宏名   [宏体]

功能:

用指定标识符(宏名)代替字符序列(宏体)

例#definePI3.14(用标识符PI代替3.14)

带参宏定义

#define   宏名(参数表)    宏体

例#define  POWER(x)     x*x

         9、指针

(1)变量与地址,地址与内容的关系

(2)&与*运算符

&含义:

取变量的地址

单目运算符

优先级:

2

结合性:

自右向左

                 *含义:

取指针所指向变量的内容

单目运算符

优先级:

2

结合性:

自右向左

注意与乘法运算符区别

            (3)指针变量的定义

一般形式:

[存储类型]数据类型*指针名;

例  int*p1,*p2;

    float  *q;

    staticchar*name;

指针变量的初始化:

一般形式:

[存储类型]数据类型*指针名=初始地址值

(4)指针变量的使用

    与其他变量的使用相类似,区别是一般变量存的是值,而指针变量存的是地址。

   针变量必须先赋值,再使用

(5)指针与数组

①int  array[10];

    int  *p;

    p=&array[0];        p=array;//

或int*p=&array[0];

或int*p=array;(组名是表示数组首地址的地址常量)

②针变量的赋值运算

p=&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)指针与函数

函数指针:

函数在编译时被分配的入口地址,用函数名表示

①指向函数的指针变量:

定义形式:

数据类型  (*指针变量名)();

如int  (*p)();

函数指针变量赋值:

如p=max;

函数调用形式:

c=max(a,b);等价c=(*p)(a,b);

        ②指针作为函数参数

          指针作函数参数,采用的是地址传递。

       (7)、指针数组

       定义:

数组中的元素为指针变量

定义形式:

[存储类型]数据类型*数组名[数组长度说明];

例  int*p[4];

8、指针总结

定   义

             含义

inti;定义整型变量i

int*p;p为指向整型数据的指针变量

inta[n];定义含n个元素的整型数组a

int*p[n];n个指向整型数据的指针变量组成的指针数组p

int(*p)[n];p为指向含n个元素的一维整型数组的指针变量

intf();f为返回整型数的函数

int*p();p为返回指针的函数,该指针指向一个整型数据

int(*p)();p为指向函数的指针变量,该函数返回整型数

int**p;p为指针变量,它指向一个指向整型数据的指针变量

一、    例题

(1)单选

1、程序的基本单位是            

A)程序行 B)语句  C)函数   D)字符

2、下列符号中,不合法的C语言标识符是          。

A.a3b        B.i_f     C._xy      D.3ok

3、下列表达中,是C语言合法的常量的是         。

A.23     B.‘ab’    C.03      D.3+5

4、程序设计所规定的三种基本控制结构是

A)输入、处理、输出      B)树形、网形、环形

C)顺序、选择、循环      D)主程序、子程序、函数

5、在C语言中,合法的字符常量是(          )

A)'\084'    B)'\x43'    C)'ab'     D)"\0"

6、下列标识符合法的是(       )。

A)long      B)_po@int       C)3abc     D)main

7、设有intx=11;则表达式(x++*1/3)的值是

A)3          B)4               C)11         D)12

8、合法的数组定义是(  )

A)chara[6]="string";     B)inta[5]={0,1,2,3,4,5};

C)chars="string";        D)inta[]={0,1,2,3,4,5};

9、设x和y均为int型变量,则以下语句:

x+=y;y=x-y;x-=y;的功能是()

A)把x和y按从大到小排列

B)把x和y按从小到大排列

C)无确定结果

D)交换x和y中的值

10、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()

A)-3    B)9     C)-12      D)6

11、在C语言中,不正确的int类型的常数是

A)32768    B)0    C)037    D)0xAF

12、下列正确的字符常量是()

  A)‘\105’  B)’*’    C)’\4F’     D)’\A’

13、y、z和k都是int型变量,则执行表达式:

x=(y=4,z=16,k=32)

      后,x的值为(      )

     A)4          B)16      C)32         D)52

14、下列各语句定义了数组,其中哪一个是正确的(   )。

     A、inta[5],b[2,3];         B、charno(10);

C、intx[];                 D、intx[5]={1,2,3};

15、若变量a、iI已正确定义,且i已正确赋值,合法的语句是()

A)a==1   B)++i;  C)a=a++=5;D)a=int(i);

16、能正确表示逻辑关系:

“a≥=10或a≤0”的C语言表达式是

A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0

17、以下程序段

intk=0

while(k=1)k++;

while循环执行的次数是

A)无限次          B)有语法错,不能执行

C)一次也不执行    D)执行1次

18、以下叙述正确的是

A)do-while语句构成的循环不能用其它语句构成的循环来代替。

B)do-while语句构成的循环只能用break语句退出。

C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D)用do-while语句构成的循环,在while后的表达式为零时结束循环。

19、在C语言程序中(   )

A、函数的定义可以嵌套,但函数的调用不可以嵌套

B、函数的定义和函数的调用均不可以嵌套

C、函数的定义不可以嵌套,但函数的调用可以嵌套

D、函数的定义和函数的调用均可以嵌套

20、下面能正确进行字符串赋值操作的语句是(    ).

A)           chars[5]={“ABCDE”};         

B)           chars[5]={‘A’、’B’、’C’、’D’、’E’};

C)           char*s;s=“ABCDEF”;        

D)           char*s;scanf(“%s”,s);

21、若有以下定义和语句:

(      )。

intw[2][3],(*pw)[3];pw=w;

则对w数组元素非法引用是

A)*(w[0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1