全国计算机等级考试二级C语言复习资料Word下载.docx
《全国计算机等级考试二级C语言复习资料Word下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言复习资料Word下载.docx(72页珍藏版)》请在冰豆网上搜索。
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
【解析】C程序开发过程:
编辑—>
(.c)编译—>
(.obj)链接—>
可执行文件(.exe)
2.知识点:
C语言程序的构成
●C程序是由函数构成的,一个C程序有且仅有一个main函数。
一个函数由两部分组成:
函数的首部和函数体。
函数体包括声明部分和执行部分。
一个C程序总是从main函数开始执行(即程序的入口),由main函数结束,(即程序的出口)。
(2010-03-12)以下叙述正确的是(B)
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:
fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在
(2011-09-11)以下叙述中错误的是(C)
A.C语言编写的函数源程序,其文件名后缀可以是C
B.C语言编写的函数都可以作为一个独立的源程序文件
C.C语言编写的每个函数都可以进行独立的编译并执行
D.一个C语言程序只能有一个主函数
3.知识点:
标识符
●命名规则:
标识符中只能包含字母(a-z,A-Z),数字(0-9),下划线(_)。
第一个字符必须是字母或下划线。
●
类型说明符:
int,float,double等
语句定义符:
if,for,while等
分类
都是小写
关键字(32个)
(有固定含义,不可改变)
库函数的名字:
printf,scanf等
编译预处理命令名:
include等
预定义标识符
(有特殊含义,可以改变)
用户自定义的标识符ⅰ格式合法,ⅱ不能使用关键字,ⅲ见名知意
(2010-03-13)以下C语言用户标识符中,不合法的是(D)
A)_1B)AaBcC)a_bD)a-b
4.知识点:
数据类型
(2010-03-16)以下关于C语言数据类型使用的叙述中错误的是(D)
A)若要准确无误差的表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
【解析】结构数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的,一个结构类型的值可以分解成若干个“成员”或“元素”,每个“成员”都是一个基本数据类型或又是一个构造类型,C项正确。
C语言没有逻辑类型,故D项错误。
(2011-03-26)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是(B)
A)-369B)369C)0.369D)整数集合{1,2,3,4,5}
【解析】无符号整数类型为只有正整数和0,所有选择B。
5.知识点:
常量
●整型常量
十进制整常数:
没有前缀,其数码为0-9。
例如65535,-568
八进制整常数:
以0开头,其数码为0-7。
例如015
十六进制整常数:
以0X或0x开头,其数码为0-9,A-F或a-f。
例如0x2A
长整型数:
整型常数后缀为L或l。
例如358000L
无符号数:
整型常数后缀为U或u。
例如158u
●实型常量的形式
小数形式:
必须有小数点,小数点前后不能同时没有数字。
指数形式:
aEn(其中a表示十进制数,E阶码标志,n阶码)。
E前E后必须有数字,E后必为整数,可以带符号。
例如2.1E-3、5E8
(2011-09-13)以下选项中关于C语言常量的叙述错误的是:
(D)
A.所谓常量,是指在程序运行过程中,其值不能被改变的量
B.常量分为整型常量、实型常量、字符常量和字符串常量
C.常量可分为数值型常量和非数值型常量
D.经常被使用的变量可定义成常量
【解析】根据常量的基本概念,则不难判断A、B、C均正确。
(2009-04-13)以下选项中,能用作数据常量的是(D)
A)o115B)0118C)1.5e1.5D)115L
【解析】八进制整常数以0开头,A项错误;
八进制整常数的数码味0-7,B项错误;
实型常量的指数形式E后必为整数,故C项错误;
长整型数后缀为L或l,故D项正确。
(2010-03-26)以下选项中可用作C程序合法实数的是(A)
A).1e0B)3.0e0.2C)E9D)9.12E
【解析】实型指数表示方式“E前E后比有数,E后必须是整数”,故选A
●字符常量:
用单引号‘’括起来的一个字符。
包括普通字符常量和转义字符。
普通字符常量:
如‘a’、‘A’、‘1’。
转义字符:
由一对单引号引起来的以\开头的若干字符的组合。
如‘\n’表示回车换行、‘\\’表示反斜线符、‘\’’表示单引号符、‘\”’表示双引号、‘\ddd’表示八进制数、‘\xhh’表示十六进制数。
(2010-09-15)以下选项中能表示合法常量的是(C)
A)整数:
1,200B)实数:
1.5E2.0C)字符斜杠:
‘\\’D)字符串:
“\007”
【解析】表示整常量不能用逗号分隔,A项错误;
实型常量的指数形式E后必为整数,故B项错误;
’\007’是转义字符,只能用单引号括起来,不能用双引号或其他括号,故D项错误。
例4:
(2010-03-26)以下选项中不能用作C程序合法常量的是(B)
A)1,234B)'
\123'
C)123D)"
\x7G"
【解析】A中的‘,’在编译时会出错的,直接写成1234即可,B是一个三位八进制数代表的字符,C是一个数字常量,D是一个字符串,其中\x7是一个一位十六进制数代表的字符,也即D中的字符串是两个字符,如果sizeof的话是3,如果strlen的话是2。
6.知识点:
变量
●整型变量和实型变量
以考试标准Viusalc++6.0为例,说明各类型变量所占的位数。
类型
所占
位数
字节数
short
16
2
unsignedint
32
4
int
unsignedlong
long
float
unsignedshort
double
64
8
(2010-09-38)有以下程序
#include<
stdio.h>
main(0)
{ints,t,A=100;
doubleB=6;
s=sizeof(A);
t=sizeof(B);
printf(“%d,%d\n”,s,t);
}
在VC6平台上编译运行,程序运行后的输出结果是(C)
A)2,4B)4,4C)4,8D)10,6
【解析】在VC6平台上,int型占4个字节,double型占8个字节,故答案是C。
●字符变量:
一个字符变量只能存放一个字符。
字符串不能存放在字符变量中,只能用字符数组或指针存放字符串。
(2009-09-22)有以下定义语句,编译时会出现编译错误的是(C)
A)chara=’a’;
B)chara=‘\n’;
C)chara=‘aa’;
D)chara=‘\x2d’;
【解析】一个字符变量只能存放一个字符,A项字符变量存放的是普通字符常量;
B、D项字符变量存放的转义字符;
字符常量只能是单个字符,不能是字符串,’aa’不是单个字符,故C项错误。
7.知识点:
ASCII码
●‘0’的ASCII码值为48;
‘A’的ASCII码值为65;
‘a’的ASCII码值为97。
●大写字母与小写字母的ASCII码值相差32。
(2009-09-23)有以下程序
main()
{charc1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
已知字母A的ASCII码为65,程序运行后的输出结果是(A)
A)E,68B)D,69C)E,DD)输出无定值
【解析】’A’的ASCII码值为65,’8’的ASCII码值为56,’4’的ASCII码值为52,65+56-52=69,对应于字符’E’。
’5’的ASCII码值为53,65+56-53=68,对应于字符’D’。
字符变量c1以%c格式输出,即’E’。
字符变量c2以%d格式输出,即68。
故答案是A。
8.知识点:
进制转换
●十进制转换成二进制、八进制、十六进制:
将十进制的数字除以2(8、16),得到的商数继续除以2,直到商为0,然后将各次相除所得的余数从后往前排列。
●二进制、八进制、十六进制转换成十进制:
将二(八、十六)进制数的每一位数从高位到低位乘以2的n-1次幂,n为该位所在的位数。
●二进制与八进制之间的转换:
每个八进制数字转换成3位二进制数字。
●二进制与十六进制之间的转换:
每个十六进制数字转换成4位二进制数字。
(2010-09)以下程序运行后的输出结果是2008。
{inta=200,b=010;
printf(“%d%d\n”,a,b);
【解析】八进制数010转换成十进制数为8,按“%d%d”格式分别输出a、b,即2008。
9.知识点:
运算符的优先级
级别由大到小:
(逻辑)非>
算(术运算符)>
关(系运算符)>
(逻辑)与>
(逻辑)或>
条(件运算符)>
赋(值运算符)
10.知识点:
强制类型转换运算符
●一般形式:
(类型说明符)(表达式)
●功能:
把表达式的运算结果强制转换成类型说明符所表示的类型
(2009-04-06)表达式(int)((double)(5/2)+2.5)的值是4。
【解析】
(int)((double)(5/2)+2.5)→(int)((double)2)+2.5)→(int)(2.000000+2.5)→(int)(4.500000)→4。
以下程序运行后的输出结果是()。
{inta;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("
%d\n"
a);
答案:
3
(3/2)=1,(double)(3/2)+0.5=1.5,(int)1.99*2=2,所以(double)(3/2)+0