湖南省计算机二级考试培训内容C语言.docx
- 文档编号:13105373
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:29
- 大小:31.62KB
湖南省计算机二级考试培训内容C语言.docx
《湖南省计算机二级考试培训内容C语言.docx》由会员分享,可在线阅读,更多相关《湖南省计算机二级考试培训内容C语言.docx(29页珍藏版)》请在冰点文库上搜索。
湖南省计算机二级考试培训内容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=&p=array;array[0]; //
或int*p=&array[0];
或int*p=array;(组名是表示数组首地址的地址常量)
②针变量的赋值运算
p=&a; p)(将变量a地址
p)p=array; (将数组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为指针变量,它指向一个指向整型数据的指针变量
rizlmy一、 例题
(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数组元素非法引用是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南省 计算机 二级 考试 培训 内容 语言