第三次Java练习题分解.docx

上传人:b****8 文档编号:9390111 上传时间:2023-05-18 格式:DOCX 页数:27 大小:221.86KB
下载 相关 举报
第三次Java练习题分解.docx_第1页
第1页 / 共27页
第三次Java练习题分解.docx_第2页
第2页 / 共27页
第三次Java练习题分解.docx_第3页
第3页 / 共27页
第三次Java练习题分解.docx_第4页
第4页 / 共27页
第三次Java练习题分解.docx_第5页
第5页 / 共27页
第三次Java练习题分解.docx_第6页
第6页 / 共27页
第三次Java练习题分解.docx_第7页
第7页 / 共27页
第三次Java练习题分解.docx_第8页
第8页 / 共27页
第三次Java练习题分解.docx_第9页
第9页 / 共27页
第三次Java练习题分解.docx_第10页
第10页 / 共27页
第三次Java练习题分解.docx_第11页
第11页 / 共27页
第三次Java练习题分解.docx_第12页
第12页 / 共27页
第三次Java练习题分解.docx_第13页
第13页 / 共27页
第三次Java练习题分解.docx_第14页
第14页 / 共27页
第三次Java练习题分解.docx_第15页
第15页 / 共27页
第三次Java练习题分解.docx_第16页
第16页 / 共27页
第三次Java练习题分解.docx_第17页
第17页 / 共27页
第三次Java练习题分解.docx_第18页
第18页 / 共27页
第三次Java练习题分解.docx_第19页
第19页 / 共27页
第三次Java练习题分解.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第三次Java练习题分解.docx

《第三次Java练习题分解.docx》由会员分享,可在线阅读,更多相关《第三次Java练习题分解.docx(27页珍藏版)》请在冰点文库上搜索。

第三次Java练习题分解.docx

第三次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年后算起,4年内总学费是多少?

(20分)

voidmain(String[]args){

inta=10000;

 

double

double

w;

sum=0;

double

for

P;

n=1;n<10;n++){

(int

w=a*Math.pow(1+0.05,n);sum+=w;

(n==9){

System.out.pnntln(

if

""+w);

}

}

8.编写程序,

}if

(n==3){

p=a+sum;

System.out.pnntln(

""+P);

提示用户输入学生的个数,每个学生的姓名和分数,最后显示得分最高学生的

姓名和分数和第二高分学生姓名和分数(

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.printin("\n");

20分)

9.使用while循环找出满足n*n大于12000的最小整数(15分)。

Publicstaticvoidmain(String[]args){

intn=1;

while(n*n<12000){

 

 

System.out.println(

""+n);

}

11.计算n

使用下列数列可以近似计算n:

n=4*(1-1/3+1/5-1/7+1/9-1/11+

(25分)

+1/(2*i-1)-1/2*i+1)

编写程序,显示当i=10000,20000,…..100000的时候n的值。

12.(完全数)如果一个正整数等于除以它本身之外所有其他所有除数之和,就称之为完全■

数。

例如:

6是第一个完全数,因为6=1+2+3,下一个完全数是28=1+2+4+7+14;1000以下完全数有4个,编写程序找出这四个完全数。

(25分)

Publicstaticvoidmain(String[]args){

int

for

{

sum;

(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.pnntln(

""+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

10096.06I

17

10846.56

10898.54

18

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=23)

3.(回文整数)编写两个方法~

(234%10=4

publicintreversedntnum)//返回反向倒置数//reverse(456)return654

publicBooleanisPalindrome(intnumber)

使用reverse方法实现isPalindrome。

如果一个数字的反向倒置数和他顺向数一样,数字称作回文,编写测试程序,提示用户输入一个整数,然后报告这个数字是否回文。

这个

4.(显示模式)编写方法显示如下模式

nn-1

 

前100个回文素数,每行显示10个数并且准确对齐。

例如:

2357….

313353373383

6.(反素数)反素数是指将一个数字逆向之后也是一个素数的非回文素数,例如:

17是个素数,

71也是素数,所以17和71是反素数。

编写程序显示前_100个反素数,每行显示_10个数并

且准确对齐。

P

7.(梅森素数),如果一个素数可以写成2-1的形式,其中P是某个正整数,那么这个素数就

是梅森素数,编写程序写出P<=31的所有梅森素数,然后显示如下输出结果:

P

2

3

5

西

3

7

31

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

Youlose10.(摄氏度和华氏度之间的转换)编写一个类,包含下面两个方法:

〃转换摄氏温度到华氏温度

PublicdoublecelsiusToFahrenheit(doubleCelsius)//转换华氏温度到摄氏温度

PublicdoublefahrenheitTocelsius(doublefahrenheit)

转换公式如下:

华氏温度

=(9.0/5)

*摄氏温度

+32

摄氏度

华氏度

华氏度

摄氏度

40.0

104.0

120.0

48.89

39.0

102.2

110.0

43.33

32.0

89.6

40.0

4.44

31.0

87.8

30.0

-1.11

Publicstaticvoidmain(Stringargs){

printChars(T,"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'

编写测试程序显示下面的表格

m(i)

0.5000

1.667

19

20

16.4023

17.3546

13.使用下面的方法头编写一个方法,返回一年的天数

PulicintnumberOfDavsInAYear(intyear)

编写一个测试程序,显示从2000到2010年每年的天数

PulicstaticintnumberOfDayslnAYear(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);

r

0.0000

1.4142

PublicstaticvoidprintMatrix(intn){

System.out.println();

Publicstaticvoidmain(Stringargs[]){Inta[][]=newa[n][n];

L_

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

6occurs1time23occurs1time

43occurs1timeimportjava.util.*;

publicclasslianxi47{

publicstaticvoidmain(String[]args){

Scannerin=newScanner(System.in);

intn=1,num;

while(*=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];

(分析成绩)编写一个程序,读入个数不确定考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数低于平均分,输入一个负数表示输入的结束。

假设成绩最高分是10分。

(打印不同的数)编写一个程序,读入10个数,并且显示互不相同的数(即一个数出现多次,只显示一次)提示:

读入一个数,如果是新数,则它存储在数组中,如果该数已

经在数组中,则忽略它。

下面是这个程序的运行示例。

Enterthenumber:

1232163452

Thedistinetnumbersare:

123645

Publicstaticvoidmain(Stringargs[]){

Scannerreader=newSeanner(System.in);

System.out.println(请读入10个数:

”);

doubles=reader.nextDouble();

编写一个程序,生成__0-9之间的100个随机数,然后显示每个数字出现的次数。

(求数组的平均值)编写两个重载的方法,使用下面的方法头返回一个数组的平均数:

Publicintaverage(int[]array)

publicdoubleaverage(double[]array)

编写一个方法,使用下面的方法头求出一个整数数组中的最小元素

Publicdoublemin(double[]array)

编写测试程序,提示用户输入十个数字,调用这个方法返回最小值,下面是这个程序的

运行示例:

Entertennumber:

1.92.53.721.563452

Theminimumnumberis1.5

(找出最小元素的下标),编写一个方法,求出整数数组中最小元素的下标,如果这样元

素个数大于1,则返回最小的下标。

使用下面的方法头;

PublicintindexOfSmallestElement(double[]array)|

编写测试程序,提示用户输入十个数字,调用这个方法返回最小元素的下标,然后显示

这个下标值。

(数组倒置)编写一个方法,实现数组的倒置,方法将传递到实参数组倒置,然后返回这个数组。

编写一个测试程序,提示用户输入十个数字,调用这个方法倒置这个数组,然后显示这个数组。

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.(完全相同的数组)如果两个数组Iist1和Iist2长度相同,而且对于每个i,Iist1[i]都等于

list2[i],则认为list1和list2是完全相同的,使用下面方法头编写一个方法,如果list1和list2

完全相同,那么这个方法返回true

publicBooleanequal(int[]Iist1int[]list2)

编写一个测试程序,提示用户输入两个整数数列,然后显示这两个整数数列是否完全相同。

15.

10个整数,然后显示从10个数中选

(数学方面:

组合)编写一个程序,提示用户输入出两个数的所有组合

16.(模式识别方面,四个连续相等的数)编写下面的方法,测试某个数组中是否有四个连续的值相同的数字

PublicBooleanisConsecutiveFour(int[]values)

编写测试程序,提示用户输入一个整数数列,如果这个数列有四个连续的具有相同值的数,那就显示true,否则显示false。

二维数组

456

789

Sumofmatrixis136|

18编写一个方法,求n*n矩阵主对角线所有整数之和,使用下列方法头:

PublicdoublesumMajorDiagonal(int[][]m)

编写一个测试程序,读取一个3*3的矩阵,然后显示主对角线所有元素的和。

下面是

一个运行示例:

Entera3-by-3matrixrowbyrow:

123

456

789

Sumoftheelementinthemajordiagonalis15

importjava.util.*;

publicclasslianxi29{

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

int[][]a=newint[3][3];

System.out.printing请输入9个整数:

");

for(inti=0;i<3;i++){

for(intj=0;j<3;j++){

a[i][j]=s.nextlnt();

}

}

System.out.println(”输入的3*3矩阵是:

");

for(inti=0;i<3;i++){

for(intj=0;j<3;j++){

System.out.print(a[i][j]+"");

}

System.out.println();

}

intsum=0;

for(inti=0;i<3;i++){

for(intj=0;j<3;j++){

if(i==j){

sum+=a[i][j];

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2