版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试二级C语言上机答题技巧一、上机改错题的特点和注意事项1.上机改错的试题中通常包含两个(或三个)错误需要修改。
2.试题中用"******found******/"来提示在下一行(或下面第二行)有错。
3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处。
4.特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序。二、上机改错测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确。
2.当在VisualC++6.0环境下调出源程序后,审视所在函数,根据题义理解程序所采用的基本算法,做到心里有数。
3.先按CTRL+F7对测试程序进行检查是否有语法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。
4.当不再出现语法错时,使用F7执行,看结果使用CTRL+F5,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。
5.当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候数组上限下限错误了,基数是从0开始而不是1开始的。修改程序中的逻辑错时,要求考生认真读懂程序代码。
6.修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。三、上机编程题的特点和说明1.在二级C程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。四、进行编程测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。
2.当在VisualC++6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。
3.理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。
4.选择适当的算法进行编程,输入程序语句。不要忘记及时存盘!
5.编译程序,直到没有语法错误。
6.调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。1.书写标识符时,忽略了大小写字母的区别。
main()
{
inta=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。
main()
{
floata,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。
charc;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串
“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写
if(a=3)then…
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:
if(a==3)a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1
b=2
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
{z=xy;
t=z/100;
printf("%f",t);}
对于复合语句来说,最后一个语句中最后的分号不能忽略不写。6.多加分号。
对于一个复合语句,如:
{z=xy;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if(a%3==0);
I;
本是如果3整除a,则I加1。但由于if(a%3==0)后多加了分号,则if语句到此结束,程序将执行I语句,不论3是否整除a,I都将自动加1。
再如:
for(I=0;I<5;I);
{scanf("%d",&x);
printf("%d",x);}
本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。7.输入变量时忘记加地址运算符“&”。
inta,b;
scanf("%d%d",a,b);
这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。8.输入数据的方式与要求不符。
①scanf("%d%d",&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf("%d,%d",&a,&b);
C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
3,4
此时不用逗号而用空格或其它字符是不对的。
343:4
又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=49.输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入abc
字符“a”送给c1,字符“”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。10.输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。11.输入数据时,企图规定精度。
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。12.switch语句中漏写break语句。
例如:根据考试成绩的等级打印出百分制数段。
switch(grade)
{case'A':printf("85~100\n");
case'B':printf("70~84\n");
case'C':printf("60~69\n");
case'D':printf("<60");
default:printf("error");
由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如
case'A':printf("85~100");break;13..在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。
main()
{staticinta[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d",a[10]);
}
C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。
16.在不应加地址运算符&的位置加了地址运算符。
scanf("%s",&str);
========================================================================
C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:
scanf("%s",str);
1、编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。
例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba
fun(char*s)
{inti=0,t,n=strlen(s);
for(;si{t=*(si);*(si)=*(sn-1-i);*(sn-1-i)=t;}}
注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次
都进行两字符的位置对换,直到中间字符(用si地址,因此要注意把它的内容取出再进行换位。即先进行取内容运算*)
2、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。
intfun(char*s,intnum)
{inti,j,t;
for(i=1;ifor(j=i1;jif(s{t=s;
s=s[j];
s[j]=t;}}
该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后
端走动,每走动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进
行换位。直到外for()循环走到最后一个字符。此外,此题还要注意把首尾字符除开,即
在最外层for()循环中从1开始,只到num-2即可。
3、请编写一个unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23。
unsignedfun(unsignedw)
{if(w>=10000)returnw000;
if(w>=1000)returnw00;
if(w>=100)returnw0;
returnw;
}
注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后
面4位,否则如果大于1000则对1000求余得出后3位数,这样一层一层往小的判断。由于
return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的
用if()语句。
4、请编一函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主函数中赋予。
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{inti,j;
for(i=0;i{pp=tt[0];
for(j=0;jif(tt[j]}}
5、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。数组元素中的值和y的值由主函数通过健盘读入。
试题程序。
#defineM20
voidfun(intbb[],int*n,inty)
{inti,j=0;
for(i=0;i<*n;i)
if(bb!=y)bb[j]=bb;
*n=j;}
6、请编写一个函数intfun(intx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。
所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从健盘读入,要求不大于100。
intfun(intx)
{intxx=x*x;
if(xx==x//xx==x//xx0==x)return1;
elsereturn0;}
7、请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值。例如:若输入字符串:123412132,输入字符为:1,则输出:3。
#defineM81
intfun(char*ss,charc)
{intnum=0;
while(*ss!='\0')
{if(*ss==c)num++;
ss++;}
return(num);}
8、请编写函数fun,经的功能是:求出1到1000之内能被7或11整除、但不能同时补7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
{inti,m=0;
for(i=1;i<1000;i)
if(((i%7==0)//(i==0))&&!((i%7==0)&&(i==0)))
{a[m]=i;m=1;}
*n=m;
}10、要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。
试题程序。
#include
#include
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
{
inti,j=0;
for(i=1;i<size;i++)
if(list[i]<list[j])j=i;
returnj;
}
/*注:该题的算法是用一个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较。
================================================================改错题策略与技巧一般有2—3处错误,均在以“*******found*******”下按Ctrl+F7编译出现多个错误,由前向后修改。错误分两大类
一.语法错误①丢失分号,或误写成逗号②关键字拼写错误,如小写变大写③语句格式错误,如for句中多写或少写分号④表达式声明错误,如少了()⑤函数类型说明错误⑥函数形参类型声明错误,如少*号⑦运算符,书写错误,如<写成>
二.逻辑错误(语义错误)①变量初值错误②循环次数不对③下标越界④运算类型不匹配
编程题策略与技巧
一.认真阅读试题①题目所给出的限制条件②一些术语解释③题目提供的算法④程序的执行结果
二.清晰地理解fun函数①函数的功能②函数反回值类型③参数传递方式④运行结果三.调试运行程序①先调试程序②运行程序③利用好VC++调试工具一、选择题(每小题1分,共40小题,共40分)
1.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述3种说法都不对D。【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。
2.开发软件时对提高开发人员工作效率至关重要的是()。
A.操作系统的资源管理功能
B.先进的软件开发工具和环境
C.程序员的数量
D.计算机的并行处理能力B。【解析】先进的软件开发工具和环境对提高开发人员工作效率是至关重要的。
3.程序设计语言的基本成分是数据成分、运算成分、控制成分和()。
A.对象成分
B.变量成分
C.语句成分
D.传输成分D。【解析】程序设计语言的基本成分有:数据成分,用于描述程序所涉及的数据;运算成分,用于描述程序中所包含的运算;控制成分,用于描述程序中所包含的控制;传输成分,用于表达程序中数据的传输。
4.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。
A.125
B.n/2
C.n
D.n+lC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况
下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。
5.有下列二叉树,对此二叉树前序遍历的结果为()。
A.XZCYAB
B.XYZABC
C.XYABCZ
D.XYAZBCD。【解析】对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。
6.下列叙述中正确的是()。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对C。【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
7.软件工程的理论和技术性研究的内容主要包括软件开发技术和()。
A.消除软件危机
B.软件工程管理
C.程序设计自动化
D.实现软件可重用B。【解析】基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。
8.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。
A.调用语句
B.命令
C.H令
D.消息D。【解析】在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,但并不指示接受者应该怎么完成这些处理。
9.下列选项中,是软件调试技术的是()。
A.错误推断
B.集成测试
C.回溯法
D.边界值分析C。【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。
10.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包括DBS和DBMS
B.DBMS包括DB和DBS
C.DBS包括DB和DBMS
D.没有任何关系C。【解析】数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台5个部分组成,因此DB和DBMS都是DBS的组成部分。11.下列()不是高级程序设计语言。
A.FORTRAN
B.Java
C.C++
D.VisualASMD。【解析】高级语言是一类人工设计的语言,因为它对具体的算法进行了描述,所以又称为算法语言。它是面向程序设计独立于计算机的硬件。目前,计算机常用的高级语言有:BASIC语言、FORTRAN语言、COBOL语言、PASCAL语言、C语言、PROLOG语言、而当前流行的,面向对象的程序设计语言有C++和用于网络环境的程序设计语言Java等。
12.16根地址总线的寻址范围是()。
A.531KB
B.64KB
C.640KB
D.1MBB。【解析】假设地址总线有n条,内存的寻址范围是2n。
13.在一所大学中,每个系都有自己的局域网,则连接各个系的校园网()。
A.是广域网
B.还是局域网
C.是地区网
D.这些局域网不能互连B。【解析】广域网是指远距离的计算机互联网络,分布范围可达几千千米乃至上万千米甚至跨越国界、州界、遍及全球范围。局域网是指一个局部区域中的、近距离的计算机互联网络,通常采用有线方式连接,分布范围从几百米到几千米。例如,一座大楼内或相邻的几座楼之间的互联网络。一个单位、学校内部的网络多为局域网。
14.下列关于信息加密的叙述中,正确的是()。
A.加密通过加密算法实现
B.加密前的文件称为密文
C.加密后的文件称为明文
D.将明文变为密文的过程称为解密A。【解析】一般人们将加密前的文件称为明文,而加密后的文件称为密文,因此加密的目的就是将明文变为密文。而反过来将密文变为明文的过程则称为解密。
15.下列关于域名和IP地址的叙述中,不正确的是()。
A.在Internet中访问一台主机必须使用它的主机名
B.200.201.202.203是一个C类IP地址
C.IP地址采用的是分层结构
D.主机名与IP地址是一一对应的A。【解析】每台直接连接到Internet上的计算机、路由器都必须有唯一的IP地址。IP地址是Internet赖以工作的基础。Internet中的计算机与路由器的IP地址采用分层结构,它是由网络地址与主机地址两部分组成。对于C类地址,其网络地址空间长度为21位,主机地址空间长度为8位,C类IP地址范围从:l92.0.0.0~223.255.255.255。主机名与它的IP地址一一对应,因此在Internet上访问一台主机既可以使用它的主机名,也可以使用它的IP地址。
16.Java语言中。负责并发管理的机制是()。
A.垃圾回收
B.虚拟机
C.代码安全
D.多线程D。【解析】多线程是Java程序的并发机制,它能同步共享数据、处理不同的事件。
17.下列描述中,错误的是()。
A.Java要求编程者管理内存
B.Java的安全性体现在多个层次上
C.Applet要求在支持Java的浏览器上运行
D.Java有多线程机制A。【解析】为了充分利用资源,Java有一个系统级的线程,用来对内存的使用进行跟踪,它可以在系统空闲时对不用的内存空间进行回收,从而使程序员从繁忙的内存管理中解放出来。
18.Java为移动设备提供的平台是()。
A.J2MEB.J2SE
C.J2EED.JDK5.0A。【解析】Java2平台包括:J2ME平台、J2SE平台和J2EE平台。其中:J2ME是为嵌入式和移动设备提供的Java平台;J2SE是面向企业级应用与服务的综合性标准开发平台;J2EE是面向大型企业级用容器管理专用构件的应用平台。而JDK5.0是一个Java开发软件包。
19.JDK中提供的文档生成器是()。
A.javadoc.exe
B.javap.exe
C.java.exe
D.javaprof.exeA。【解析】在JDK中:javadoc.exe是文档生成器,将Java源代码和包以MML格式生成AP文档;java.exe是Java解释器;javap.exe是Java反汇编器;javaprof.exe是Java剖析工具,提供解释器剖析信息。
20.下列不属于Swing中构件的是()。
A.JPanel
B.JTable
C.Menu
D.JFrameC。【解析]JPanel是Swing的中间容器;JTable是Swing中可编辑信息的构件;JFrame是Swing的顶层容器。阅读下面程序
importjava.io.*;
publicclassTypeTransition{
publicstaticvoidmain(Stringargs[]){
chara=’h’;
inti=100;
intJ=97;
intaa=a+i;
System.out.println("aa="+aa);
charbb=(char)j;
System.out.println("bb="+bb):
}
}
如果输出结果的第二行为bb=a,那么第一行的输出结果是()。
A.aa=I
B.aa=204
C.aa=v
D.aa=156B。【解析】本题考查的是Java的基本数据类型及其运算。程序开始生成了一个字符型变量a和3个整型变量i、j、aa。而整型变量aa的初始值是a+i,其中a是一个字符
型变量。如何进行加法运算呢?Java语言规定,char型数据可以自动转换成int类型,转换的结果就是该字符的ASCIl码值。因此,整型变量aa的初始值为字符”h”的ASCIl码值加上l00。如果记住h的ASCIl码值是104,则直接就确定aa的初始值是204,选项B为正确答案。如果记不得h的ASCIl码,题目中则给出提示。题目中说”输出结果的第二行为bb=a”,也就是字符bb的值为字符a,bb的生成语句是charbb=(char)j,是把整型变量j的值强制转换为字符型。同样,把ASCIl码值为j(97)所对应的字符赋值给bb。显然,字符a的ASCIl码值为97,字符b的ASCIl码值为98,依次类推,字符h的ASCIl码为l04。因此,本题的正确答案是B。
22.阅读下面程序
publicclassOperatorsAndExpressions(
voidequalsMethodl(){
Stringsl一newString("howareyou");
Strings2=newString("howareyou");
System.out.println(s1==s2):
}
publicstaticvoidmain(Stringargs[]){
OperatorsAndExpressionsOperAndExp=newOper-
atorsAndExpressions
();
//用于复合类型数据的”==”运算符
OperAndExp.equalsMethodl();
}
}
程序运行结果是()。
A.==
B.true
C.false
D.equal
C。【解析】本题考查的是Java语言中运算符的特殊用法。相等比较运算符"==",不仅可用于基本类型的数据之间的比较,还可以用于复合类型数据之间的比较。但是,对于复合类型数据的"=="运算,其比较的目标是两个操作数是否是同一个对象。如果需要比较两个对象的值是否相同,则可以调用equals()方法。题目中函数equalsMethodl()的代码非常简单,首先生成两个字符串对象sl和s2,然后输出表达式"sl==s2"的结果。根据上面介绍的相等比较运算符的用法,字符串对象sl和s2是复合类型数据,因此表达式"sl==s2"比较的是sl和s2是否同一个对象。显然,sl和s2虽然具有相同的值,即"howareyou",但它们是两个不同的对象。因此,本题的正确答案是C。23.阅读下面代码
if(x==0){System.out.println("冠军");)
elseif(x>一3){System.Out.println("亚军");}
else{System.out.println("季军");}
若要求打印字符串”季军”,则变量X的取值范围是()。
A.x=d&x<=-3
B.x>O
C.x>-3
D.x<=-3
23.D。【解析】本题考查的是条件分支语句if-else。if-else根据判定条件的真假来执行两种操作中的一种。当条件为真时,执行if语句后面的代码块;当条件为假时,执行else后面的代码块。题目中的代码段是一个if-else的嵌套语句,根据if-else语句的执行过程来进行分析。当x的值为0时,布尔表达式"x==0"的结果为真,就输出”冠军”;当x的值不为0时,则执行else语句中的内容。else语句中的代码又是一个if-else语句,还是和上面一样进行分析。当X的值不等于0且大于-3时,布尔表达式”x>-3”的结果为真,输出"亚军";当x的值不等于0且不大干-3,也就是X的值不等于0同时x的值小于等于-3时,则输出"季军"。经过上述分析可知,要想输出"季军",x所满足的条件为x!=O&x<=-3,但是当x<=-3时,x的值一定不会为0。所以,X所满足的条件可以简写为x<=-3。因此,本题的正确答案为D。
24.下列关于构造方法的叙述中,错误的是()。
A.Java语言规定构造方法名与类名必须相同
B.Java语言规定构造方法没有返回值,但不用void声明
C.Java语言规定构造方法不可以重载
D.Java语言规定构造方法只能通过new自动调用C。【解析】本题考查的是构造方法的使用。Java语言中,构造方法是一种特殊的方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。Java中的每个类都有构造方法,它也是由方法名、参数和方法体组成的。构造方法有如下特点:
·构造方法的名字必须与类名相同。
·构造方法不返回任何数据,但不用void来声明。
·用户不能直接调用构造方法,必须通过关键字new自动调用。
·构造方法可由用户在类中定义,默认时由Java语言自动生成。但它是个空方法,变量被赋予该数据类型的默认值。
·在构造方法实现中,可以进行方法重载,即定义多个构造方法。重载构造方法的目的是使类具有不同的初始值,为类对象的初始化提供方便。根据上述构造方法的特点可知,本题选项C的说法是错误的。
25.下列适配器类中不属于事件适配器的是()。
A.MouseAdapter
B.KeyAdapter
C.ComponentAdapter
D.FrameAdapter
D。【解析】本题考查java.awt.event包中定义的适配器类。该包中定义的适配器类包括①ComponentAdapter构件适配器;②ContainerAdapter容器适配器;③FocusAdapter焦点适配器;④MouseAdapter鼠标适配器;⑤KeyAdapter键盘适配器⑥WindowAdapter窗口适配器,由此可知本题答案为D。26.下列类中属于字节输入抽象类的是()。
A.FileInputStream
B.ObjectInputStream
C.FiterInputStream
D.InputStream
D。【解析】在Java中定义了两种类型的流,字节型和字符型,这两种流分别用4个抽象类表示:InputStream,OutputStream,Reader,Writer,其中InptutStream和OutStream表示字节流,Reader和Reader是表示字符流,所以字节输入抽象类为InptutStream。27.能向内部直接写入数据的流是()。
A.FileOutputStream
B.FileInputStream
C.ByteArrayOutputStream
D.ByteArraylnputStream
C。【解析】本题考查Java的内存读写。在java.io中,还提供了ByteArrayInputStream、ByteArrayoutputStream和StringBufferInputStream类可直接访问内存,它们是InputStream和OutputStream的子类。用ByteArrayOutputStream可向字节数组写入数据;ByteArrayInputStream可从字节数组中读取数据。28.下列运算符中属于关系运算符的是()。
A.==
B.=
C.+=
D.-=
A。【解析】本题考查Java的关系运算符。B中写法不正确,C、D均为赋值运算符。29.下列方法中,声明抛出InterruptedException类型异常的方法是()。
A.suspend()
B.resume()
C.sleep()
D.start()
C。【解析】本题考查线程的基本操作。Java中提供了interrupt方法用来中断一个线程,当调用一个线程的interrupt方法时,即向该线程发送一个中断请求。在调用线程的interrupt方法时,如果该线程由于调用了sleep方法或wait方法而正在处于阻塞状态,那么线程会抛出一个InterruptException异常。30.下列关于System类的叙述中,错误的是()。
A.System类是一个final类
B.System类不能实例化
C.System类中没有定义属性
D.System类主要提供了系统环境参数的访问C。【解析】本题考查System类的基本知识。Systern类是一个final类,所有的方法都用类变量来调用,对System类不可能实例化。System类主要用来提供标准输入/输出和系统环境信息的访问设置。而System类的属性有:①publicstaticfinalInputStreamin;标准输入;②publicstaticfinalOutputStreamout;标准输出;③pubhcstaticfinalPrintStreamerr;标准错误输出。阅读下面程序
publicclassIncrement{
publicstaticvoidmain(stringargs[]){
intC;
c=5:
System.out.println(c);
System.out.println(c++):
System.out.println(c);
}
}
程序运行结果是()。
A.5
6
6
B.5
5
6
C.6
7
7
D.6
6
6
B。【解析】本题考查的是Java增量运算符"++"。x++是先使用后加l,即首先使用X的值进行表达式的计算,然后才对x的值加1。而++x是先加1后使用,即首先对x的值加1,然后使用x的值进行表达式的计算。本题首先生成一个整型变量C,其初始值为5。第一条输出语句输出c的初始值,即5。然后,第二条输出表达式c++的结果,即先输出C的值,然后才对c的值加1,所以,第二条输出语句输出的是5,输出后c的结果才为6。最后一条输出语句输出结果为6。因此,本题的正确答案为B。32.下列叙述中,错误的是()。
A.JavaApplication与Applet所用编译命令相同
B.通常情况下JavaApplication只能有一个main()方法
C.JavaApplet必须有HTML文件才能运行
D.JavaApplet程序的.class文件可用Java命令运行
D。【解析】本题考查的是Java中的Applet以及Applet与Application的区别。Applet是能够嵌入HTML语言中,并能够在浏览器中运行的类。Applet的运行环境是Web浏览器,所以必须建立HTML文件,告诉浏览器如何加载与运行Applet。因为Applet是不能直接通过Java命令行启动运行的。所以选项D的说法错误。33.下列关于Java语言中线程的叙述中,正确的是()。
A.线程由代码、数据、内核状态和一组寄存器组成
B.线程间的数据是不共享的
C.用户只能通过创建Thread类的实例或者定义和创建Thread子类的实例,建立和控制自己的线程
D.因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定
D。【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数据。代码所操作的数据是Java线程模型中的一个组成部分,数据与代码是独立的。数
据可以被多个线程共享,也可不共享。Java语言中提供两种创建线程的方法,一种是通过继承Thread类创建线程,另一种是通过实现Runnable接口来创建线程。34.处理对象传输的接口是()。
A.Serializable
B.C:loneable
C.hemListener
D.ActionListener
A。【解析】处理对象传输就是把对象串行化。Java语言中,如果要串行化某些类的对象,这些类就必须实现Serializable接口。35.在读取二进制数据文件的记录时,为了提高效率常
常使用的一种辅助类是()。
A.InputStream
B.FileInputStream
C.StringBuffer
D.BufferedReader
C。【解析】本题考查Java语言的输入/输出流。InputStream类、FilelnputStream类和BufferedReader类都是Java语言中和输入输出直接相关的类,不属于辅助类,因此可以直接判断出选项C为正确答案。36.在Applet中显示文字、图形等信息时,应使用的方法是()。
A.init()
B.start()
C.paint()
D.destroy()
C。【解析】paint()是与Applet显示相关的方法,由它来具体执行Applet的绘制功能。init()方法用于初始化Applet,start()方法用于激活Applet。在init()方法完成后,将调用start()方法,而且在Applet每次显示时都要调用。destroy()方法用于彻底终止Applet。37.关于线程的生命周期以下状态正确的是()。
A.新建状态、可运行状态、阻塞状态、恢复状态和终止状态
B.新建状态、运行状态、阻塞状态、恢复状态和终止状态
C.新建状态、可运行状态、运行状态、阻塞状态和终止状态
D.新建状态、可运行状态、运行状态、恢复状态和终止状态
C。【解析】线程生命周期中出现的状态包括:新建状态、可运行状态、运行状态、阻塞状态和终止状态。38.Thread类中能运行线程的方法是()。
A.resume()
B.start()
C.run()
D.init()
C。【解析】resume()是Thread类提供的用于线程控制的方法;start()是Thread类中的方法,新建的线程不会自动运行,必须调用线程的start()方法才能运行该线程;run()是Thread类中的方法,在该方法中定义了线程的具体行为,线程开始执行时,就是从它的run()方法开始执行的,就像Java应用程序从main()开始、Applet从ink()开始一样;init()不是Thread类中的方法。39.以下不是APPLET标记的选项是()。
A.PARAM
B.BODY
C.CODEBASE
D.ALT
B。【解析】标记的一般格式是:
[CODEBASE=codebaseURL]
CODE=appletFile
[ALT=alternateText]
[NAME=appletlnstanceName]
WIDTH=pixels
HEIGHT=pixels
[ALIGN=alignment]
[VSPACE=pixels]
[HSPACE=pixels]
[ARCHIVE=archiveFiles]
>
[
ue>]
[
ue>]
[alternateHTML]
因此可以看出,选项B不是APPLET标记。40.在Java中,与数据库连接的技术是()。
A.开放数据库连接
B.Java数据库连接
C.数据库厂家驱动程序
D.数据库厂家的连接协议B。【解析】开放数据库连接(ODBC,OpenDatebaseConnectivity),它是用C语言定义的。由于J2EE要求与Java绑定,因此规定使用Java数据库连接(JDBC,JavaDataBaseConnectivity),作为Java与数据库连接的技术。基本操作题(共18分)
本题定义了一个求两个数的最大值的方法max,并调用该方法计算67和23的最大值。
publicclassjaval{
publicstaticvoidmain(String[]args){
javaltemp=newjaval();
intres=max(67,23);
System.out.println("res="+res);
}
staticintmaX(){
intmaxNum;
if(a>b)
;
else
maxNum=b;
;
}
}第1处:inta,intb
第2处:maxNum=a
第3处:returnmaxNum
【解析】第1处定义max()方法中的两个整型形参;第2处将两者中较大的赋给maxNum;第3处返回最大值。
三、简单应用题(共24分)
本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。
importjava.awt.*;
importjava.awt.event.*;
publicclassjava2extendsjava.applet.Appletimple-
mentshemListener,ActionListener
{Choicechoice;
TextFieldtext;
TextAreaarea;
Buttonadd,del;
publicvoidinit().
{choice:newChoice();
text=newTextField(8);
area:newTextArea(6,15);
choice.add("音乐天地");
choice.add("武术天地");
choice.add("象棋乐园");
choice.add("交友聊天");
add=newButton("添加");
del=newButton("删除");
add.addActionListener(this);
del.addActionListener(this);
choice.addItemListener(this);
add(choice);
add(del);add(text);add(add);add(area);
}
publicvoiditemStateChanged(hemEvente)
{Stringname=;
intindex=choice.getSelectedIndex();
area.setText("\n"+index+":"+name);
}
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==add||e.getSource()==
text)
{Stringname=text.getText();
if(name.length()>0)
{choice.add(name);
choice.select(name);
area.append("\n添加"+name);
}
}
elseif(e.getSource()==del)
{choice.remove();
area.append("\n删除"+choice.getSelectedItem
());
}
}
}第1处:choice.getSelectedltem()
第2处:choice.getSelectedIndex()
【解析】第1处是获取当前选中项的数据;第2处清除选中项的索引号。综合应用题(共18分)
本题的功能是定义自已的组件类。窗口中排布着12
个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击
按钮时,后台将显示该按钮对应的字符。
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
classjava3extendsFrame{
Stringkeys="l23456789*0#";
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全新海南商品房买卖合同
- 小时工劳务合同书范本
- 车库买卖合同范本
- 家装地暖施工合同
- 污物桶相关行业投资规划报告范本
- 建筑工程总包合同范本
- 煤矿承包经营合同
- 贝壳买卖合同
- 幼儿园聘用合同书
- 浓缩干燥设备行业相关投资计划提议
- DB37-T 3153-2018燃气行业企业安全生产风险分级管控体系建设实施指南
- 工业园区VOCs的预警监测
- 苏教版小学二年级科学下册《全册》知识点归纳与整理
- 陕西省西安市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 金昌EX9000工具操作
- 2022年九年级中考前动员大会主持词
- 心理c证面试辅导及22个活动设计(202整理版)
- 滨州市历年中考数学试卷,2014-2021年滨州中考数学近八年真题汇总(含答案解析)
- 公共经济学ppt课件(完整版)
- GB∕T 3639-2021 冷拔或冷轧精密无缝钢管
- KUKA机器人焊接程序解析
评论
0/150
提交评论