全国二级C语言等级考试学习指导与训练.docx
- 文档编号:13193906
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:110
- 大小:503.26KB
全国二级C语言等级考试学习指导与训练.docx
《全国二级C语言等级考试学习指导与训练.docx》由会员分享,可在线阅读,更多相关《全国二级C语言等级考试学习指导与训练.docx(110页珍藏版)》请在冰点文库上搜索。
全国二级C语言等级考试学习指导与训练
全国二级C语言等级考试学习指导与训练
一、程序与程序设计语言
1.程序
一个用计算机语言描述的,可以由计算机执行的某一问题的解决步骤。
2.计算机语言
又叫程序设计语言,是人与计算机之间交流的工具,通过计算机语言实现人与计算机之间的沟通,使计算机能够明白的按照语言的表达来办事、工作。
如:
C语言、foxpro、basic、java、汇编语言、机器语言等……
(1)机器语言与汇编语言
由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。
汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等。
(2)高级语言
屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定涵义的数据命名和容易理解的执行语句。
二、算法的定义
为解决某个特定问题而采取的确定且有限的步骤。
算法不等于程序,可以被任何一种计算机高级语言转换成程序。
1.算法的特性
(1)有穷性:
一个算法必须保证执行有限步之后结束;
(2)确定性:
算法的每一个步骤必须具有确切的定义;
(3)有零个或多个输入:
应对算法给出初始量;
(4)有一个或多个输出:
算法具有一个或多个输出;
(5)有效性:
算法的每一步都必须是计算机能进行的有效操作。
2.算法的描述方法
(1)自然语言
(2)专用工具:
借助于有关图形工具或代码符号来描述。
常用的工具有流程图、N-S图等。
三、C程序的结构特点
1.一个完整的C程序由若干个函数组成,函数是C语言的基本单位。
一个完整的C程序有且仅有一个main函数,程序执行从main开始,main结束。
函数包括:
函数说明部分、函数体。
2.语句必须以分号(;)作结束标志;
3.“/**/”括起来的是注释,编译前C系统先去掉注释,然后再编译。
ANSIC规定注释不允许嵌套。
4.用预处理命令#include可以包含有关文件的信息。
5.在C语言中区分大小写,如Main、MAIN、main、maiN是不相同的。
四、标识符与关键字
1.标识符
用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。
只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
在C语言中,大小写字母不等效。
因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。
关键字
2.关键字
C语言中规定具有特定含义的标识符,用户不能用来作自定义标识符。
由ANSI标准推荐的关键字有32个,常用的有:
charintfloatdouble等。
五、C语言程序的上机过程
图2.1C语言上机过程
【注意】:
编译只能发现语法错误,不能发现算法错误。
典型例题解析
一、选择题
1.以下叙述不正确的是()。
(A)一个C程序可以由一个或多个函数组成
(B)C语言的基本组成单位是函数
(C)在C程序中,注释语句只能位于一条语句的后面
(D)一个C程序必须包含一个main函数
解析:
C语言的源程序,是由若干个函数组成的,函数是C程序的基本组成单位,在这些函数中必须有一个并且只能有一个主函数(main函数)。
在C程序中,注释可以插在任何可以插入空格的地方。
【答案】C
2.()是C语言提供的合法的数据类型保留字(或称关键字)。
(A)Float(B)unsigned(C)integer(D)Char
解析:
在C中所有的保留字必须都是小写的英文单词,故A、D不对。
整数类型保留字是int、short或long,而integer是其他语言中的整型保留字,不是C语言中的整型保留字。
【答案】B
3.以下说法中正确的是()。
(A)C语言程序总是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main()函数中定义
(C)C语言程序总是从main()函数开始执行,到主函数结束
(D)C语言程序中的main()函数必须放在程序的开始部分
解析:
C语言程序是由一个主函数main()和若干个非主函数组成的。
C程序的执行总是从主函数开始,并在主函数中结束,主函数的位置是任意的。
【答案】C
4.一个算法应该具备〞确定性〞等5个特征,下面对另外4个特征的描述中错误的是()。
(A)有零个或多个输入(B)有穷性(C)可行性(D)有零个或多个输出
解析:
一个算法应该具备的特征是:
有穷性、确定性、有零个或多个输入、有一个或多个输出及有效性(即可行性)。
【答案】D
5.以下说法中正确的是()。
(A)C语言对注释的内容没有任何要求,只要求不是注释嵌套就可以
(B)C程序中所有被调用的函数,在调用之前一定要进行定义
(C)构成C程序的基本单位是函数,所有函数都可以由用户来命名
(D)同一个C程序中的函数之间可以相互调用
解析:
C语言的标准库函数,是由系统命名和定义的,用户可以直接调用;C语言的主函数是由操作系统调用执行的,即主函数可以调用其他函数,而其他函数则不能调用主函数。
【答案】A
一、数据类型概述
图2.2C语言数据类型
二、常量与变量
常量和变量都在内存中占有一定的存储空间。
常量是指在程序运行中,其数值不能被改变的量。
常量又可分为直接常量和符号常量。
直接常量是在程序中直接引用的数据,C语言中有整型常量、实型常量、字符常量和字符串常量4种。
符号常量是用标识符来表示一个数据;在程序不能给它赋值。
变量是指以标识符为名字,其值可以改变的量。
变量代表计算机内存中的某一存储空间,该存储单元中存放的数据称为该变量的值,这个存储单元的大小及每位的含义有变量的类型决定。
在同一程序块中,变量不能被重复定义。
使用变量时必须“先定义,后使用”。
1.常量
(1)整型常量
①十进制形式:
与数学上的整数表示相同。
长整型常量在数后加L。
例如:
12,-100,0,8350L
②八进制形式:
在数码前加数字0;例如:
012=1*81+2*80=10(十进制)
③十六进制形式:
在数码前加0X(数字0和字母X)。
例如:
0x12=1*161+2*160=18(十进制)
(2)实型常量
①十进制小数形式:
由数字和小数点组成;如:
3.4,4.,.3。
②指数形式:
“十进制小数”+“e(或E)”+“十进制数整数”。
例如:
12.5e-6表示12.5×10-6、1e-6表示1×10-6。
(3)字符常量
①普通字符:
用单引号括起来的一个字符;如:
'A'、'1'、'?
'等。
②转义字符:
用单引号括起来的由反斜杠(\)引导的转义字符。
例如:
字符形式功能
'\n'换行
'\t'横向跳格
'\b'退格
'\r'回车
'\\'反斜杠字符
'\''单引号字符
'\ddd'8进制数表示的ASCII码对应的字符
'\xhh'16进制数表示的ASCII码对应的字符
'\0'表示内部值为0的字符,即空字符。
用作字符串的结束标志。
(4)字符串常量
是用一对双引号括起来的字符序列。
每个字符串的后面都有一个'\0'结束符。
例如:
"SHANGHAI","AbcdeFGHijk","Howareyou"等。
2.变量
(1)整型变量
整型变量可分为基本型、短整型、长整型和无符号型。
长整型是在整数的末尾加后缀字母“l”或“L”;无符号整数是在整数的末尾加后缀字母“u”或“U”;无符号长整型应加后缀字母“lu”或“LU”。
(2)实型变量
实型变量分为单精度实型和双精度实型,单精度实型float占4字节,双精度实型double占8字节。
三、运算符与表达式
运算符是表示某种运算功能的符号。
按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、逗号运算符、自增和自减运算符以及位运算符等。
由运算符连接运算对象构成的式子。
可根据运算符的不同进行分类为算术表达式、赋值表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式等。
1.算术运算符的优先级、结合性和算术表达式
(1)算术运算符有:
()、*、/、%、+、-。
(2)优先级有高到低为:
“()”→“*、/、%”→“+、-”,双引号内表示同级运算。
(3)算术运算符结合性:
同级单目运算从右至左,同级双目运算右从左至右。
(4)算术表达式用算术运算符和括符将操作数连接起来的式子。
操作数包括常量、变量和函数等。
(5)自增、自减运算符:
自增、自减运算符为++和--。
要注意++a和a++、--a和a--的区别。
++a,a的值先增加1后再参与其他运算;a++,先参与其他运算后a的值再增加1;--a,a的值先减少1后再参与其他运算;a--,先参与其他运算后a的值再减少1。
自增、自减运算符和其他运算符混合使用时,其结合性是“从右至左”。
2.赋值运算符和赋值表达式
(1)赋值运算符“=”的功能是把“=”右边的表达式的值,存入“=”左边的变量对应的存储空间,即给此变量赋值。
(2)赋值表达式是用赋值运算符将变量和表达式连接起来的式子,其形式为:
<变量>=<表达式>
①x=(y=12)/4y值为12,x值为3,表达式的值为3
②x=y=12/4y值为3,x值为3,表达式的值为3
③x=(y=12/4)y值为3,x值为3,表达式的值为3
④(x=y)=12/4为错误赋值表达式
(3)复合赋值运算符:
复合运算符是一个运算符,功能上是两个运算符功能的组合。
*=、/=、%=、+=、-=与算术运算符结合
<<=、>>=与位运算符结合
&=、Λ=、¦=与位逻辑运算符结合
例如:
a+=b相当于a=a+b
a*=b相当于a=a*b
a*=b+c相当于a=a*(b+c)而不是a=a*b+c
3.逗号运算符和逗号表达式
(1)逗号运算符:
,
(2)逗号表达式形式为:
表达式1,表达式2,…,表达式n
逗号表达式求值规则:
从左至右依次计算各表达式的值,表达式的值为最后一个表达式的值。
4.sizeof运算符
有两种用法:
sizeof(表达式)或sizeof(类型名)
返回给定类型或表达式(运算结果)的字节数。
5.条件运算符
条件运算符有“?
”和“:
”组成,其一般形式为:
<表达式1>?
<表达式2>:
<表达式3>
求值规则:
先求解表达式1的值,若为真(非0),求解表达式2,并把表达式2的值作为整个条件表达式的值,若为假(0),求解表达式3,并把表达式3的值作为整个条件表达式的值。
四、数据类型转换
1.类型自动转换,规则如图2.3所示。
图2.3C语言类型转换示意图
横向表示无条件的转换,比如在计算前,char型要先转换成int再参与计算。
竖向表示操作符两边的操作数属于不同类型时,精度低的向精度高的方向转换,然后再参与运算,运算结果为转换后的类型。
2.赋值转换
在赋值时,赋值号右边表达式的值的类型自动转换为其左边变量的类型。
3.强制类型转换
强制类型转换的一般形式:
(类型)表达式
强制类型转换时,得到所需类型的中间变量,原来变量的类型不会改变。
典型例题解析
一、选择题
1.以下选项中属于合法的C语言长整型常量的是()。
(A)5836253(B)0L(C)2E+10(D)(long)5834563
解析:
长整型常量是在普通整型常数之后加后缀〞L〞或〞l〞所形成的整型常量,其表示范围在-231~231-1之间。
选项A无后缀〞L〞或"〞l〞;选项C是浮点型常量;选项D是表达式,不是常量。
【答案】B
2.设有定义:
inta=12;,则表达式a+=a-=a*a运算后,a的值是()。
(A)552(B)264(C)144(D)-264
解析:
本题考核的知识点为复合赋值运算符的使用。
a+=a-=a*a的运算步骤为:
a*a的结果为144,a-=144等价于a=a-144,结果为a=-132,a+=a等价于a=a+a结果为-264。
【答案】D
3.下面程序的输出结果是()。
#include
voidmain()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d,%d,%d",k,a,b);}
(A)0,0,3(B)0,1,2(C)1,0,3(D)1,1,2
解析:
++和--运算符放在变量后时,先取变量的值,再使变量的值加1或减1,故a++<=0是先判断a<=0,其值为真,再使a加1得0;由于表达式a++<=0的值为真,而表达式(a++<=0)和(!
(b--<=0))是通过&&连接,因此,需要计算表达式(!
(b--<=0))。
由于表达式b<=0的值为假,执行!
运算后也为真。
在处理该表达式时,使b的值减1得3。
因此,最后k为1。
【答案】C
若将程序中语句k=(a++<=0)&&(!
(b--<=0));改为k=(a++<=0)||(!
(b--<=0));,则printf("%d,%d,%d",k,a,b);的结果应为1,0,4。
4.chars='\092';的作用是()。
(A)使s包含一个字符(B)说明不合法,s的值不定
(C)使s包含四个字符(D)使s包含三个字符
解析:
转义符'\xxx'表示1至3位八进制数对应的字符,但八进制数中不能有大于8的数字,否则为非法说明。
【答案】B
5.下列语句中正确的语句是()。
(A)intx=y=z=0;(B)intz=(x+y)++;
(C)x+=3==2;(D)x%=2.5;
解析:
在变量初始化时必须针对每个变量进行,即使有几个变量的初值相同也应如此,故选项A不对,正确的初始化应该是:
intx=0,y=0,z=0;。
++运算符的运算对象必须是可寻址的,而x+y为表达式,是不可寻址的,故选项B不对。
%运算符要求运算对象必须是整数,而2.5是浮点数,故选项D不对。
选项C相当于x=x+(3==2),是正确的赋值语句。
【答案】C
6.下面程序段的输出结果是()。
intx=0xaffbc;printf("%x",x);
(A)赋值非法(B)输出值不确定
(C)输出值为affb(D)输出值为ffbc
解析:
由于十六进制数oxaffbc共有20位二进制数,而x在内存中只占16位。
因此,在C语言中将会〞截取〞多余部分。
即两个低字节的值被保留,而高字节的值〞丢失〞。
此题中显然高位的a丢失,最后输出的是ffbc。
【答案】D
7.对于条件表达式(M)?
(a++):
(a--)来说,其中的表达式M等价于()。
(A)M==0(B)M==1(C)M!
=0(D)M!
=1
解析:
条件表达式e1?
e2:
e3的含义是e1为真时,其值等于表达式e2的值,否则为表达e3的值。
在C语言中〞为真〞与〞不等于假〞是逻辑等价的,即M等价于M!
=0。
【答案】C
8.下列符合C语言语法的实数是()。
(A)1.5e0.5(B)3.16e(C)5e-10(D)e+8
解析:
在C语言中,实数的表示有小数形式和指数形式。
其中指数形式为:
Ae+B。
在C语言中,e之前必须有数字、e之后的指数必须为整数。
【答案】C
9.下列语句中,最正确的赋值语句是()。
(A)A=7+b+c=a+7;(B)a=7+b++=a+7;
(C)a=7+b,b++,a+7;(D)a=(7+b,c=a+7);
解析:
赋值语句中,左边只能是变量名。
选项A中的7+b+c、选项B中的7+b++都是表达式,故是非法赋值。
选项C是逗号表达式。
D选项赋值号的右边是一个逗号表达式。
【答案】D
10.与下列程序的输出结果等价的是()。
#include
voidmain()
{chara=3,b=6;
charc=a^b<<2;
printf("\n%d",c);
}
(A)00010100(B)00011011(C)00011100(D)00011000
解析:
<<运算优先于^运算,故c=a^b<<2等效于a^(b<<2),其值为3^(6*4)=(00000011)2^(00011000)2=(00011011)2=27。
【答案】B
一、程序的控制结构
程序设计语言有顺序、选择、循环三种基本的控制结构。
二、语句
每条语句以分号“;”结束,分号是语句的标志。
C语言的语句可分为以下四类:
简单语句(表达式语句、函数调用语句包括输入/输出函数、空语句),复合语句,流程控制语句。
单独的一个分号称为空语句。
由{}括起来的若干语句构成一个复合语句。
C语言中复合语句的形式为:
{
变量定义语句;
执行性语句;
}
复合语句和空语句在语法上都是一条语句。
三、数据输入和输出
1.单个字符输入输出
intputchar(intch)函数输出一个字符。
intgetchar(void)函数通过键盘输入单个的字符。
2.格式化输入与输出函数
intscanf(格式化控制字符,参数列表);
功能:
按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束。
返值:
正常,返回输入数据个数。
intprintf(格式化控制字符,参数列表);
功能:
按指定格式向显示器输出数据。
返值:
正常,返回输出字节数;出错,返回EOF(-1)。
常用格式控制字符介绍:
%c输(入)出单个字符
%s输(入)出字符串
%d输(入)出int型
%u输(入)出无符号型整数
%ld输(入)出longint型
%f输(入)出float型
%lf输(入)出double型
%x以16进制形式输入和输出
%o以8进制形式输入和输出
典型例题解析
一、选择题
1.putchar函数可以向终端输出一个()。
(A)整型变量表达式的值(B)实型变量的值
(C)字符串(D)字符或字符型变量的值
解析:
这是putchar函数的功能,只能输出一个字节的值。
【答案】D
2.以下能正确地定义变量a,b和c并为它们赋初值5的语句是()。
(A)inta=5,b=5,c=5;(B)inta,b,c=5;
(C)a=5,b=5,c=5;(D)inta=b=c=5;
解析:
B的a,b未赋值,C缺int,D不能连续定义变量。
【答案】A
3.以下程序的输出结果是()(注:
备选答案中,-代表空格)
main()
{printf("\n*s1=%15s*","chinabeijing");
prinf("\n*s2=%-5s*","chi");
}
(A)*s1=chinabeijing---*(B)*s1=chinabeijing---*
*s2=**chi*;*s2=chi--*
(C)s1=*--chinabeijing*(D)*s1=---chinabeijing*
*s2=--chi;*s2=chi--*;
解析:
printf("\n*s1=%15s*","chinabeijing");语句中%15s表示输出占15列,右对齐,左端补空格。
prinf("\n*s2=%-5s*","chi");语句中%-5s表示输出占5列,左对齐,右端补空格。
【答案】D
4.设有以下程序:
#include
voidmain()
{inta=201,b=012;
printf(〞%2d,%2d\n〞,a,b);
}
(A)01,12(B)201,10(C)01,10(D)20,01
解析:
a是十进制数201,b是八进制数,把a按%2d格式输出因给定宽度不够,按实际数大小输出而突破格式限定;b是八进制数012即十进制数10。
【答案】B
5.有定义语句inta,b;,若要通过语句scanf(〞%d,%d〞,&a,&b);使变量a得到数值6,变量b得到数值5,下面输入形式中错误的是()。
(注:
备选答案中,-代表空格)
(A)6,5<回车>(B)6,--5<回车>(C)65<回车>(D)6,<回车>
5<回车>
解析:
此题是输入格式,输入a,b时以逗号隔开。
【答案】C
一、关系运算符与关系表达式
C语言有6个关系运算符:
<、<=、>、>=(优先级高)
==、!
=(优先级低)
关系表达式是用关系运算符将表达式连接起来的式子。
关系表达式的结果为“真”或“假”,分别用1和0来表示。
二、逻辑运算符与逻辑表达式
C语言有6个关系运算符:
!
(非)、&&(与)、||(或)
优先级由左到右则从高到低。
逻辑表达式是用逻辑运算符将表达式连接起来的式子。
逻辑运算要求的运算量为“真”或“假”。
运算结果也为真或假。
逻辑运算在处理操作数时,原则是非0即真,0即假。
而对于运算结果,真用1表示,假用0表示。
逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
例:
a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值。
例:
a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值。
三、混合运算优先级
!
算术运算符
关系运算符
&&和||
赋值运算符
从上到下为从高到低。
四、if语句
1.if语句的三种形式
(1)形式一
if(表达式)语句;
其功能是:
当表达式为真时,执行语句;为假时,什么都不做。
(2)形式二
if(表达式)语句1;
else语句2;
其功能是:
当表达式为真时,执行语句1;为假时,执行语句2。
(3)形式三
if(表达式1)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
...
elseif(表达式n)语句n;
else语句n+1;
其功能是:
当表达式1为真时,执行语句1,语句终止;否则,当表达式2为真时,执行语句2,语句终止;否则,当表达式3为真时,执行语句3,语句终止;...;否则,当表达式n为真时,执行语句n,语句终止,否则执行语句n+1。
2.有关说明
(1)if后面的表达式类型任意。
(2)语句可以是复合语句。
(3)if~else配对原则:
else总是和它上面离它最近的未配对的if配对。
五、switch语句
1.形式
switch(表达式)
{
case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
...
case常量表达式n:
语句n;
break;
default:
语句n+1;
}
2.switch语句的执行过程:
表达式的值为整型(或字符型),也可以是枚举型。
常量表达式的值是对应的整型(或字符型),也可以是枚举型。
break语句的作用是跳出switch结构,可根据具体情况取舍。
在执行时,先计算表达式的值,然后把该值与各个常量表达式的值比较,如有常量表达式的值与表达式的值匹配,就转去执行其下的语句,然后通过break跳出整个结构。
如果没有常量表达式的值与表达式的值匹配,则执行default后的语句。
default部分可以不写。
典型例题解析
一、选择题
1.若从键盘输入89,则以下程序输出的结果是()。
#incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 二级 语言 等级 考试 学习 指导 训练