第三次Java练习题.docx
- 文档编号:6239630
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:20
- 大小:26.64KB
第三次Java练习题.docx
《第三次Java练习题.docx》由会员分享,可在线阅读,更多相关《第三次Java练习题.docx(20页珍藏版)》请在冰豆网上搜索。
第三次Java练习题
1.顺序语句练习
6道题.方法1道.数组2道。
类2到
建项目Test+学号
每个题一个包
把每个项目压缩专业班级学号姓名提交
时间3小时
数组:
做题号为偶数的去掉柜子八皇后
方法:
1311131416
类:
1546789141516
异常:
.循环练习
publicclasslx5{
publicstaticvoidmain(Stringargs[]){
System.out.println("50以内的素数:
");
System.out.print("2"+"3");
intc=2;
for(inti=3;i<=100;i++)
for(intj=2;j<=(int)Math.sqrt(i);j++){
if(i%j==0)break;
if(j>=(int)Math.sqrt(i)){
System.out.print(i+"");
c++;
if(c%10==0)
System.out.println();
}
}
}
}
6.(统计正数和负数的个数然后计算这些数的平均值)编写程序,读入未指定个数的整数,分别判断读入的正数和负数的个数,然后计算这些输入值的总和及其平均值(不对0计数),当输入为0时候,表示程序结束。
将平均值以浮点数的形式显示。
(20分)
下面是一个运行示例:
Enteranintvalue,theprogramexitsiftheinputis0:
12-130
Thenumberofpositivesis3
Thenumberofnegativesis1
Thetotalis5
Theaverageis1.25
7.(财务程序):
假设某个大学今年的学费是10000元,学费以每年5%速度增加,编写程序计算10年后的学费以及现在开始的10年后算起,4年内总学费是多少?
(20分)
publicstaticvoidmain(String[]args){
inta=10000;
doublew;
doublesum=0;
doublep;
for(intn=1;n<10;n++){
w=a*Math.pow(1+0.05,n);
sum+=w;
if(n==9){
System.out.println(""+w);
}
if(n==3){
p=a+sum;
System.out.println(""+p);
}
}
}
}
8.编写程序,提示用户输入学生的个数,每个学生的姓名和分数,最后显示得分最高学生的姓名和分数和第二高分学生姓名和分数(20分)
importjava.io.*;
importjava.util.*;
publicclasslianxi50{
publicstaticvoidmain(String[]args){
Scannerss=newScanner(System.in);
String[][]a=newString[5][6];
for(inti=1;i<6;i++){
System.out.print("请输入第"+i+"个学生的学号:
");
a[i-1][0]=ss.nextLine();
System.out.print("请输入第"+i+"个学生的姓名:
");
a[i-1][1]=ss.nextLine();
for(intj=1;j<4;j++){
System.out.print("请输入该学生的第"+j+"个成绩:
");
a[i-1][j+1]=ss.nextLine();
}
System.out.println("\n");
9.使用while循环找出满足n*n大于12000的最小整数(15分)。
publicstaticvoidmain(String[]args){
intn=1;
while(n*n<12000){
n++;
}
System.out.println(""+n);
}
}
11.计算π(25分)
使用下列数列可以近似计算π:
π=4*(1-1/3+1/5-1/7+1/9-1/11+………+1/(2*i-1)-1/2*i+1)
编写程序,显示当i=10000,20000,…..的时候π的值。
12.(完全数)如果一个正整数等于除以它本身之外所有其他所有除数之和,就称之为完全数。
例如:
6是第一个完全数,因为6=1+2+3,下一个完全数是28=1+2+4+7+14;1000以下完全数有4个,编写程序找出这四个完全数。
(25分)
publicstaticvoidmain(String[]args){
intsum;
for(inti=1;i<1000;i++)
{
sum=0;
for(intj=1;j<=i/2;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(i==sum){
System.out.println(""+i);
}
}
}
}
13.(游戏:
石头、剪、子布)对于分支语句练习7的石头-剪子-布程序,修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机连续赢两次以上。
(25分)
14.(最大数的出现次数)编写程序读取整数,找出他们的最大数,然后计算该数出现的次数。
键入输入0表示结束。
(20分)假定输入是3525550,程序找出最大数5,而5出现的次数是4.
15.假设你投资10000美元买一张CD,年获利率为5.75%,一个月后,这张CD的价值为:
10000+10000*5.75/1200=10047.91
两个月后,这张CD的价值为:
10047.91+10047.91*5.75/1200=10096.06
三个月后,这张CD的价值为:
10096.06+10096.06*5.75/1200=10144.43
以此类推:
编写程序,提示用户输入一个总数(例如10000),年获利率(例如5.75),以及月份数(例如18),然后显示表格,如下面运行示例所示:
Entertheintialdepositamout:
1000
Enterannualpercentageyield:
5.75
Entermaturityperiod(numberofmonth):
18
MonthCDValue
110047.91
210096.06
…
1710846.56
1810898.54
4.方法练习
1(数学:
五角数)一个五角数被定义为n(3n-1)/2,其中n=1,2….所以开始几个数字就是1,5,12,22,…编写下面方法返回一个五角数
publicintgetPentagonalNumber(intn)
编写测试程序显示前100个五角数,每行显示10个。
2.(求一个整数的各位数字之和)编写一个方法,计算一个整数各位数字之和:
publicintsumDigits(longn)
例如sumDigits(234)返回9
提示:
用求余运算符%提取数字,用除号/提取取出来的数字,反复循环(234%10=4234/10=23)
3.(回文整数)编写两个方法
publicintreverse(intnum)//返回反向倒置数//reverse(456)return654
publicBooleanisPalindrome(intnumber)
使用reverse方法实现isPalindrome。
如果一个数字的反向倒置数和他顺向数一样,这个数字称作回文,编写测试程序,提示用户输入一个整数,然后报告这个数字是否回文。
4.(显示模式)编写方法显示如下模式
1
21
321
…
nn-1321
5(回文素数)回文素数,是指一个数既是回文又是素数。
例如131,313,757,编写程序显示前100个回文素数,每行显示10个数并且准确对齐。
例如:
2357….
313353373383
6.(反素数)反素数是指将一个数字逆向之后也是一个素数的非回文素数,例如:
17是个素数,71也是素数,所以17和71是反素数。
编写程序显示前100个反素数,每行显示10个数并且准确对齐。
7.(梅森素数),如果一个素数可以写成2P-1的形式,其中p是某个正整数,那么这个素数就是梅森素数,编写程序写出p<=31的所有梅森素数,然后显示如下输出结果:
P2P-1
23
37
531
….
8.(游戏:
)掷骰子游戏是赌场非常流行的骰子游戏,编写程序玩这个游戏的另一种玩法,如下所示:
掷两个骰子,每个骰子有六个面,分别表示值1,2….6,检查这两个骰子的和,如果和为2,3,或者12(称为掷骰子),你就输了;如果是7或者11(称为自然),你就赢了,但如果和是其他数字,例如4,5,6,8,9或者10,就确定了一个点,继续掷骰子,直到掷出一个7或者掷出和刚才相同的点数,如果掷出是7,你就输了,如果掷出的点数和你前一次掷出的点数相同,你就赢了。
程序扮演一个独立的玩家,下面是运行示例。
Yourolled5+6=11
Youwin
Yourolled1+2=3
Youlose
Yourolled4+4=8
Pointis8
Yourolled6+2=8
Youwin
Yourolled3+2=5
Pointis5
Yourolled2+5=7
Youlose
10.(摄氏度和华氏度之间的转换)编写一个类,包含下面两个方法:
//转换摄氏温度到华氏温度
PublicdoublecelsiusToFahrenheit(doublecelsius)
//转换华氏温度到摄氏温度
PublicdoublefahrenheitTocelsius(doublefahrenheit)
转换公式如下:
华氏温度=(9.0/5)*摄氏温度+32
摄氏度华氏度华氏度摄氏度
40.0104.0120.048.89
39.0102.2110.043.33
...
32.089.640.04.44
31.087.830.0-1.11
Publicstaticvoidmain(Stringargs){
printChars(“1”,”z”,10);
publicstaticvoidprintChar(charch1,charch2,intnumberPerLine){
for(inti=ch1;m=1;i<=ch2;i++;m++){
if(m%numberPerLine==0){
System.out.println((char)i);
}else{
System.out.println((char)i+””);
}
}
}
12.编写一个方法计算下列级数
m(i)=1/2+2/3+…+i/i+1
编写测试程序显示下面的表格
Im(i)
10.5000
21.667
。
。
。
1916.4023
2017.3546
13.使用下面的方法头编写一个方法,返回一年的天数
PulicintnumberOfDaysInAYear(intyear)
编写一个测试程序,显示从2000到2010年每年的天数
PulicstaticintnumberOfDaysInAYear(intyear){
returnyear;
if(year%4==0&&year%100!
=0){
System.out.println(year+”有”+366+”天.”);
}else{
System.out.println(year+”有”+365+”天.”);
}
Publicstaticvoidmain(Stringargs[]){
inti=intnumberOfDaysInAYear(intyear);
for(i=2000;i<=2010;i++){
System.out.println(year);
}
14.使用Math类的sqrt方法编写程序,打印如下表格
数字平方根
10.0000
21.4142
。
。
。
Publicstaticvoidmain(Stringargs[]){
System.out.println(“数字平方根”);
doublei,temp;
for(i=o;i<=20;i=i+2){
temp=Math.sqrt(i);
System.out.println(“i”+””+temp);
}
}
}
15(使用)三角函授方法,打印下面的表格,显示0°到360°之间,角度相隔10°的正弦和余弦值,保留小数点后4位。
角度正弦值余弦值
00.00001.0000
100.17360.9848
…
350-0.17360.9848
3600.00001.0000
16编写方法,使用下面方法头显示n*n的矩阵:
PublicvoidprintMatrix(intn)
每个元素都是随机产生的0或者1,编写一个测试程序打印如下所示的3*3矩阵
010
000
111
PublicstaticvoidprintMatrix(intn){
System.out.println( ) ;
Publicstaticvoidmain(Stringargs[]){
Inta[][]=newa[n][n] ;
}
inti,j ;
for(i=0 ;i<3 ;i++)
for(j=0 ;j<3 ;j++)
5.数组部分练习
1.(倒置输入的数)编写程序,读取10个整数,然后按照和读取顺序相反的顺序将他们显示出来。
importjava.util.*;
publicclasslianxi31{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
System.out.println(“请输入10个整数:
”);
Stringstr=in.nextString();
StringBuffern=newStringBuffer(str);
For(inti=1;i<10;i++){
n.reverse();
System.out.println(n);
}
}
}
2.(计算数字出现的次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数,假定输入是以0结束,下面是这个程序的运行示例。
Entertheintegersbetweens1and100:
256543234320
2occurs2times
3occurs1time
4occurs1time
5occurs2times
6occurs1time
23occurs1time
43occurs1time
importjava.util.*;
publicclasslianxi47{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
intn=1,num;
while(n<=7){
do{
System.out.print("请输入1--100之间的整数:
");
intnum=in.nextInt();
}while(num<1||num>100);
for(inti=1;i<=num;i++)
{System.out.print("*");
}
System.out.println();
n++;;}
}
}
publicstaticvoidmain(Stringargs[]){
int[]a=newinta[10];
3(分析成绩)编写一个程序,读入个数不确定考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数低于平均分,输入一个负数表示输入的结束。
假设成绩最高分是10分。
4(打印不同的数)编写一个程序,读入10个数,并且显示互不相同的数(即一个数出现多次,只显示一次)提示:
读入一个数,如果是新数,则它存储在数组中,如果该数已经在数组中,则忽略它。
下面是这个程序的运行示例。
Enterthenumber:
1232163452
Thedistinctnumbersare:
123645
Publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
System.out.println(“请读入10个数:
”);
doubles=reader.nextDouble();
5编写一个程序,生成0-9之间的100个随机数,然后显示每个数字出现的次数。
6(求数组的平均值)编写两个重载的方法,使用下面的方法头返回一个数组的平均数:
publicintaverage(int[]array)
publicdoubleaverage(double[]array)
7编写一个方法,使用下面的方法头求出一个整数数组中的最小元素
publicdoublemin(double[]array)
编写测试程序,提示用户输入十个数字,调用这个方法返回最小值,下面是这个程序的运行示例:
Entertennumber :
1.92.53.721.563452
Theminimumnumberis1.5
8(找出最小元素的下标),编写一个方法,求出整数数组中最小元素的下标,如果这样元素个数大于1,则返回最小的下标。
使用下面的方法头;
publicintindexOfSmallestElement(double[]array)
编写测试程序,提示用户输入十个数字,调用这个方法返回最小元素的下标,然后显示这个下标值。
9(数组倒置)编写一个方法,实现数组的倒置,方法将传递到实参数组倒置,然后返回这个数组。
编写一个测试程序,提示用户输入十个数字,调用这个方法倒置这个数组,然后显示这个数组。
publicint[]reverse(int[]array)
10(对学生进行排序)编写一个程序,提示用户输入学生个数,学生姓名和他们成绩,然后按照学生成绩降序打印学生的姓名
Publicstaticvoidmain(Stringargs[]){
11八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。
该问题是十九世纪著名的数学家高斯1850年提出:
在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
高斯认为有76种方案。
1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。
计算机发明后,有多种方法可以解决此问题。
编写程序给出一个解决方案
12一个学校有100个储物柜和100个学生。
所有储物柜在上学的第一天都是关着的。
随着学生进来,第一个学生用s1表示,打开每个柜子,然后第二个学生,用s2表示,从第二个柜子开始,第二个柜子用L2表示,然后关闭其他的柜子。
学生s3从第三个柜子开始,然后改变每个柜子(如果它是开着就关上,如果它是关上就打开)。
学生s4从柜子L4开始,然后改变每个柜子。
学生s5从柜子L5开始,然后改变每个柜子。
以此类推,直到s100改变L100为止。
在所有学生经过教学楼并改变了柜子后,哪些柜子是开着的,编写程序找出答案
提示:
使用存放100个布尔类型元素的数组,每个元素表明一个柜子是开的还是关的,初始状态,所有柜子都是关的。
13.选择排序(Selectionsort)是一种简单直观的排序算法。
它的工作原理如下。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
写一个排序方法,方法头如下所示:
publicint[]sort(int[]array)
对数组进行从小到大进行排序,编写测试程序,读取10个int类型数字,调用该方法,然后显示排好序的数组。
14.(完全相同的数组)如果两个数组list1和list2长度相同,而且对于每个i,list1[i]都等于list2[i],则认为list1和list2是完全相同的,使用下面方法头编写一个方法,如果list1和list2完全相同,那么这个方法返回true
publicBooleanequal(int[]list1int[]list2)
编写一个测试程序,提示用户输入两个整数数列,然后显示这两个整数数列是否完全相同。
15.(数学方面:
组合)编写一个程序,提示用户输入10个整数,然后显示从10个数中选出两个数的所有组合
16.(模式识别方面,四个连续相等的数)编写下面的方法,测试某个数组中是否有四个连续的值相同的数字
publicBooleanisConsecutiveFour(int[]values)
编写测试程序,提示用户输入一个整数数列,如果这个数列有四个连续的具有相同值的数,那就显示true,否则显示false。
二维数组
17编写一个方法,求整数矩阵所有整数之和,使用下列方法头:
publicdoublesumMatrix(int[][]m)
编写一个测试程序,读取一个3*3的矩阵,然后显示所有元素的和。
下面是一个运行示例:
Entera3-by-3matrixrowbyrow :
123
456
789
Sumofmatrixis136
18编写一个方法,求n*n矩阵主对角线所有整数之和,使用下列方法头
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三次 Java 练习题
![提示](https://static.bdocx.com/images/bang_tan.gif)