范文一:上海计算机二级JAVA
上海教育考试院提供的二级JA V A 练习题网址
2010二级JA V A 模拟题
阅读下列问题描述和相应的程序,按下面给出的程序运行结果将程序补充完整并进行调试。
【问题描述】
下图为下面程序完整后的运行结果。
程序:
class Person{
String ______(1)______ ;
char sex;
Person(String name,char sex) {
this.name=name;
______(2)______ ;
}
String name() {
return name;
}
______(3)______ {
return sex;
}
public String toString() {
String s=new String(name+"(sex:"+sex+")");
return s;
}
}
class Student extends Person{
String id; //id:学号
Student(String name,char sex) {
super(name,sex);
}
Student(String name,char sex,String id) {
super(name,sex);
this.id=id;
}
public String toString() {
String s=new String(name+"(sex:"+sex);
if (id!=null)
______(4)______ ;
s+=")";
return s;
}
void setId(String id) {
this.id=id;
}
}
class testPerson{
public static void main(String[] args) {
Person frank=new Person("Frank",'M');
Student alice=new Student("Alice",'F');
System.out.println("frank: "+frank);
System.out.println("alice: "+alice);
Person tom=alice;
System.out.println("tom: "+ tom);
______(5)______;
System.out.println("tom: "+tom);
}
}
程序调试:
1.从" C:\素材" 中取出check1.java 文件,该程序有三个错误。该程序运行时应输出如下的结果:
请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句://*****。
2. 从" C:\素材" 中取出check2.java 文件,该程序的功能是:由键盘输入一个小于"100" 的数字字符串(例如"38" ),将它转换成整数,然后计算并输出从该整数到100之间所有整数的累加和。
请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句://*****。
3. 从" C:\素材" 中取出check3.java 文件,该程序在Item 类中有三个错。运行该程序应产生如下结果:
4 foods
14 televisions
10 foods
请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句: //*****。
编程题
1. 从"C:\素材" 中取出mn .java 文件,在该文件基础上进行补充,完成所需内容的编写。
该程序的功能是:打印数组中所有的字符串。若数组中有相同的字符串,则相同的字符串只打印一次。其关键程序段以方法实现。它是一个以字符串数组为参数,名为uniqueStrings()的方法。请编写该方法。
程序完成后将程序编辑及运行所需要的所有文件(包括源程序文件、字节码文件)存放到C:\KS目录下。 若执行正确的程序将输出如下结果:
one
two
three
2. 从"C:\素材" 中取出Division.java 文件,在该文件基础上进行补充,完成简单除法计算器(只做整数除法,结果也取整数) 的小应用程序编写。运行结果见图1,显示结果的文本域设置为不可编辑。当除数为0时,能抛出ArithmeticException 异常,并在捕获异常处对异常进行处理,异常处理要求在屏幕上显示" 除数不能为0, 请重新输入" ,结果见图2。
程序完成后将程序编辑及运行所需要的所有文件(包括源程序文件、字节码文件及html 文件)存放到C:\KS目录下。
图1
图2
【解析】该题的知识点有两部分:组件的设置,即界面的设计,以及事件的编程。
范文二:上海计算机二级c语言
C语言程序设计
(本试卷考试时间 120 分钟) 一、单选题 ( 本大题 10 道小题 ,每小题 1 分,共 10 分),从下面题目给出的A、B、C、
D四个可供选择的答案中选择一个正确答案。
1. 下列C语言的标识符中,合法的标识符为____________ 答案: C A. #star
B. 1234
C. _a100
D. 9circuit
2. 若已定义: int x;
则表达式 ((x=4*5,x*5),x+25) 的值是 ______ 。
答案: D
A. 20
B. 100
C. 125
D. 45
3. 若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,
则执行语句: scanf(“x=%d, y=%f”,&x,&y,); 时,正确的键盘输入是 ______ 。 答
案:
A. 55 55.5?
B. x=55, y=55.5?
C. 55?55.5?
D. x=55?y=55.5?
4. 若有说明语句:int x=10,y=20,z=30; 则执行语句:if(x>y) z=x; x=y; y=z; printf(“%d,%d,%d”,x,y,z); 后,输出是
____________ 答案:
A. 10,20,30
B. 20,30,10
C. 20,30,30
D. 20,30,20
5. 程序段:int num=0;
while(num<=2)>=2)>
printf(“%d ,”,num++);
的运行结果是_______________ 答案:
A. 0,1,
B. 1,2,
C. 0,1,2,
D. 1,2,3,
第 1 页 共 8 页
6. 若有说明:int a[3][4],s; ,则对数组a的元素引用错误的是____________ 答案: A. s=0; for(i=0;i<3;i++) for(j="">3;i++)><4;j++) s+="a[i][j];">4;j++)>
B. s=0; for(j=0;j<4;j++) for(i="">4;j++)><3;i++) s+="a[i][j];">3;i++)>
C. s=0; for(i=0;i<4;i++) for(j="">4;i++)><3;j++) s+="a[j][i];">3;j++)>
D. s=0; for(i=0;i<3;i++) for(j="">3;i++)><4;j++) s+="a[j][i];">4;j++)>
7. 若用数组名作为函数调用时的实参,则实际上传递给形参的是____________ 答案: A. 数组首地址
B. 数组的第一个元素的值
C. 数组中全部元素的值
D. 数组中的元素个数
8. 若有定义:int i,j,*pi=&i; 则与i==j等价的比较表达式是____________ 答案: A. i==*pi
B. *pi ==*&j
C. i==&j
D. i==**pi
9. 若有定义:struct person{
int id ;
char name[20];
} per,*s=&per;
则以下对结构体成员的引用中错误的是____________ 答案:
A. per.name
B. s->name[0]
C. (*per).name[8]
D. (*s).id
10. 若有以下语句:char x=3,y=6,z; z=y^x<2; 则z的二进制值是________________="" 答案:="">2;>
A. 00011011
B. 00001010
C. 00011100
D. 00001100
二、填空题 ( 本大题 7 道小题 ,每空 2 分,共 14 分)。
1. 设有说明语句:int a=13, b=6;
则a/b的十进制数值为________ 答案: 【2】
2. 设有说明语句:int x=3, y=2; 则计算表达式(x=5) || (y=6*x) 后变量y的值是_____________ 答案: 【2】
第 2 页 共 8 页
3. 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2后,t
的值是_____________ 答案: 【1】
4. 如果函数不要求带回值,可用____________来定义函数返回值为空. 答案: 【void】
5. 下列程序的输出结果是________________ f(int a[])
{ int i=0;
while (a[i]<=10)>=10)>
{ printf(“%d ”, a[i]);
i++;
}
}
main()
{ int a[]={8,4,10,11,9,20};
f(a+1);
}
答案: 【4 10】
6. 下列程序的输出结果是______________
long fib(int g)
{ switch(g){
case 0: return(0);
case 1:
case 2: return(2);
}
return ( fib(g-1) + fib(g-2) );
}
main()
{ long k;
k = fib(4);
printf("k=%ld\n", k); }
答案: 【k=6】
7. 假定建立了以下链表结构:struct node{
int id ;
struct node *next;
} *head,*p; 如下图所示:指针p指向一个新结点,将新结点插入到链表成为头结点的两条C语言语句是【 】
第 3 页 共 8 页
head 7 2 9
p 9
答案: 【 p->next=head; head=p;】
三、程序填空题 ( 本大题 3 道小题 ,每空 3 分,共 30 分)。
21. 有人说,满足公式 p=n+n+41 (n是正整数)的p一定是素数,下列程序验证这个说法
是错误的。
#include int fun(int p) { int n; for(n=2;n*n<=p;n++)>=p;n++)> if(p%n==0) ______(1)________ ; return 1; } main() { int n=1,p; do { p=n*n+n+41; if(!fun(p)) ______(2)________ ; printf(“%d是素数 \n”,p); }while(______(3)______ ); printf(“%d=%d*%d+%d+41不是素数 \n”,p,n,n,n); } 1): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 2): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 3): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 4): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 5): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 2. 下面程序的功能是:整型数组a中含N个元素,现将元素位置进行前后交换,使第0 个元素与第N-1个元素交换,第1个元素与第N-2个元素交换,以此类推,最后输出交换后 的数组元素。 #include #define N 8 int a[N]={3,8,5,15,9,7,20,6}; main() { 第 4 页 共 8 页 int i,j,t; for(i=0;i printf("%4d",*(a+i)); /*输出交换前的元素*/ printf("\n"); for(i=0;i { j=________(1)_________; /*需要交换的元素下标*/ t=*(a+i); _________(2)__________; *(a+j)=t; } for(j=0;j printf("%4d",_______(3)______); /*输出交换后的元素*/ printf("\n"); } 1): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 2): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 3): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 4): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 5): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 3. 将两个文本文件中字符'$'之前的内容合并到一个文件中去,其中函数void sub(FILE*all, FILE*f1 ,FILE *f2 )的功能是将文件指针f1,f2所指向的文件中的内容写 到文件指针all所指向的文件中; main函数完成如下功能:先打开目标文件,再依次打开 源文件,调用sub函数完成文件内容的拷贝。 例如三个源文件 f1.txt ,f2.txt, 每个文件的内容分别如下 文件名 内容 f1 aaa$aa f2 bbb$bb 则产生一个新的目标文件fall.txt,包括f1,f2三个文件字符'$'之前的内容,fall的内容 为aaabbb。 #include #include main(){ FILE *f1, *f2,*fall; void sub(______(1)________ ); if ((fall=fopen(______(2)________ ))==NULL) { printf("Cannot open file!\n"); exit(1); } 第 5 页 共 8 页 if ((f1=fopen("f1.txt","r"))==NULL || (f2=fopen("f2.txt","r"))==NULL) { printf("Cannot open file!\n"); exit(1); } else { sub(______(3)________ ); ______(4)________ ; } fclose (f1); fclose(f2); } void sub(FILE *all, FILE *f1, FILE *f2) { char c; while((c=fgetc(f1))!='$') fputc( c,all); while((c=fgetc(f2))!='$') fputc( c,all); } 1): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 2): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 3): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 4): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 5): 【答案1】【答案2】【答案3】【答案4】【答案5】【答案6】 四、操作题 三(程序调试题 (2题,4+6=10分) 1. 程序调试题1(E_3_1.c) 调试要求:下列程序不能得到正确的结果~请按题中的功能要求~调试并修改该程序,在所修改语句后加/*modified*/字样的注释,~使其运行能得到正确的结果。将结果,包括E_3_1.c文件和E_3_1.exe文件,保存到目录C:\KS\中。 功能说明:程序功能是输入正整数n(1<><=9),输出n行杨辉三角形。 如:输入n="5,">=9),输出n行杨辉三角形。> 则输出如下图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 原程序(见C:\KS\E_3_1.c】 第 6 页 共 8 页 #include main( ) { static int a[9][9]; int i,j,k,n; scanf(" %d",&n); for(i=0,i { for(k=0;k<18-2*i;k++)>18-2*i;k++)> printf(" "); for(j=0;j<=i;j++)>=i;j++)> { if(j==0||j==i) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i][j-1]; printf(" "); printf("%-3d",a[i][j]); } printf("\t"); } } 2. 程序调试题2(E_3_2.C) 调试要求:下列程序有3处错误~请按题中的功能要求~在不改变程序结构,不增加、删除 语句~不调整语句顺序,的情况下调试并修改该程序(在所修改语句后加/*modified*/字样的 注释)~使其运行能得到正确的结果。将结果,包括E_3_2.c文件和E_3_2.exe文件,保存到 C:\KS\目录中。 功能说明:程序功能是输入一个字符串(少于80个字符,以回车结束),把字符串中的数字字符 (0-9)转换为整数,去掉其他字符,要求定义并调用函数long stol (char*s),s是原字符串。假设不考 虑整数数据范围超限的情况。 如输入: 3a56bc77rfasefg fg88fg? 则输出: 3567788 原程序(见C:\KS\E_3_2.c)】 #include long stol( char *s) {long number=0; while(*s!='\0') { if(*s>=0 && *s<=9)>=9)> number=number*10+*s-'0' ; s++; } return number; } 第 7 页 共 8 页 main() { char s[80]; gets(s[80]); printf(“number=%d”,stol(s)); } ,18+18=36分) 五( 编程题(2题 1(编程题1(E_5_1.c) 编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包括E_5_1.c文件和E_5_1.exe文件)保存到目录C:\KS\中。 功能说明:函数fun求sum=d+dd+ddd+??+dd...d(n个d),其中d为1-9的数字。从主函数中输入d和n,调用fun函数,并以sum=XXXXXXX的形式输出结果。 如输入d=3,n=4 则输出:sum=3702 2(编程题2(E_5_2.c) 编程要求:请按题中的功能要求,编写程序并能得到正确结果。将结果(包括E_5_2.c文件和E_5_2.exe文件)保存到目录C:\KS\中。 功能说明:某中学要对新入学的10名学生根据考试成绩分到两个班(class1,class2)中,分班的方法是成绩第1名在class1班,第2名在class2班,第3名在class1班,第4名在class2班,依次类推,?。 请编写程序,输入这10个学生的编号和成绩,输出如下格式的分班情况: Class1班:编号 成绩; 编号 成绩; ? Class2班:编号 成绩; 编号 成绩; ? 第 8 页 共 8 页 2010年上海市高等学校计算机等级考试试卷 二级 Visual Basic程序设计 (考试时间120分钟----A卷) 一、单选题(共15分,每题1分) 1. 是合法的变量名。 【A】 A. X_yz B. 123abc 函数不可能的返回值是 。 A.1 B.0 C.0.0001 D.0.9999 C.Integer 【A】 3. 要将一个值传递给子过程A的m参数,并通过n参数返回一个结果,子过程定义中正确的是 。 【B】 A. Sub A(ByVal m!, ByVal n!) B. Sub A(ByVal m!, ByRef n!) C. Sub A(ByVal m!, ByRef (n+1)!) D. Sub A(ByVal m+1, ByVal n+2) 4.能在窗体Form1的标题栏中显示“VisualBasic窗体”的语句是____________。【C】 A. Form1.Name="VisualBasic窗体" B.Form1. Title="VisualBasic窗体" C. Form1.Caption="VisualBasic窗体" D.Form1.Text="VisualBasic窗体" 5.在用通用对话框控件建立打开文件对话框时,在文件列表框中只允许显示jpg图像类型的文件,则Filter属性的正确设置是 。 A.Picture(.jpg)||*.jpg B.Picture(.jpg)(*.jpg) C.图片文件|(.jpg) D.图片(.jpg)|*.jpg 【D】 6. 关于多重窗体程序的叙述中,错误的是____________。 【C】 A.用Hide方法隐藏窗体,用Show方法显示窗体 B. 可以根据需要指定启动窗体 C. 若各窗体都建立了一个文本框控件(TextBox),它们的Name不能相同 D. 若各窗体都有菜单,则各菜单是彼此独立的 7. 按照结构化程序设计的要求, 【C】 A.If 语句 B.For 语句 C.GoTo语句 D.Select Case语句 8.同一个窗体中,各个对象的____________属性值是不同的,它用于唯一识别对象。 A. Location B. Name 【B】 C.Size Text D. Select Case语句 9.有一个名为Menu1菜单项,为了在运行时使该菜单项失效(变灰),应使用的语句为____________。 A. Menu1.Enabled=False B. Menu1.Enabled=True C. Menu1.Visible=True D. Menu1.Visible=False 【A】 10.要暂时关闭定时器,应把定时器的_________属性设置为False。 A. Visible B. Timer C. Enabled D. Interval 【C】 11.在VB中, 【A】 属于方法的是 A.SetFocus B.LostFocus C.KeyPress D.SelectedText 12.使用Dim A(100) As Single 语句声明了数组A,A数组的下标取值范围是_________。【B】 A. 0,99 B. 0,100 C. 1,99 D. 1,100 13.列表框List1中已有5个列表项,要删除列表框List1最后一项, __________语句是正确的。 【A】 A.List1.RemoveItem List1.ListCount - 1 B.List1.RemoveItem 5 C.List1. Remove List1.ListCount - 1 D.List1.Remove 5 14.要向D盘根目录下的名为data.txt的顺序文件中添加 【B】 A. Open "data.txt" For Append As #1 B. Open "D:\data.txt" For Append As #1 C. Open "data.txt" For Output As #1 D. Open "D:\data.txt" For Output As #1 15.要使文本框输入的字符均显示为*,则设置___________。 【D】 A.Visible属性为* B.Name属性为* C.Text属性为* D.PassWordChar属性为* 二、程序调试题(共20分, 每错2.5分,第1题有2处错,第2题3处错,第3题3处错) 启动工程文件C:\ks\cxts1.vbp,程序存在8处错误,请调试改正,并按原文件名和位置保存。正确结果见样例cxts1.exe。 改错方法:不能修改或重新定义变量,不允许增加或删除语句,但可以修改语句,所修改的语句必须在句尾加上注释标记 ? ***********。 调试改错题1, 程序中有2个错误。 以下程序的功能是在文本框中输入百分制成绩,单击按钮后,在标签上显示成 "优秀";60?成绩绩等第,分优秀、合格和不合格,规定:成绩?80为<80为"合格";成绩<60为"不合格"。 Private Sub Command1_Click() Dim d%, s$ d = Val(Text1.Text)\10 Select Case d Case d>=8 s = "优秀" Case 6 To 7 s = "合格" Case Else s = "不合格" End Select Label1.Text = "成绩等第为:" + s End Sub 正确答案:Case Is >= 8 或 8 To 10 或8,9,10 Label1.Caption 或 Label1 调试改错题2, 程序中有3个错误。 单击“调试改错题2”按钮,在Picture1显示有规律数字字符和字母字符图,见 样例。 Private Sub Command2_Click() Dim ch$,i%,j% Picture1.Cls For i = 1 To 5 Ch = Trim(i) For j = 1 To 5 ? 输出数字字符 Picture1.Print Ch; Next j Picture1.Print Space(3); For j = i To 5 ? 输出字母字符 Picture1.Print Chr(65); Next j Picture1.Print Next j End Sub 正确答案:For j = 1 To i Picture1.Print Chr(i+64); Next i 调试改错题3, 程序中有3个错误。 单击“调试改错题3”按钮,自动产生两个 5,999 之间的随机正整数a,b,在Text2显示较小的数a,Text3显示较大的数b。计算a到b之间的偶数和,结果显示在Label3。 Private Sub Command2_Click() Dim a%, b%, c%, i% a = Int(Rnd * 995 + 5) b = Int(Rnd * 995 + 5) If a > b Then t = b: a = b: b = t End If Text1 = a Text2 = b s = 1 For i = a To b If Mod(i,2)=0 Then s = s + i Next i Label3 = "Sum=" & s End Sub 正确答案:t=a S=0 i mod 2 = 0 三、程序填空题(共30分,每空2 .5分) 1(按公式,求累加和s不超过1000的最大项数n。 要求每行显示每个n的累加和如图所示,并将全部结果保存在c:\data.txt中。 Private Sub Form_Click() Dim n%, s$ n = 1 Print " N", " S" ) s = s + n * n Print n, s n=n+1 Loop Print "累加和不超过1000的最大项数n="; n - 2 ? 2222 Open "c:\jg.txt" For As #1 Print #1, "n="; n - 2 Close #1 End Sub 答案:(1)0 (2)s < 1000 (3)Output 2. 以下程序段的功能是:在一个字符串变量str1中查找子串变量str2中出现的个数,并显示是否找到及查找到的结果。样例为查找子串"at"出现的个数为2 个。 Private Sub Form_Click() Dim str1$, str2$, cd1%, cd2%, n%, i% str1 = Text1.Text str2 = Text2.Text cd1 = Len(str1) cd2 = Len(str2) i = 1 n = 0 Do While i <= ____(1)_____ If Mid(str1, i, _____(2)_____) = str2 Then n = n + 1 End If _____(3)_____ Loop If ____(4)_____ Then Label3 = "找到了" & n & "个" Else Label3 = "没有找到~" End If End Sub 答案 (1)cd1 cd1-cd2+1 (2)2 (3)i=i+1 (4)n>0 3. 以下程序段的子过程RightShift的功能是:将一维字符数组s中的元素循环右移一位并输出变动后的结果。 Command1_Click()事件过程通过键盘输入右移位数,调用子过程RightShift完成对给定的字符数组元素循环右移,样例为右移3次的结果。 Private Sub Command1_Click() Dim i%, m%, a() a = Array("A", "B", "C", "D", "E", "F", "G", "H") Print "原始顺序为: "; For i = 0 To UBound(a) Print a(i) & " "; Next i Print ______(1)________= InputBox("请输入右移位数:") For i = 1 To m Print "第" & i & "次右移后:"; Call________(2)__________ Next i End Sub Sub RightShift(ByRef s()) Dim Last$, i%, n% n =________(3)__________ Last = s(n) For i = n To 1 Step -1 ‘ 逐位右移 s(i) = ________(4)__________ Next i s(0) = ________(5)__________ For i = 0 To n ‘ 显示右移后的结果 Print s(i) & " "; Next i Print End Sub 答案:(1)m (2)RightShift(a) (4)s(i - 1) (5)Last 四、编程题(35分) (3)UBound(s) 1 在Form2上,放置“绘图”和“返回”2个命令按钮。 2(单击“产生”菜单项,在列表框List1中随机生成10个3位正整数。 单击“计算”菜单项,在列表框List2中显示List1各数据项每位数之和。 3 (单击“绘图”菜单项时,显示窗体2,并隐藏窗体1;单击"结束"菜单项时,结束程序的运行。 4(在窗体2上单击“绘图”命令按钮,定义窗体坐标系(-1, 60)-(20, -60),绘制坐标轴线;按公式y = (3 * Sin(x) + Cos(5 * x)) * 20绘制直线(0? x ?20)。 单击“返回”命令按钮则关闭窗体2,显示窗体1。 5(在C:\KS 目录下将工程保存为bct1.vbp、Form1窗体为bct11.frm、Form 2窗体为bct12.frm。 2011 上海计算机 VB 二级(A 卷) 一、 单选题 1. 当运行程序时,系统自动执行启动窗体的 __________事件过程。 A . Load B . Click C . Unload D . Gotfocus 2. 已知列表框(List1)中有 10个数据项,对列表框操作不正确的语句是 ___________。 A . List1.Clear B . List1.RemoveItem “ 计算机 ” C . List1.RemoveItem 4 D . List1.Additem “ 打印机 ” 3. 若要使标签控件显示时不覆盖窗体的背景图案,要对 ___________ 属性进行 设置。 A . BackColor B . BorderStyle C . ForeColor D . B ackStyle 4. 下列函数中, _________函数返回值是数值型的。 A . Chr() B . Mid() C . Val() D . Replace() 5. 下面的过程定义语句中 _________是不合法的。 A . Sub Sub1(ByVal n%) As Integer B . Sub Sub1(ByVal n%) C . Function Sub1(ByVal n%) As Integer D . Function Sub1%(ByVal n%) 6. 定义结构类型并声明变量如下: Type Student Dim No As Integer Dim Name As String End Type Dim s As Student 下列语句正确的是 __________。 A . s={100001,” 张三 ” } B . Name=” 张三 ” C . Student.Name=” 张三 ” D . s .Name=” 张三 ” 7. VB 程序设计中,响应对象的外部动作称为 ______ , 而对象可以执行的动作 或对象本身的行为则称为 ______。 A . 方法,事件 B . 事件,方法 C . 属性,方法 D . 过程,事件 8. 在过程 A 中定义了静态变量 y 。 从调用过程 A 第一条语句开始, 在退出过程 A 前, y 的值为 5。当下次再进入过程 A 时, y 的值为 _____。 A . 5 B . 0 C . 不定值 D . 出错 9. 用户单击水平滚动条 HScrollBar1两端的箭头(“ >” 或 “ <” )按钮,="" value="" 属性="" 增加或减少的值为="" 2,可通过语句:="" hscrollbar1._________="">”> A . LargeChange B . SmallChange C . Min D . Max 10. 要打开 CommonDialog1 对话框选取字体属性来改变 Text1的字体大小, 下面 _________语句组是正确的。 A . CommonDialog1.ShowFont Text1.FontSize=CommonDialog1.FontSize B . CommonDialog1.ShowFont Text1.Font=CommonDialog1.Font C . CommonDialog1.Show Text1.FontSize=CommonDialog1.FontSize D . CommonDialog1.Show Text1.Font=CommonDialog1.Font 11. 在多分支结构的 Case 子句中, 判断字符变量 C 的值是 “ W ” 到 “ Y ” 之间的字母, 以下写法中正确的是 ________。 A . Case C=” Y ” Or C=” X ” Or C=” W ” B . Case C>=” W ” And C<=” y="">=”> C . Case W,X,Y D . C ase “ W ” To “ Y ” 12. 下面 ________不属于 VB 的变量作用域。 A . 窗体 /模块级变量 B . 外部变量 C . 局部变量 D . 全局变量 13. 若要在一窗体内安排两组单选按钮,可用 ________控件加以分隔。 A . 文本框 B . 标签 C . 框架 D . 菜单 14. 执行如下循环语句: For i=1 To 10 Step 0 ... Next 结果为 ________。 A . 死循环 B . 循环体执行一次 C . 语法错误 D . 循环体一次也不执行 15. 若用 Dim a (10) As Integer 声明了数组 a, 以下语句中错误的是 ________。 A . a(10)=10 B . a(10)=Lbound(a) C . a(10)=a(1)+a(2) D . a (10)=a(11)+10 二、 程序填空: 1. 文本文件 Private Sub Form_Click() Dim score(100) As Integer, n As Integer, m As Integer Open n = 0 '总人数 m = 0 '成绩合格人数 Text1.Text = Do While Not (2) n = n + 1 Input #1, score(n) Text1.Text = Text1.Text & score(n) & vbCrLf If score(n) (3) Then m = m + 1 '合格人数计数 End If Loop Label1.Caption = End Sub 1) Input 2) EOF(1) 3) >=60 2. 产生 10个不重复的 2位随机整数。算法思想是先产生一个随机数 tmp ,然后 在已经存放着不重复随机数的数组 a 中,查找 tmp 是否已经存在。如果已经 存在,则丢弃,再重新产生;反之,就将 tmp 存放入数组 a 中。 Private Sub Form_Click() Dim tmp As Integer, i As Integer, j As Integer Dim a(10) As Integer Dim isExist As Boolean ' 重复随机数标志 Randomize Label1.Caption = i = 0 Do While (i < (1)=""> isExist = False tmp = Int(Rnd() * (2) ) For j = 1 To i '找重复的随机数 If a(j) = tmp Then isExist = (3) Exit For End If Next j If Not isExist Then '找到了一个不重复的随机数 i = i + 1 a(i) = (4) Label1.Caption = Label1.Caption + Str(tmp) + End If Loop End Sub 1) 10 2) 90+10 3) True 4) tmp 3. 求 1000~9999之间的零巧数。 零巧数:一个百位数字为 0的四位数,如果去掉这个零得到三位数的 9倍等 于原数。 例如 2025的百位数是 0,去掉这个 0,得到 225。因为 225 * 9 =2025,所以 2025是零巧数。 函数 Shu 功能是判断是否是零巧数。其返回值:如果是零巧数,则返回零巧 数的三位;否则返回 -1。 列表框 1显示零巧数,列表框 2显示对应的三位数。 Private Sub Command1_Click() Dim i%, n% For i = 1000 To 9999 n = (1) If n > 0 Then '若是零巧数,则添加 List1.AddItem i List2. (2) End If Next i End Sub Function Shu(n%) As Integer Dim k%, m% Shu = -1 k = Mid(n, 2, 1) '获取百位数 If (3) Then m = Mid(n, 1, 1) & (4) If m * 9 = n Then Shu = (5) End If End Function 1) Shu(i) 2) AddItem n 3) K=0 4) Mid(n,3,2) 5) m 三、 程序调试题 (共 20分,每错 2.5分,第 1题有 2处错,第 2题有 3处 错,第 3题有 3处错 ) 启动工程文件 改错方法:不能修改或重新定义变量,不允许增加或删除语句,但可以修改 语句 , 所修改的语句必须在句尾加上注释标记 ' ***********。 调试改错题 1, 程序中有 2个错误。 程序的功能是单击 Private Sub Command1_Click() Dim year% Dim t1 As Boolean, t2 As Boolean, t3 As Boolean '3个逻 辑变量用于存放 3个条件的结果 year = Int(Rnd() * 301 + 2000) '此句正确 year = Text1.Text Text1.Text= Int(Rnd() * 301 + 2000) ' *********** t1 = year Mod 4 = 0 t2 = year Mod 100 <> 0 t3 = year Mod 400 = 0 If (t1 And t2) And t3 Then If (t1 And t2) Or t3 Then *********** Label2.Caption = year & Else Label2.Caption = year & End If End Sub 调试改错题 2, 程序中有 3个错误。 单击 个错误,请调试改正。 Private Sub Command2_Click() Timer1.Enabled = False Timer1.Enabled = True *********** End Sub Private Sub Timer1_Timer() Static p% 'p为记录字符位置的变量 Dim s$ s = Label3.Caption = Mid(s, p) & Label3.Caption = Left(s, p) & Timer1.Enabled = True Timer1.Enabled = False ************ Label3.Caption = s Else p = p + 1 End If End Sub 调试改错题 3, 程序中有 3个错误。 计算多项式 e = 1+1/1! + 1/2! +1/3! +… +1/6!的值。 Private Sub Command3_Click() Dim i As Integer Dim f As Long Dim ee As Double ee = 1 f = 0 f = 1 ************* For i = 1 To 6 f = f * i ee = ee + f ee = ee + 1/f ************* Next Label4.Caption = Label4.Caption = 四、 编程题(35分) 参照样例,编写一个完整的程序,要求如下: 1.在 Form1窗体上放置文本框、列表框、标签和命令按钮,并建立菜单,界 面如样例所示。 在 Form2窗体上放置 2.在 Form1窗体上单击 计算公式:起步费:13元(3公里); 3到 10公里:2.4元 /公里; 10公里 以后:3.6元 /公里。 3.单击 4. 在 Form2窗体上单击 绘制坐标轴;按分段函数: ?? ? ? ? ≥ - + - = ) 0 ( 1 ) 3 sin( ) 0 ( ) 2 cos( 2 2x x x x x x y ,步长 0.001,绘制 曲线。 x<0时曲线为绿色, x="" ≥="">0时曲线为绿色,> 单击 5. 在 C:\KS 目录下将工程保存为 bcta.vbp 、 Form1窗体为 bcta1.frm 、 Form2窗体为 bcta2.frm 。 ‘ form1 Dim s As Single Private Sub Command1_Click() Dim n, y n = Val(Text1.Text) Select Case n Case Is <=>=> MsgBox ( Case Is <> y = 13 Case Is <> y = 13 + (n - 3) * 2.4 Case Else y = 13 + 7 * 2.4 + (n - 10) * 3.6 End Select s = s + y List1.AddItem y Text1 = End Sub Private Sub menu11_Click() n = List1.ListCount If n > 0 Then Label4 = Label4 = End If End Sub Private Sub menu12_Click() End End Sub Private Sub menu2_Click() Form1.Hide Form2.Show End Sub ‘ form2 Private Sub Command1_Click() Scale (-2, 2)-(2, -2) Line (-2, 0)-(2, 0) Line (0, 2)-(0, -2) For x = -2 To 2 Step 0.001 If x < 0=""> y = x * 0.5 - cos(2 * x) PSet (x, y), vbGreen Else y = sin(3 * x) + x * x - 1 PSet (x, y), vbBlue End If ' If Abs(y) < 0.001="" then="" '="" circle="" (x,="" 0),="" 0.1,="" vbred="" '="" end=""> Next x End Sub Private Sub Command2_Click() Unload Me Form1.Show End Sub 注意: 1. 所有例子的图示都以Eclipse 运行环境为例,在此仅作参考。 2. 编程所需的常用方法参考见最后。 (一)程序调试题(本大题3小题,共10个错误,每改正一个3分,共30分) 1.从" C:\素材" 中取出Test.java 文件,该程序有2个错误。程序的功能是求解1!+ 2!+ … + 10!的值。 请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句://*****。 Test.java: class Test{ publicstaticvoid main(String args[]){ int fact,sum=0; for (int i==1,i<> fact=1; for (int j=1;j<> fact=j; sum+=fact; } System. out .println("1到10的阶乘之和是:"+sum); } } 2. 从" C:\素材" 中取出ForWea.java 文件,该文件中的forecastTemperature 方法有3个错,该方法实现一个天气温度预测模拟器的功能,它能模拟预报第二天温度。第二天温度值的预测是通过给定的当天温度值随机地加或减0~5之间的随机数来获得的。下面是运行正确的程序所产生的输出结果,此处例子是假设当天温度为20所得出的两个结果: 请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句://*****。 ForWea.java: public classForWea{ public static void main(String args[]){ System. out .println(forecastTemperature(20)); System. out .println(forecastTemperature(20)); } privateint forecastTemperature(int tempToday){ int tempTomorrow=tempToday; int number =(int )(Math.random()*8); if (Math.random()<> number=-number; } tempTomorrow=tempTomorrow+number; return tempTomorrow; } } 3. 从" C:\素材" 中取出Car.java 文件,Car 类中的三个方法(除main 方法外)各有1个错,当运行正确程序时,其输出如下: 请按题中的要求调试修改该程序,并将结果(包括源文件、字节码文件)保存到C:\KS目录中。请务必在所修改的语句后加上注释语句: //*****。 Car.java: publicclass Car{ } private String make ; privateint speed ; public Car(String newMake,int initSpeed){ newMake = make ; speed = initSpeed; } publicvoid accelerate( howMuch){ //对汽车对象按给定参数加速 speed += howMuch; } publicint getSpeed(){ //获取汽车对象的速度 return ; } publicstaticvoid main(String[] args){ } Car a, b; a = new Car(" 奔驰" ,80); b = new Car(" 长城" ,60);; a.accelerate(100); b.accelerate(75); System. out .println(a.make +": "+a.getSpeed()); System. out .println(b.make +": "+b.getSpeed()); (二)编程题(本题2小题,第1题15分,第2题20分,共35分) 1. 从" C:\素材" 中取出Student.java 文件,该程序通过创建对象,调用相关方法,完成给定要求的输出。程序正确运行的结果如下图所示。 具体要求: (1) 根据输出结果,完成main 方法; (2) 程序中必须调用Student 类实例方法至少一次; (3) 不能改变已给定的程序语句。 程序完成后将程序编译及运行所需要的所有文件(包括源程序文件、字节码文件)存放到C:\KS目录下。 Student.java: publicclass Student { private String name ; privateint testScore ; public Student(String initName){ } publicvoid setTestScore(int score){ } publicint getTestScore() { } publicstaticvoid main(String[] args){ return testScore ; testScore += score; name = initName; testScore = 0; //在此处完成对应方法 } System. out .println(s1.name +": "+sc+" 分" ); } 2. 从" C:\素材" 中取出TestPal.jav a 文件,编写判断字符串是否是回文的方法palindrome 。所谓" 回文" 是指正向读和反向读都一样的一个字符串。如:字符串" rotor " 、" 321123" 就是回文。TestPal.java 已给出程序框架,要求完成指定的方法体。正确程序运行后的界面如下图所示: 程序完成后将程序编译及运行所需要的所有文件(包括源程序文件、字节码文件)存放到C:\KS目录下。 TestPal.java: publicclass TestPal { staticboolean palindrome (String stt){ //在此处完成对应方法 } publicstaticvoid main(String[] args){ String str1="rotor"; if (palindrome(str1)) System. ou t.println(str1+" 是回文字符串" ); else System. ou t.println(str1+" 不是回文字符串" ); String str2="abcdefghijk" ; if (palindrome(str2)) System. out .println(str2+" 是回文字符串" ); else } System. out .println(str2+" 不是回文字符串" ); } 编程常用方法参考: 1) int length() 返回当前字符串中的字符个数。 2) intcompareTo(String str)按字典顺序比较两个字符串大小。 3) boolean equals(String str) 区分大小写比较两个字符串的内容是否相等。 4) booleanequalsIgnoreCase(String str) 不区分大小写比较两个字符串的内容是否相等。 5) char charAt(int index) 返回当前字符串中index 处位置的字符。 6) String toLowerCase() 将当前字符串中所有字符转换为小写形式。 7) String toUpperCase() 将当前字符串中所有字符转换为大写形式。 8) String substring(intBIndex, intEIndex) 截取当前字符串中从BIndex 开始且长度为 EIndex-BIndex 的子串。 9) booleanstartsWith(String str) 测试当前字符串是否以str 字符串为开头。 10) char replace(char c1, char c2) 当前字符串中的c1字符转换为c2字符。 11) String trim() 返回去掉了当前字符串前后空格的字符串。 12) intindexOf( String str, int i) 在当前的字符串中从i 处查找str 子串,若找到,返回 子串第一次出现的位置,否则返回-1。 转载请注明出处范文大全网 » 上海计算机二级JAVA范文三:上海计算机二级VB试卷
范文四:2011 上海计算机VB二级(A卷)
范文五:上海市计算机二级