[说明]下面是一个Appkt程序,其功能是从3~100之间(包括3和100)每隔0.5秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。程序运行结果如图4所示。import java. awt. *i

题目

[说明]

下面是一个Appkt程序,其功能是从3~100之间(包括3和100)每隔0.5秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。

程序运行结果如图4所示。

import java. awt. *

import java. applet. Applet

< applet code = ex2_7, class width = 800 height = 400 >

</applet >

public class ex2_7 extends Applet {

public Color color2_7 = Color. black;

private iht n2_7 = 3;

public myPrime thPrime2_7;

public void init( ) {

thPrime2_7 = new myPrime(this);

thPrime2_7, start( );

}

public void paint(Graphics g) {

g, setColor( color2_7 );

g. drawString( (1),50,50);

}

public int getlnt( ) {

return n2_7;

}

public void setlnt (int i) {

n2_7 = i;

}

}

class myPrime extends Thread I

ex2_7 obj2_7;

myPrime (ex2_7 o) {

this. obj2_7 = o;

}

public boolean isPrime(int n){

boolean bPrime = true;

iht i =2;

if((2))

return false;

while( i < n - ]&&bPrime) {

if((3))

bPrime = false;

i++;

}

return bPrime;

}

public void run( ) {

int i;

for (i = 3; (4);i++) {

if (isPrime(i) )

obj2 _7, color2_7 = Color, gray;

else

obj2_7, color2_7 = Color. green;

(5);

obj2_7, repaint( );

try {

sleep(S00);

} catch (InterruptedException ie) {

}

}

} }

ex2_7, html

< HTML >

< HEAD >

<TITLE > ex2_7 </TITLE >

</HEAD >

< BODY >

<appletcode =" ex2_?, class" width =800 height =400 >

</applet >

</BODY >

</HTML >

参考答案和解析
正确答案:(1)String. valueOf(n2_7)(2)n3‖n>100(3)(n%i) ==0 (4)i101或者i=100(5)obj2_7. setInt(i)
(1)String. valueOf(n2_7)(2)n3‖n>100(3)(n%i) ==0 (4)i101或者i=100(5)obj2_7. setInt(i) 解析:本题主要考查线程的概念和使用,Applet的执行过程和窗口,for循环语句以及字符串和int型的数据转换和面向对象编程的基本思想。解题关键是熟练地将Applet的执行和线程的基本思想结合完成一定的综合性的应用;熟练掌握线程的建立、运行以及线程类与封装类之间酌信息传递方式,即通过对象调用封装的方法来进行,如语句 obi2_7. repaint()。本题中,不可以直接填人n2_7,会导致参数类型不符合的错误,应该用String类的vMueOf()方法对int型数据进行转换得到String类型数据;注意题目要求,需要包括3和100,因此循环变量的上界应该是i101或者i=100;由于n2_7是类ex2_7的私有成员,因此不可以直接用对象obi2_7来调用这个成员变量,需要通过类ex2_7的方法setInt()来实现对私有成员变量的修改。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

编写程序,在Arduino上实现以下功能:Arduino通过串口接收一个数字,数字范围为00.00 ~ 99.99,通过一个2位数码管显示该数字的前2个有效位(例:01.23显示为1.2,45.67显示为46),要求具备四舍五入功能。


模拟输入引脚可以作为数字输入引脚,反之不行。;不是所有的模拟量输出均可用PWM引脚功能实现;可以简单将多个输入设备接在同一个引脚上,以减少引脚的占用

第2题:

用户输入一个1-100之间的数字。打印1-1000中,所有可以被这个数字整除的数字,并打印序号。序号从1开始,依次加1. 例如,用户输入20,的运行情况: 请输入一个1-100之间的整数:20 1 20 2 40 3 60 4 80 5 100 ...... 46 920 47 940 48 960 49 980 50 1000 要求: 1. 请写出完整的程序(2分) 2. 写出程序运行结果(1分) 3. 程序应能够正常运行,并按要求输出结果(2分)


1*+1*+1*+1*+1*=205

第3题:

阅读以下说明和C语言函数,将解答填入对应栏内。

【说明】

下面待修改的C程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入“14251382”,则输出的整数为“4532”。

下面给出的C程序代码中有五个错误,请指出所有的错误。

【C程序代码】

01 include <stdio.h>

02

03 int main()

04 {

05 long n, num;

06 int i;

07

08 do {

09 printf("请输入一个正整数:");

10 scanf("%ld", n);

11 }while(n <= 0);

12 k = 1;

13 for (i = 1; n >= 0; i++) {

14 if (i % 2 = 1) {

15 num= num+ (n % 10) * k;

16 k = k * 10;

17 }

18 n = n / 10;

19 }

20 printf("新数据为: %d \n",num);

21 return 0;

22 }


正确答案:错误1:变量k没有声明(或定义)。 错误2:变量num没有初始化或者num应初始化为0。 错误3:第10行scanf函数参数错或者“scanf("%1d"n);”中的n应该为“&n”;或者n之前应加取地址符号。 错误4:第13行循环条件错或改为“n>0”。 错误5:第14行if语句条件错将“=”改为“==”;或者将“1%2=1”改为“i% 2==1 ”
错误1:变量k没有声明(或定义)。 错误2:变量num没有初始化,或者num应初始化为0。 错误3:第10行scanf函数参数错,或者“scanf("%1d",n);”中的n应该为“&n”;或者n之前应加取地址符号。 错误4:第13行循环条件错,或改为“n>0”。 错误5:第14行if语句条件错,将“=”改为“==”;或者将“1%2=1”改为“i% 2==1 ” 解析:本题考查程序检错和排错能力。
程序错误一般分成语法错误和语义错误两种类型,其中语法错误是形式上的错误,语义错误是含义上的错误,编译程序能够发现程序中的所有语法错误。
语义错误又可分为静态语义错误和动态语义错误,静态语义错误编译时检查,而动态语义错误在程序运行时表现。
C程序中,常见的错误有:使用的变量没有定义、变量没有赋值初就直接使用、输入输出的数据类型与所用格式说明符不一致、超出数据范围、输入时数据的组织方式与要求不符、误把“=”作为关系运算符“等于”、语句的分号缺少或放置错误、缺少“{}”、符号引用错误,“(、)、[、]”括号不配对、引用数组元素超界等。
在本题的程序中,使用变量num的语句为“num=num+(n%10)*k;”。由于变量 num没有赋初值,该语句运行的结果导致num的值是不确定的。
在本题给出的程序中,出现了如下错误。
(1)使用的变量k没有定义(语法错误,编译程序报告:k是未定义的标识符)。
(2)变量num没有赋初始值就直接使用(动态语义错误),应将其初始值设为0。由于num是局部变量,使用变量num的语句为“num=num+(n%10)*k”,系统不保证对其进行初始化,导致程序的运行结果不确定。
(3)第14行,误把“=”作为关系运算符“等于”(语法错误),
(4)第10行,输入变量时忘记使用地址符号(动态语义错误),运行时变量n不能正确接收输入的数据。
(5)第13行,循环条件错误,导致无穷循环。
考生应多上机调试程序,这样就可以熟悉常见的程序错误,从而提高编程水平和效率。

第4题:

●试题七

【说明】

下面是一个Applet程序,其功能是从3~100之间(包括3和100)每隔0.5秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。

程序运行结果如图4所示。

import java.awt.*;

import java.applet.Applet;

/*

<applet code=ex2_7.class width=800 height=400>

</applet>

*/

图 4

public class ex2_7 extends Applet {

public Color color2_7 = Color.black;

private int n2_7 = 3;

public myPrime thPrime2_7;

public void init() {

thPrime2_7 = new myPrime(this);

thPrime2_7.start();

}

public void paint(Graphics g) {

g.setColor(color2_7);

g.drawstring((1) ,50, 50);

}

public int getInt(){

return n2_7;

}

public void setInt(int i){

n2_7=i;

}

}

class myPrime extends Thread {

ex2_7 obj2_7;

myPrime (ex2_7 o) {

this.obj2_7 = o;

}

public boolean isPrime(int n) {

boolean bPrime = true;

int i=2;

if((2))

return false;

while(i<n-1&&bPrime){

if ((3))

bPrime = false;

i++;

}

return bPrime;

}

public void run() {

int i;

for (i = 3;(4); i++) {

if (isPrime(i))

obj2_7.color2_7 = Color.gray;

else

obj2_7.color2_7 = Color.green;

(5);

obj2_7.repaint();

try {

sleep(500);

} catch (InterruptedException ie) {

}

}

}

}

ex2_7.html

<HTML>

<HEAD>

<TITLE>ex2_7</TITLE>

</HEAD>

<BODY>

<applet code="ex2_7.class" width=800 height=400 >

</applet>

</BODY>

</HTML>


正确答案:
●试题七【答案】(1)String.valueOf(n2_7)(2)n<3||n>100(3)(n%i)==0(4)i<101或者i<=100(5)obj2_7.setInt(i)【解析】本题主要考查线程的概念和使用,Applet的执行过程和窗口,for循环语句以及字符串和int型的数据转换和面向对象编程的基本思想。解题关键是熟练地将Applet的执行和线程的基本思想结合完成一定的综合性的应用;熟练掌握线程的建立、运行以及线程类与封装类之间的信息传递方式,即通过对象调用封装的方法来进行,如语句obj2_7.repaint()。本题中,不可以直接填入n2_7,会导致参数类型不符合的错误,应该用String类的valueOf()方法对int型数据进行转换得到String类型数据;注意题目要求,需要包括3和100,因此循环变量的上界应该是i<101或者i<=100;由于n2_7是类ex2_7的私有成员,因此不可以直接用对象obj2_7来调用这个成员变量,需要通过类ex2_7的方法setInt()来实现对私有成员变量的修改。

第5题:

程序运行时输入X值为100,则显示结果为 ______。

A.“OK1”

B.OK1

C.“OK2”

D.“OK3”


正确答案:A
解析:在DO CASE/ENDCASE中,不管有几个CASE条件成立,只有最先成立的那个CASE条件的对应命令序列被执行。所以第(15)、(16)题尽管满足CASE X>20分支的条件,但不会执行?“OK2”语句。只要执行第一个满足CASE条件的分支后就执行ENDCASE来结束DO CASE/ENDCASE。

第6题:

在考生文件夹下有一个工程文件sj3.vbp,相应的窗体文件为sj3.{rm。其功能是在Text文本框中输入一个数N,单击命令按钮计算从0到N的所有素数的和,并在Text2中显示出来。运行程序如图7-3所示。

注意:去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。


正确答案:
判断一个数是否为素数的准则:就是看该数是否除了1及其本身外别无其他约数(即从2到n-1 之间没有可以将其整除的数)即可。
根据题意,在窗体上添加两个Text控件和一个Command控件,Text的名称分别为Text1和Text2、Text属性均为空,Command的名称为Command1、Caption属性为“计算”。双击Command1命令按钮,编写如下代码(本书答案解析部分的代码中,若无特殊说明,加下划线的代码则表明是需要考生补充的代码):
Private Sub Command1_Ctick
Dim total As Long
Dim i As Integer
total=0
For i=1 To Val(Text1.Text)
If isPrimeNum(i)=True Then
调用isPrimeNum函数判断是否是素数
total=total+i如果是,则进行求和
End If
Next i
Text2.Text=total 将结果在Text2中显示
End Sub

Function isPrimeNum(num As Integer)As Boolean
判断输入的数是否为素数
isPrimeNum=True
Dim i As Integer
For i=2 To num-1
If num Mod i=c Then
如果能被除1及其本身以外的数整除
isPrimeNum=False则此数不是素数
Exit For
End If
Next i
End Function
单击按钮运行程序,并按要求保存。

第7题:

在考生文件夹下有一个工程文件sj5.vbp,其窗体上有一个文本框,名称为Text1;有三个命令按钮,名称分别为Command1、Command2和Command3,标题分别为“输入”、“计算显示”和“保存”,运行界面如图25-5所示。在给定程序中有一个函数过程isPrimeNum,其功能是判断参数是否为素数,如果是素数,则返回True,否则返回False。

请将程序中有“?”的地方替换为相应的代码,使得在运行时,单击“输入”按钮,弹出“输入”对话框,单击“计算显示”按钮,则找出大于输入参数的最小素数,并显示在Text1中;单击“保存”按钮,则把Text1中的计算结果存入考生文件夹下的out5.txt文件中。

注意:去掉程序中的注释符“‘”,把程序中的“?”改为正确的内容,使其实现下述功能,但不能修改程序中的其他部分,也不能修改控件的其他属性。最后把修改后的文件按原文件名存盘。考生不得修改isPrimeNum函数过程和控件的属性,必须把计算结果通过“保存”按钮存入out5.txt文件中,否则无成绩。


正确答案:
判断一个数是否为素数就是看该数是否除了1及其本身外别无其他约数(即从2到n一1之间没有可以将其整除的数)即可,从Function函数中可知,变量isPrimeNum用于保留判断数是否是素数的结果,值为True表示是素数,值为False表示不是素数。文本框通过Text属性显示计算结果,其形式为:文本框名.Text=要显示的内容。将数据写入文件可用命令Write#语句或Print#语句,本程序中用的是前者,其形式为:Write#文件号,[输出列表]。
根据题意,将一个文本框控件和3个命令按钮添加到窗体中,文本框的名称为Text1,Text属性为空,命令按钮的名称分别为Command1,Command2和Command3。Caption属性分别为“输入”、“计算显示”和“保存”。双击Command1进入代码窗口,编写如下代码:

第8题:

在考生文件夹下有一个工程文件sjt5.vbp。在窗体文件中已经给出了全部控件及部分程序。程序运行时,在文本框Text1中输入一个大于2的偶数,并单击“分解为”按钮,则可以将该偶数分解为两个素数之和,且要求其中一一个素数是所能够分解出的最小的素数(一个偶数有时可以分解为多种素数的组合,例如24可以分解为5和19,也可以分解为11和13,要求取含有最小素数的组合,如图8所示)。要求编写“分解为”按钮事件过程中“考生编写程序开始”和“考生编写程序结束”之间的代码.以实现上述功能。过程IsPrime用来判断一个数是否为素数,如果是,返回值为True,否则返叵值为False。 注意:不得修改原有程序和控件的属性。至少正确运行一次程序,且运行时在文本框中输入23456,单击“分解为”按钮,将结果显示在标签中,否则无成绩。最后把修改后的文件按原文件名存盘。


正确答案:
【知识点拨】素数的判断准则就是看该数除了l和其本身外有无其他约数。
【审题分析】本题程序设计思路:两个整数之和为n的组合有:l 和n-1、2和n-2...i和n-i,在For循环中按前一个加数由小到大的顺序,依次通过调用函数IsPfime来判断每个组合中的两个加数是否均为素数,第一个找到的素数组合中即含有能够分解出的最小素数。由于1不是素数,故循环变量的初值从2开始;由于i和n-i的组合与n-i和i组合在本题中呵被视为相同组合,故循环变量的终值设定为n/2 即可。
【操作步骤】
【步骤】:打开考生文件中的本题工程文件sjt5 vbp,在代码编辑窗口的指定位置编写以下代码:
参考代码:

步骤2:按要求将文件保存至考生文件夹中。
步骤3:按<F5>键运行程序,在文本框中输入23456,单击“分解为”按钮。

第9题:

使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。 程序输出结果为 1864 2075 注意:不能修改其他部分的代码。 试题程序: include<iostream.h> include<cmath> intfun(intn) { } intmain() { inti=1357: cout<<fun(i)<<endl; i=2468; cout<<fun(i)<<endl: return0; }


正确答案:
inti,a[4],t;
a[0]=n%10;//取整型n的第1位数字
a[1]=n%100/10;//取整型n的第2位数字
a[2]=n%1000/100;//取整型n的第3位数字
a[3]=n/1000;//取整型n的第4位数字
for(i=0;i<=3;i++)//每位数字加3,取余
{
a[i]+=3;
a[i]%=9;
}
t=a[0];//根据加密算法交换
a[0]=a[3];
a[3]=t;
t=a[1];
a[1]=a[2];
a[2]=t;
returna[3]*1000+a[2]*100+a[1]*10+a[0];
//重组,返回加密数字
【解析】本题首先取得要加密整数的每一位数字,并存
入数组。根据加密算法,利用循环实现每位数字加3,再除以9取余。根据加密算法进行数字交换,最后重组,返回密码。