浙江大学Java语言程序设计实验答案
更新时间:2023-12-05 12:58:01 阅读量: 教育文库 文档下载
- C语言程序设计浙江大学推荐度:
- 相关推荐
Java答案全集实验汇总。
实验2 数据类型和变量的使用
一、程序填空,在屏幕上显示一个短句“Programming in Java is fun!”
import java.io.*;
public class Test10001{
public static void main(String args[]){ /*------------------------*/
System.out.println(\in Java is fun!\
} }
二、程序填空,在屏幕上显示如下网格。 +---+---+ | | | | | | +---+---+
import java.io.*;
public class Test10002{
public static void main(String args[]){ /*------------------------*/ System.out.println(\
System.out.println(\ System.out.println(\ System.out.println(\
} }
三、编写程序,在屏幕上显示如下图案。(要求:第1行行首无空格,每行行尾无空格)
* * * * * * * * * *
public class Test10003{
public static void main(String args[]){ /*------------------------*/
System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\
- 1 -
} }
- 2 -
实验3 运算符和表达式的使用
1、
运行结果: m=2 k=1
x=1.0 y=2.0 z=-3.0 ch1=-A ch2=A ch1=-A ch2=a
Hello,Welcome to core Java!
思考题:
(1) 字符'A'的Unicode码比字符'a'的Unicode码小32。
(2)假设字符型变量ch中保存一个大写字母,执行ch+=('a'-'A' )是相应的小写字母。例:若ch='B',执行后ch='b'。 2、
运行结果:
m=3 n=2. m大于n吗?true m=2 n=2. m大于n吗?false
str1=Hello;str2=Hello!
s1和s2相等吗?false
思考题:
(1)s2比s1多一个字符“!”,所以不相同。 (2)s2比s1多一个字符,所以s2比s1大。 3、
运行结果:
逻辑变量b1=true、b2=false b1^b2(异或运算)的结果是:true
b1^!b2(b2取反后与b1异或运算)的结果是:false n=31,m=15; m与n的位与运算结果是:15
- 3 -
;后,ch中m、n的位与后左移2位的结果:60
思考题: (1)若给b1赋值2,则程序出错。因为类型不匹配:不能从int转换为boolean (2)n是十六进制数,化为二进制为0001 1111;
m是八进制数,化为二进制为0000 1111;
所以n&m为0000 1111(二进制),就是十进制数15。 (3)120
(4)左移运算就是乘法运算,左移n位就相当于乘以2^n 4、
运行结果:
(m+n>k)?(m++):(--m+n++)的运算结果:2 float型变量强制转换为int型的结果是:3 int型变量运算:(m+2*n)/k的结果是:2
(m+2*n)/k的结果赋值给float型变量后x=2.0
思考题:
(1)因为temp=(--m+n++),等价于依次执行以下命令:
--m;
temp=(m+n); n++;
所以,temp=2,m=0,n=3,k=3
(2)因为3.14是double类型,不能赋给float类型的变量x
在3.14后面加F或f,将其转换成float类型,就可以赋值了 (3)此时m=1,n=3,k=3,所以(m+2*n)/k=7/3=2 (4)x=(m+2*n)/(float)k=7/3.0=2.3333333 5、
源程序如下:
public class Ball { public static void main (String[] args){ float r=6.5f, PI=3.14f,V; V=4f/3f*PI*r*r*r; System.out.println(\球的半径为\ System.out.println(\球的体积为\ } }
- 4 -
运行结果: 球的半径为6.5
球的体积为1149.7634
- 5 -
实验4 顺序结构程序的设计
程序填空,不要改变与输入输出有关的语句。 一、求两个数的和与差。
输入整数a和b,计算并输出a、b的和与差。 例: 输入 2 -8 输出
The sum is -6
The difference is 10
import java.io.*;
import java.util.Scanner; public class Test20001{
public static void main(String args[]){ int a, b, sum, diff;
Scanner in=new Scanner(System.in); a=in.nextInt(); b=in.nextInt();
/*------------------*/ sum=a+b; diff=a-b;
System.out.println(\
System.out.println(\ } }
二、求平方根。
输入1个实数x,计算并输出其平方根。 例: 输入 1.21 输出
The square root of 1.21 is 1.1
import java.io.*;
import java.util.Scanner; public class Test20002{
- 6 -
public static void main(String args[]){ double x, root;
Scanner in=new Scanner(System.in); x=in.nextDouble(); /*------------------*/
root=Math.sqrt(x);
System.out.println(\ } }
三、华氏温度转换为摄氏温度。
输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32). 例:括号内是说明 输入
17.2 (华氏温度) 输出
The temprature is -8.222222222222223
import java.util.Scanner; public class Test20003 {
public static void main(String[] args) { Scanner in=new Scanner(System.in); double f, c;
f=in.nextDouble();
/*------------------*/
c=5.0/9*(f-32); //注意:5/9结果是0
System.out.println(\ } }
四、计算旅途时间。
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。 例:括号内是说明 输入
712 1411(出发时间是7:12,到达时间是14:11) 输出
The train journey time is 6 hrs 59 mins.
- 7 -
import java.util.Scanner; public class Test20004 {
public static void main(String[] args) { Scanner in=new Scanner(System.in); int time1, time2, hours, mins; time1=in.nextInt(); time2=in.nextInt(); /*------------------*/
/*计算两个时间之间的小时数和分钟数*/ hours=time2/100-time1/100; mins=time20-time10;
/*当计算得到的分钟数为负数时进行如下处理*/ hours=mins>0?hours:hours-1; mins=mins>0?mins:mins+60;
System.out.println(\mins.\ } }
五、数字加密。
输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。 例:括号内是说明 输入 1257 输出
The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
import java.util.Scanner; public class Test20005 {
public static void main(String[] args) { Scanner in=new Scanner(System.in);
int number, digit1, digit2, digit3, digit4, newnum; number=in.nextInt(); /*------------------*/
- 8 -
/*先分离出各位上的数字*/
digit1=number/1000;
digit2=number/100; //或 digit2=(number-digit1*1000)/100; digit3=number/10; //或
digit3=(number-digit1*1000-digit2*100)/10; digit4=number;
/*再调整各位上的数字*/ digit1=(digit1+9); digit2=(digit2+9); digit3=(digit3+9); digit4=(digit4+9);
/*最后组成加密后的新数*/
newnum=digit3*1000+digit4*100+digit1*10+digit2;
System.out.println(\ } }
六、大写字母转换成小写字母。
输入一个大写英文字母,输出相应的小写字母。 例: 输入 G 输出 g
import java.io.*;
public class Test20006 {
public static void main(String[] args) throws IOException { char ch;
ch=(char)System.in.read(); /*------------------*/ ch+=32;
//或 ch=(char)(ch+32);
System.out.println(ch); }
- 9 -
}
七、计算三门课程的平均成绩。
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。 本题无输入。 输出示例:
math = 87, eng = 72, comp = 93 average = 84
public class Test20007 {
public static void main(String[] args) { int math, eng, comp, average; /**********/ math=87;
eng=72; comp=93;
average=(math+eng+comp)/3;
System.out.println(\ System.out.println(\ } }
八、计算存款利息。
输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。 interest = money(1+rate)^year - money 输入输出示例:括号内为说明 输入
1000 3 0.025 (money = 1000, year = 3, rate = 0.025) 输出
interest = 76.89
import java.util.Scanner; public class Test20008 {
public static void main(String[] args) { int money, year;
double interest, rate;
Scanner in=new Scanner(System.in);
/*使用in.nextDouble()和in.nextInt()输入double和int型数据*/ /**********/
money=in.nextInt();
- 10 -
year=in.nextInt(); rate=in.nextDouble();
interest=money*Math.pow((1+rate), year )- money;
//注意:指数运算没有运算符,应使用数学类的方法
pow
System.out.println(\(int)(interest*100+0.5)/100.0); //正数保留两位小数 } }
九、计算两个数的和、差、积、商与余数。
输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。
输入输出示例:括号内是说明 输入
5 3 (num1=5,num2=3) 输出 5+3=8 5-3=2 5*3=15 5/3=1 5%3=2
import java.util.Scanner; public class Test20010{
public static void main(String args[]){ int num1,num2;
Scanner in=new Scanner(System.in); num1=in.nextInt(); num2=in.nextInt();
/*------------------------*/
System.out.println(num1+\ System.out.println(num1+\ System.out.println(num1+\ System.out.println(num1+\ System.out.println(num1+\
} }
十、计算一个3位数的各位数字。
输入一个3位数n,分别求出 n 的个位数字(c)、十位数字(b)和百位数字(a)的值。
- 11 -
输入输出示例: 输入: 152 输出:
number152:digit1=2,digit2=5,digit3=1
import java.util.Scanner; public class Test20011{
public static void main(String args[]){ int a,b,c,n;
Scanner in=new Scanner(System.in); n=in.nextInt();
/*------------------------*/
c=n; b=(n/10); a=(n/100);
System.out.println(\ } }
十一、计算x的平方。
输入x,计算x的平方y。并分别以\和\的形式输出 x 和 y 的值。
输入输出示例: 输入: 3
输出:(输出中不能出现空格) 9=3*3 3*3=9
import java.util.Scanner; import java.util.Scanner; public class Test20012 { public static void main(String []args){ int x,y; Scanner in=new Scanner(System.in); x=in.nextInt(); /*--------------*/ y=x*x;
}
}
System.out.println(y+\System.out.println(x+\
- 12 -
实验5 分支结构程序的设计
程序填空,不要改变与输入输出有关的语句。 一、显示两级成绩
- 13 -
输入一个正整数repeat (0 输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。 输出使用System.out.println(\及System.out.println(\ 例:括号内是说明 输入 2 (repeat=2) 60 59 输出 Pass Fail import java.util.Scanner; public class Test30001{ public static void main(String[] args){ int ri, repeat; int mark; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ mark=in.nextInt(); /*------------------*/ if (mark<60) System.out.println(\); else System.out.println(\); } } } 二、找最小值 输入一个正整数repeat (0 例:括号内是说明 输入 3 (repeat=3) 12 6 1 90 10 40 30 20 -1 -3 -4 -5 输出 min is 1 (12 6 1 90 中的最小值是1) min is 10 (10 40 30 20 中的最小值是10) - 14 - min is -5 (-1 -3 -4 -5中的最小值是-5) import java.util.Scanner; public class Test30002 { public static void main(String[] args){ int ri, repeat; int a, b, c, d, min; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ a=in.nextInt(); b=in.nextInt(); c=in.nextInt(); d=in.nextInt(); /*------------------*/ min=a; if(min>b) min=b; if(min>c) min=c; if(min>d) min=d; System.out.println(\ } } } 三、求三角形的面积和周长 输入一个正整数repeat (0 输入三角形的三条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter;否则,输出“These sides do not correspond to a valid triangle”。 在一个三角形中,任意两边之和大于第三边。 三角形的面积计算公式: area*area = s(s-a)(s-b)(s-c) 其中:s = (a+b+c)/2 输出代码: System.out.println(\er*100+0.5)/100.); System.out.println(\ 例:括号内是说明 输入 2 (repeat=2) 5 5 3 1 1 4 - 15 - 输出 area=7.15;perimeter=13.0 These sides do not correspond to a valid triangle import java.util.Scanner; public class Test30003 { public static void main(String[] args){ int ri, repeat; float a, b, c, area, perimeter, s; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ a=in.nextFloat(); b=in.nextFloat(); c=in.nextFloat(); /*------------------*/ if (a+b>c&&a+c>b&&b+c>a) //注意:复合条件的正确写法 { s=(a+b+c)/2; area=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c)); perimeter=a+b+c; System.out.println(\+(int)(area*100+0.5)/100.+\+(int)(perimeter*100+0.5)/100.); } else System.out.println(\valid triangle\); } } } 四、判断数的符号 输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。 例:括号内是说明 输入 3 (repeat=3) 2 -8 0 输出 1 (x=2时y=1) -1 (x=-8时y=-1) 0 (x=0时y=0) - 16 - import java.util.Scanner; public class Test30004{ public static void main(String[] args){ int ri, repeat; int x, y; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ x=in.nextInt(); /*------------------*/ if(x>0) y=1; else if(x==0) y=0; //注意:=是赋值运算符,==才是比较相等的运算符 else y=-1; System.out.println(y); } } } 五、计算个人所得税 输入一个正整数repeat (0 当 salary <= 850 时,rate = 0%; 当 850 < salary <= 1350 时,rate = 5%; 当 1350 < salary <= 2850 时,rate = 10%; 当 2850 < salary <= 5850 时,rate = 15%; 当 5850 < salary 时,rate = 20%; 例:括号内是说明 输入 5 (repeat=5) 1010.87 32098.76 800 4010 2850 输出 tax=8.04 tax=6249.75 tax=0.0 tax=474.0 - 17 - tax=200.0 import java.util.Scanner; public class Test30005 { public static void main(String[] args){ int ri, repeat; float rate, salary, tax; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ salary=in.nextFloat(); /*------------------*/ if(salary<=850) //注意:实现分段函数时对条件的简化 rate=0; else if(salary<=1350) rate=0.05f; else if(salary<=2850) rate=0.1f; else if(salary<=5850) rate=0.15f; else rate=0.2f; tax=rate*(salary-850); System.out.println(\ } } } 六、显示水果的价格 输入一个正整数repeat (0 以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。 [1] apples [2] pears [3] oranges [4] grapes 输入水果的编号,输出该水果的单价。如果输入不正确的编号,显示单价为0。 例:括号内是说明 输入 1 (repeat=1) 3 (oranges的编号) 输出 - 18 - [1] apples [2] pears [3] oranges [4] grapes price=4.1 import java.util.Scanner; public class Test30006{ public static void main(String[] args){ int ri, repeat; int choice; float price; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ choice=in.nextInt(); /*------------------*/ switch(choice) { case 1:price=3.0f;break; case 2:price=2.5f;break; case 3:price=4.1f;break; case 4:price=10.2f;break; default: price=0; } System.out.println(\ } } } 七、字母转换 输入一批以问号“?”结束的字符,对“?”以前的每一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。 例: 输入 F=y? 输出 f=Y - 19 - import java.io.*; public class Test30007 { public static void main(String[] args)throws IOException{ char ch; ch=(char)System.in.read(); while(ch!='?'){ /*------------------*/ if('A'<=ch&&ch<='Z') ch+=32; else if('a'<=ch&&ch<='z') //此处必须使用if结构的嵌套 ch-=32; System.out.print(ch); ch=(char)System.in.read(); } } } 八、计算函数的值 输入一个正整数repeat (0 输入整数 x,计算并输出下列函数 f(x) 的值(保留2位小数,如果答案为3.50,则直接显示为3.5)。 当 x 等于0时,f(x) = 0,当 x 不等于0时, f(x) = 1/x 。 输入输出示例:括号内是说明 输入 3 (repeat=3) 6 (x=6) 10 (x=10) 0 (x=0) 输出 f(6)=0.17 f(10)=0.1 f(0)=0.0 import java.util.Scanner; public class Test30008{ public static void main(String args[]){ int repeat, ri,x; double y; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri = 1; ri <= repeat; ri++){ - 20 - x=in.nextInt(); /*---------*/ } } } if(x==0) y=0; else y=(int)((1.0/x)*100+0.5)/100.; //或 y=Math.rint((1.0/x)*100)/100.; System.out.println(\ 说明:对正数y保留两位小数的表达式 (int)(y*100+0.5)/100.0 或 Math.rint((1.0/x)*100)/100.0 九、显示五级记分制成绩对应的百分制区间 输入一个正整数 repeat (0 输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。 五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示\。 输入输出示例:括号内是说明 输入 6 A B C D E j (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j) 输出 90-100 80-89 70-79 60-69 0-59 Invalid input import java.util.Scanner; public class Test30010{ public static void main(String args[]){ int repeat, ri; char ch; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri = 1; ri <= repeat; ri++){ ch=(in.next()).charAt(0); /*输入1个字符*/ - 21 - /*---------*/ switch(ch) { case 'A':System.out.println(\);break; case 'B':System.out.println(\);break; case 'C':System.out.println(\);break; case 'D':System.out.println(\);break; case 'E':System.out.println(\);break; input\); } } default: System.out.println(\ } 实验6 循环结构程序的设计(一) - 22 - 程序填空,不要改变与输入输出有关的语句。 1. 求1+1/2+1/3+……+1/n 输入一个正整数repeat (0 读入1 个正整数 n(n<=100),计算并输出1+1/2+1/3+??+1/n 。 例:括号内是说明 输入 2 (repeat=1) 2 10 输出 1.5 2.9289684 import java.util.Scanner; public class Test40001 { public static void main(String[] args) { int ri, repeat; int i, n; float sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ } sum=0; //注意这条赋初值语句的位置 for(i=1;i<=n;i++){ sum+=1.0f/i; } } } System.out.println((int)(sum*1000+0.5)/1000.); 2. 求n! 输入一个正整数repeat (0 3 (repeat=2) 1 10 5 输出 - 23 - 1.0 3628800.0 120.0 import java.util.Scanner; public class Test40002 { public static void main(String[] args) { int ri, repeat; int i, n; double fact; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ fact=1; for(i=1;i<=n;i++) fact*=i; } } } System.out.println(fact); 3. 求x的n次幂 输入一个正整数repeat (0 2 (repeat=2) 1.5 2 2.0 10 输出 2.25 1024.0 import java.util.Scanner; public class Test40003 { public static void main(String[] args) { int ri, repeat; int i, n; double x, mypow; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ - 24 - x=in.nextDouble(); n=in.nextInt(); /*--------------------*/ mypow=1; for(i=1;i<=n;i++) mypow*=x; } } } System.out.println(mypow); 4. 求1+1/3+1/5+1/7+…… 输入一个正整数repeat (0 读入1 个正整数 n(n<=100),计算并输出1+1/3+1/5+1/7+??的前n项和。 例:括号内是说明 输入 2 (repeat=2) 10 3 输出 2.133256 1.5333334 import java.util.Scanner; public class Test40005 { public static void main(String[] args) { int ri, repeat; int i, n, temp; float sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ temp=1; sum=0; for(i=1;i<=n;i++) { sum+=1.0f/temp; temp+=2; } System.out.println(sum); } } } - 25 - 解法二: temp=2*n-1; sum=0; for(i=1;i<=temp;i+=2) sum+=1.0f/i; 5. 摄氏温度和华氏温度转换表 输入一个正整数repeat (0 输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内摄氏温度C和华氏温度F的转换表。 F = 32 + C * 9 / 5 输出语句:System.out.println(c+\例:括号内是说明 输入 1 (repeat=1) 5 7 输出 Celsius Fahrenheit 5 41 6 42 7 44 import java.util.Scanner; public class Test40007 { public static void main(String[] args){ int ri, repeat; int begin, c, end, f; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ begin=in.nextInt(); end=in.nextInt(); System.out.println(\ /*--------------------*/ for(c=begin;c<=end;c++) { f=32+c*9/5; System.out.println(c+\ } } } } 6. 求奇数和 - 26 - 输入一个正整数repeat (0 2 (repeat=2) 1 3 90 7 0 8 7 4 3 70 5 6 101 -1 输出 11 116 import java.util.Scanner; public class Test40008 { public static void main(String[] args){ int ri, repeat; int x, sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ x=in.nextInt(); /*--------------------*/ sum=0; while(x>0){ if(x%2!=0)sum+=x; x=in.nextInt(); } System.out.println(sum); } } } 7. 求最大值 输入一个正整数repeat (0 3 (repeat=3) 4 2 123 -100 0 4 9 1 -1 8 3 1 3 5 输出 123 9 5 - 27 - import java.util.Scanner; public class Test40009 { public static void main(String[] args){ int ri, repeat; int i , max, n, x; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ max=in.nextInt(); //输入第一个数 for(i=1;i<=n-1;i++){ x=in.nextInt(); //输入下一个数,然后比较 if(x>max)max=x; } System.out.println(max); } } } 8. 求整数的位数以及各位数之和 输入一个正整数repeat (0 4 (repeat=4) 123456 -100 -1 99 输出 number=6, sum=21 (123456的位数是6, 各位数之和是21) number=3, sum=1 (-100的位数是3, 各位数之和是1) number=1, sum=1 (-1的位数是1, 各位数之和是1) number=2, sum=18 (99的位数是2, 各位数之和是18) import java.util.Scanner; public class Test40010 { public static void main(String[] args){ int ri, repeat; int number, sum,n; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ - 28 - n=Math.abs(n); number=sum=0; do{ sum=sum+(n); number++; n=n/10; }while(n>0); /* 如果使用while语句,输入0时输出 “number=0, sum=0”, 其中number的值不正确,应是1 */ System.out.println(\ } } } 实验7 循环结构程序的设计(二) 程序填空,不要改变与输入输出有关的语句。 - 29 - 1. 求1-1/2+1/3-1/4+…… 输入一个正整数repeat (0 读入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+??的前n项和(四舍五入保留小数4位)。 例:括号内是说明 输入 2 (repeat=2) 10 3 输出 0.6456 0.8333 import java.util.Scanner; public class Test40004 { public static void main(String[] args) { int ri, repeat; int i, n, flag; float sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/ sum=0; flag=1; for(i=1;i<=n;i++) { sum+=flag*1.0f/i; flag=-flag; } System.out.println((long)(sum*10000+0.5)/10000.); } } } 2. 求1-1/3+1/5-1/7+…… 输入一个正整数repeat (0 例:括号内是说明 输入 - 30 - n=in.nextInt(); /*--------------------*/ s=0; t=1; for(i=1;i<=n;i++){ t*=i; s+=1/t; //如果这两条语句交换位置,则i=1要改成i=2 } System.out.println((int)(s*10000+0.5)/10000.); } } } 8. 求各位数字的立方和等于它本身的数。 输入一个正整数repeat (0 输出语句:System.out.println(i); 例:括号内是说明 输入: 2 (repeat=2) 100 400 (m=100, n=400) 1 100 (m=1, n=100) 输出: 153 (1*1*1+5*5*5+3*3*3=153) 370 (3*3*3+7*7*7=370) 371 (3*3*3+7*7*7+1*1*1=371) 1 import java.util.Scanner; public class Test40022{ public static void main(String args[]){ int ri, repeat; int i, digit, m, n, number, sum; 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++){ - 36 - number=i; sum=0; while(number>0){ digit=number; sum+=digit*digit*digit; number=number/10; } if(i==sum) System.out.println(i); } } } } 9. 统计素数并求和。 40023 输入一个正整数repeat (0 输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和。 例:括号内是说明 输入: 3 (repeat=2) 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 Test40023{ public static void main(String args[]){ int ri, repeat; int count, i, j, k, 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=sum=0; for(k=m;k<=n;k++){ for(i=2;i<=k-1;i++) - 37 - } if(k%i==0)break; if(i==k){ count++; sum+=k; } System.out.println(\ } } } 另一种编法: count=sum=0; boolean flag; for(k=m;k<=n;k++) { if(k==1)flag=false; //1不是素数 else flag=true; for(i=2;i<=k-1;i++) { if(k%i==0){flag=false; break;} } if(flag){sum+=i; count++;} } 实验8 Method的使用 程序填空,不要改变与输入输出有关的语句。 1. 求1 + 1/2! +....+ 1/n! - 38 - 输入一个正整数repeat (0 要求定义并调用函数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) - 39 - return 1; else return n*fact(n-1); } */ 2. 求a+aa+aaa+aa?a 输入一个正整数repeat (0 要求定义并调用函数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++) - 40 -
正在阅读:
浙江大学Java语言程序设计实验答案12-05
祠堂对联04-25
工资水平(最终版)(1)04-25
出货作业08-21
《专利法》(课程代码06617)09-21
be动词、变复数、否定句、一般疑问句练习、单数变复数、人称代词的用法及练习题09-01
如何提高说话的逻辑性?02-22
客户服务部岗位职责.doc04-05
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 浙江大学
- 程序设计
- 答案
- 语言
- 实验
- Java
- 英语人教版三年级上册Humpty Dumpty
- 第三章总量指标与相对指标练习及答案
- 通用技术研究性学习课题
- 英国诺丁汉大学交换完全攻略
- 电梯维保合同标准版本
- 揭开大包干 - 契约 - 真伪之谜 - 王茂跃
- 人际传播理论
- 2012年黑龙江省大庆市中考语文试题含答案 - 图文
- 2015年机械原理题练习题OK - 图文
- 2019精选教育“句式的变换与选择”专题复习 doc
- 双梅小学2014“和美雅韵”第三届教科节活动方案
- 小升初数学经典奥数-应用题+详细解析
- 青湖丽苑物业服务意见征询函统计表1(精)
- 江苏省南京市玄武区中考一模化学历真题
- 蒙牛特仑苏牛奶网络营销策划
- 全国100所名校最新高考模拟示范卷·语文卷(五)(附答案)
- 2011年11月一级人力资源管理师真题及答案
- 义务教育阶段关于休学和复学有哪些规定
- 脱贫攻坚责任落实、政策落实和工作落实应知应会要点(县级最新)
- 综合英语教程5(第三版邹为诚)大三上期末复习材料1.1