第1题
第2题
【说明】
用创建Thread类的子类的方法实现多线程,判断一个数是否是素数。如果是,打印“是素数”,如果不是,则打印“不是素数”;如果没有参数输入,显示“请输入一个命令行参数”。
【Java程序】
import java.io.* ;
public class TestThread{ //Java Application主类
public static void main(Sting args[ ]){
if (args length<l) { //要求用户输入一个命令行,否则程序不能进行下去
system.out.println("请输入一个命令行参数");
system.exit(0) ;
} //创建用户Thread子类的对象实例,使其处于NewBorn状态
primeThread getPrimes = new primeThread (Integer.parseInt(args[0]));
getPrimes.start () ; //启动用户线程,使其处于Runnable状态
while(getPrimes.isAlive()&& getPrimes.ReadyToGoOn() ) {
system.out.println("Counting the prime number..\n"); //说明主线程在运行
try {
Thread. sleep (500); //使主线程挂起指定毫秒数,以便用户线程取得控制权,
//sleep是static的类方法
}
Catch(InterruptedException e) { //sleep方法可能引起的异常,必须加以处理
return ;
}
} //while循环结束
System.out.println ("按任意键继续……") ; //保留屏幕,以便观察
try {
(1);
}
Catch(IOException e) { }
} //main方法结束
}
class primeThread extends Thread {
//创建用户自己的Thread子类run()中实现程序子线程操作
boolean m_bContinue=true; //标志本线程是继续
int m_nCircleNum ; /循环的上限
prime Thread(int Num){ //构造函数
m_nCircleNum =Nam;
}
boolean ReadyToGoOn () { //判断本线程是否继续执行
return ( (2) );
}
public void run () {
//继承并重载父类Thread的run ()方法,在该线程被启动时自动执行
int number =3;
boolean flag=true;
while (true) { //无限循环
for((3); i++) //检查number是否为素数
if(number %i==0)
(4);
system, out. println (flag);
if (flag) //打印该数是否为素数的信息
system,out.print in (number+ "是素数") ;
else
sys rem.out.print In (number+ "是素数") ;
number++ ; &nb
第4题
第5题
编写求水仙花数的函数sxhsu(int i):功能判断 i 是否为水仙花数,如果是,则函数返回1;如果不是,则返回0。例如:x如果是153,则该函数应该返回1;x如果是253,则该函数应该返回0。 (水仙花数是指三位数中 个位数的立方+十位数的立方+百位数的立方=该数,例如,153=1的立方+5的立方+3的立方) 函数接口定义: int sxhs(int i); 其中 i 是用户传入的参数, i 的值不超过int的范围。如果 i 是水仙花数,则函数返回1;如果不是,则返回0。 裁判测试程序样例: main()中输入a、b的值(3位数),调用sxhsu函数,求出[a,b]区间中的所有水仙花数,一行输出1个。 请在下面指定位置填写sxhs函数 #include <stdio.h> int sxhs(int i); int main() { int i,a,b; printf("输入两个整数以确定三位正整数的范围:\n"); scanf("%d%d",&a,&b); printf("[%d,%d]范围内的水仙花数有:\n",a,b); for(i=a;i<=b;i++) if(sxhs(i)="=1)" printf("%d\n",i); } * 请在这里填写sxhs函数>
第6题
编写一个程序,求出两个数m和n的最大公约数和最小公倍数。 编程提示:求最大公约数的方法有三种: 1.从两个数中较小数的开始向下判断,如果找到一个整数能同时被m和n整除,则终止循环。设n为m和n中较小的数,则如下程序段可实现: for(k=n; k>=1; k--) if(m%k==0 && n%k ==0) break; k即为最大公约数。/* c5-2.c 求最大公约数算法1 */ #include "stdio.h" #include <stdlib.h> int main( ) { return 0; } 2.从整数1开始向上找,直至m和n中较小的数,每找到一个能同时被m和n整除的整数,将其存入一个变量中,当循环结束时,变量中存放的即为最大公约数。设n为m和n中较小的数,则如下程序段可实现: for(k=1; k<=n; k++) if(m%k="=0" && n%k="=0)" x="k;" 变量x的值即为最大公约数。 * c5-3.c 求最大公约数算法2 #include> #include <stdlib.h> int main( ) { return 0; } 3.用辗转相除法,即将求m和n的最大公约数问题转化为求其中的除数和两个数相除所得余数的公约数。每次循环中,先求两个数的余数,然后以除数作为被除数,以余数作为除数,当余数为0时结束循环,此时除数即为最大公约数。设m和n中n为较小的数,则可用如下程序段实现: b=m%n; while(b!=0) { m=n; n=b; b=m%n;} printf("%d\n",n); /* c5-4.c 求最大公约数算法3 */ #include <stdio.h> #include <stdlib.h> int main( ) { return 0; } 两个数的最大公约数和最小公倍数的关系为:最小公倍数=m*n/最大公约数,可利用此关系进行程序设计。
第8题
第9题
第10题
编写程序,显示所有的水仙花数,程序的界面自行设计。所谓水仙花数,是指一个3位数,其各位数字的立方和等于该数字本身。例如,153是水仙花数,。 保存工程和窗体,窗体文件名为:昵称-6-1.frm;工程名为:昵称-6-1.vbp。将工程文件和窗体文件压缩成:昵称-6-1.rar,以附件形式提交。 提示: 解该题的方法有两种: ①利用三重循环,将三个一位数连接成一个3位数进行判断。 例如,将i,j,k三个一位数连成一个三位数的表达式为: i*100+j*10+k ‘ i、j、k分别为三重循环的循环控制变量 ② 利用单循环将一个3位数逐位分离后进行判断。例如x是一个三位数,分离为三个一位数i、j、k: X=357 i= x \100 ‘ i获得百位数结果 3 j= (x Mod 100) \10 ‘ j获得十位数结果 5 k=x Mod 10 ‘ k获得个位数结果 7
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!