importjava.util.Scanner;
public class Test50006{
public static void main(String args[]){ intri,repeat;
inti, m, n;
long f;
Scanner in=new Scanner(System.in); repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
m=in.nextInt();
n=in.nextInt();
i = 1;
while(true)
{
f = fib(i++);
if(f > n)break;
if(f >= m)System.out.print(f + " "); }
System.out.println();
}
}
static long fib(int n)
{
int a = 0, b = 1, i ,temp;
for(i=1;i<=n;i++)
{
temp = a + b; a = b; b = temp; }
return a;
}
}
importjava.util.Scanner;
public class Test50007{
public static void main(String args[]){
intri,repeat;
inti, m, n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
m=in.nextInt();
n=in.nextInt();
for(i=m;i<=n;i++)
if(i==factorsum(i))System.out.print(i+" "); System.out.println();
}
}
staticintfactorsum(int number)
{
intans=1;
for(inti=2;i<=Math.sqrt(number);i++)
if(number%i==0){ans+=i;if(i*i!=number)ans+=number/i;} returnans;
}
}
importjava.util.Scanner;
public class Test50008{
public static void main(String args[]){ intri,repeat;
inti, m, n;
Scanner in=new Scanner(System.in); repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
m=in.nextInt();
n=in.nextInt();
for(i = m; i<= n; i++)
if(is(i))System.out.print(i+" "); System.out.println();
}
}
staticboolean is(int number)
{
int digit, ans = 0, temp = number; while(number!=0)
{
digit = number % 10;
ans += digit * digit * digit; number /= 10;
}
returnans == temp;
}
}
importjava.util.Scanner;
public class Test50009{
public static void main(String args[]){ intri,repeat;
long n, res;
Scanner in=new Scanner(System.in); repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
n=in.nextInt();
res = reverse(n);
System.out.println(res); }
}
static long reverse(long number) {
longans = 0;
while(number!=0)
{
ans = ans * 10 + number % 10; number /= 10;
}
returnans;
}
}
importjava.util.Scanner;
public class Test50010{
public static void main(String args[]){ intri,repeat;
inti,n;
Scanner in=new Scanner(System.in); repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
n=in.nextInt();
if(n==0)System.out.print(0); elsedectobin(n);
System.out.println();
}
}
static void dectobin(int n)
{
if(n==0)return;
dectobin(n>>1);
System.out.print(n%2);
}
}
importjava.util.Scanner;
public class T {
public static void main(String args[]) {
intri, repeat;
inta,b,c,maximun;
Scanner in = new Scanner(System.in);
repeat = in.nextInt();
for (ri = 1; ri<= repeat; ri++) {
a = in.nextInt();
b = in.nextInt();
c=in.nextInt();
maximun = max(a, b, c);
System.out.println("max("+a+","+b+","+c+")="+maximun); }
}
staticint max(int a, int b, int c)
{
intans = a;
if(ans< b)ans = b;
if(ans< c)ans = c;
returnans;
}
}
实验8 Method的使用
程序填空,不要改变与输入输出有关的语句。
1. 求1 + 1/2! +....+ 1/n!
输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。
s = 1 + 1/2! +....+ 1/n!
要求定义并调用函数fact(n)计算n的阶乘。
例:括号内是说明
输入:
2 (repeat=2)
2 (n=2)
10 (n=10)
输出:
1.5
1.7183
public class Test50001 {
public static void main(String[] args) {
int ri,repeat;
int i,n;
double s;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
n=in.nextInt();
/*-----------*/
s=0;
for(i=1;i<=n;i++)
s+=1.0/fact(i);
System.out.println((long)(s*10000+0.5)/10000.); }
}
/*---------------*/
static double fact(int n) {
int i;
double f=1;
for(i=1;i<=n;i++)
f*=i;
return f;
}
}
/* 方法fact(n)也可以用以下递归算法设计
static double fact(int n) {
if(n==1)
return 1;
else
return n*fact(n-1);
}
*/
2. 求a+aa+aaa+aa…a
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。
要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。
例:括号内是说明
输入
2 (repeat=2)
2 3 (a=2, n=3)
8 5 (a=8, n=5)
输出
246 (2+22+222)
98760 (8+88+888+8888+88888)
import java.util.Scanner;
public class Test50002{
public static void main(String args[]){
int ri, repeat;
int i, n,a;
long sn;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
a=in.nextInt();
n=in.nextInt();
/*------------*/
sn=0;
for(i=1;i<=n;i++)
sn+=fn(a,i);
System.out.println(sn);
}
}
/*------------*/
static int fn(int a,int n){
int s=0;
for(int i=1;i<=n;i++)
s=s*10+a;
return s;
}
}
/* 方法fn()也可以用以下递归算法设计
static int fn(int a,int n){
if (n==1)
return a;
else
return fn(a,n-1)*10+a;
}
*/
3. 统计一个整数中数字的个数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入1 个整数,统计并输出该数中2的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。
例:括号内是说明
输入:
3 (repeat=3)
-21902
2
345543
输出:
count=2 (-21902中有2个2)
count=1 (有1个2)
count=0 (345543中没有2)
import java.util.Scanner;
public class Test50003{
public static void main(String args[]){
int ri, repeat;
int count;
long n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*---------*/
n=Math.abs(n);
count=countdigit(n,2);
System.out.println("count="+count);
}
}
/*------------*/
static int countdigit(long number,int digit){
//统计整数number中数字digit的个数
int a,c=0;
while(number>0){
a=(int)(number%10);
if(a==digit)c++;
number=number/10;
}
return c;
}
}
4. 判断素数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
例:括号内是说明
输入
4 (repeat=4)
1 2 9 17
输出
NO (1不是素数)
YES (2是素数)
NO (9不是素数)
YES (17是素数)
import java.util.Scanner;
public class Test50004{
public static void main(String args[]){
int ri, repeat,n;
boolean flag;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*---------*/
flag=prime(n);
if(flag) System.out.println("YES");
else System.out.println("NO");
}
}
/*------------*/
static boolean prime(int m){
boolean flag=true;
if(m==1)flag=false;
for(int i=2;i<=m-1;i++)
if(m%i==0)
{ flag=false; break; }
return flag;
}
}
5. 统计素数并求和
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 35 (m=20, n=35)
14 16 (m=14, n=16)
输出:
count=4, sum=17 (1到10之间有4个素数:2,3,5,7)
count=3, sum=83 (20到35之间有3个素数:23, 29, 31)
count=0, sum=0 (14到16之间没有素数)
import java.util.Scanner;
public class Test50005{
public static void main(String args[]){
int ri, repeat;
int count, i, m, n, sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/
count=0; sum=0; for(i=m;i<=n;i++) if(prime(i)){count++; sum+=i;}
System.out.println("count="+count+", sum="+sum);
}
}
/*------------*/
static boolean prime(int m){
boolean flag=true;
if(m==1)flag=false;
for(int i=2;i<=m-1;i++)
if(m%i==0)
{ flag=false; break; }
return flag;
}
}
6. 输出 Fibonacci 序列
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=10000),输出m 和n之间所有的Fibonacci数。
Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21 ......
要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。 输出语句:System.out.print(f+" ");
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 100 (m=20, n=100)
1000 6000 (m=1000, n=6000)
输出:
1 1 2 3 5 8 (1到10之间的Fibonacci数)
21 34 55 89 (20到100之间的Fibonacci数)
1597 2584 4181 (1000到6000之间的Fibonacci数)
import java.util.Scanner;
public class Test50006{
public static void main(String args[]){
int ri,repeat;
int i, m, n;
long f;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
i=1;
f=1;
while(f<=n){
if(f>=m) System.out.print(f+" "); i++;
f=fib(i);
}
System.out.println();
}
}
/*------------*/
static long fib(int n){
int i;
long a=1,b=1,f=1;
for(i=3;i<=n;i++){ //从第3项开始计算 f=a+b;
a=b;
b=f;
}
return f;
}
}
/* 方法fib(n)用递归实现
static long fib(int n){
if(n==1||n==2) return 1;
else return fib(n-1)+fib(n-2);
}
*/
7. 求完数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有完数(完数就是因子和与它本身相等的数)。 要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。
输出语句:System.out.print(i+" ");
例:括号内是说明
输入:
2 (repeat=2)
20 500 (m=100, n=400)
1 100 (m=1, n=100)
输出:
28 496
1 6 28
import java.util.Scanner;
public class Test50007{
public static void main(String args[]){
int ri,repeat;
int i, m, n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
for(i=m;i<=n;i++)
if(i==factorsum(i))
System.out.print(i+" ");
System.out.println();
}
}
/*---------*/
static int factorsum(int number){
int sum=0;
if(number==1)sum=1;
for(int i=1;i<=number-1;i++)
if(number%i==0)sum+=i;
return sum;
}
}
8. 求各位数字的立方和等于它本身的数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。 要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。
输出语句:System.out.print(i+" ");
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 370 371 (1*1*1+5*5*5+3*3*3=153; 3*3*3+7*7*7=370; 3*3*3+7*7*7+1*1*1=371)
1
import java.util.Scanner;
public class Test50008{
public static void main(String args[]){
int ri,repeat;
int i, m, n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
for(i=m;i<=n;i++)
if(is(i))
System.out.print(i+" ");
System.out.println();
}
}
/*---------*/
static boolean is(int number) {
int sum=0,n,digit;
n=number;
while(n>0){
digit=n%10;
n=n/10;
sum+=digit*digit*digit;
}
if(number==sum)
return true;
else
return false; }
}
Java语言程序设计实验报告学生所在学院里仁学院学生所在班级08计算机一班学生姓名hejinhai指导教师崔勇强教务处20xx年6…
Homework3实验报告一实验目的与要求1掌握Java中类和接口的基本知识2继承的基本知识3集合的基本操作二实验内容1PIMCo…
一实验目的Java上机实验报告1通过练习熟练掌握java语法2通过做独立做项目养成好的编程习惯3熟练掌握用java开发小型项目的流…
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间…
Java程序设计上机实验20xx年12月第1次上机实验报告班级姓名学号一实验题目1编写字符界面的javaapplication将用…
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间…
徐州工程学院管理学院实验报告实验课程名称数据结构与算法实验地点经济管理教学实验中心20xx年3月至20xx年6月专业信息管理与信息…
Homework3实验报告一实验目的与要求1掌握Java中类和接口的基本知识2继承的基本知识3集合的基本操作二实验内容1PIMCo…
实验一JSP内置对象的应用packagecomcountstoptimeimportjavautilpublicclassStop…
Java程序设计上机实验20xx年12月第1次上机实验报告班级姓名学号一实验题目1编写字符界面的javaapplication将用…