java程序及答案.docx
《java程序及答案.docx》由会员分享,可在线阅读,更多相关《java程序及答案.docx(44页珍藏版)》请在冰豆网上搜索。
![java程序及答案.docx](https://file1.bdocx.com/fileroot1/2023-1/10/249e03a4-56c1-41a1-8017-bb1aaca741b0/249e03a4-56c1-41a1-8017-bb1aaca741b01.gif)
java程序及答案
1,编写程序,判断给定的某个年份是否是闰年。
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
importjava.util.Scanner;
classBissextile{
publicstaticvoidmain(String[]arge){
System.out.print("请输入年份");
intyear;//定义输入的年份名字为“year”
Scannerscanner=newScanner(System.in);
year=scanner.nextInt();
if(year<0||year>3000){
System.out.println("年份有误,程序退出!
");
System.exit(0);
}
if((year%4==0)&&(year%100!
=0)||(year%400==0))
System.out.println(year+"isbissextile");
else
System.out.println(year+"isnotbissextile");
}
}
2,给定一个百分制的分数,输出相应的等级。
90分以上A级
80~89B级
70~79C级
60~69D级
60分以下E级
importjava.util.Scanner;
classMark{
publicstaticvoidmain(String[]args){
System.out.println("请输入一个分数");
//定义输入的分数为“mark”,且分数会有小数
doublemark;
Scannerscanner=newScanner(System.in);
mark=scanner.nextDouble();
//判断是否有输入错误。
if(mark<0||mark>100){
System.out.println("输入有误!
");
System.exit(0);
}
/*判断分数的等级
90分以上者A级,80~89分者B级,70~79分者C级,60~69者D级,60分以下E级*/
if(mark>=90)System.out.println("thismarkisgrade\'A\'");
elseif(mark>=80)System.out.println("thismarkisgrade\'B\'");
elseif(mark>=70)System.out.println("thismarkisgrade\'C\'");
elseif(mark>=60)System.out.println("thismarkisgrade\'D\'");
elseSystem.out.println("thismarkisgrade\'E\'");
}
}
3,编写程序求1+3+5+7+……+99的和值。
classhe{
publicstaticvoidmain(String[]args){
intnumber=1;//初始值1,以后再+2递增上去
intsum=0;
for(;number<100;number+=2){sum+=number;}
System.out.println("1+3+5+7+……+99="+sum);
}
}
4、利用for循环打印9*9表?
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
1*5=52*5=103*5=154*5=205*5=25
1*6=62*6=123*6=184*6=245*6=306*6=36
1*7=72*7=143*7=214*7=285*7=356*7=427*7=49
1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
//循环嵌套,打印九九乘法表
publicclassNineNine{
publicstaticvoidmain(String[]args){
System.out.println();
for(intj=1;j<10;j++){
for(intk=1;k<10;k++){//老师的做法,判断语句里的k<=j,省去下列的if语句。
if(k>j)break;//此处用continue也可以,只是效率低一点
System.out.print(""+k+"X"+j+"="+j*k);
}
System.out.println();
}
}
}
6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身,
例如:
153=1*1*1+3*3*3+5*5*5
classDafodilNumber{
publicstaticvoidmain(String[]args){
System.out.println("以下是所有的水仙花数");
intnumber=100;//由于水仙花数是三位数,故由100开始算起
inti,j,k;//ijk分别为number的百位、十位、个位
for(intsum;number<1000;number++){
i=number/100;j=(number-i*100)/10;k=number-i*100-j*10;
sum=i*i*i+j*j*j+k*k*k;
if(sum==number)System.out.println(number+"isadafodilnumber!
");
}
}
}
7、求a+aa+aaa+.......+aaaaaaaaa=?
其中a为1至9之中的一个数,项数也要可以指定。
importjava.util.Scanner;
classMultinomial{
publicstaticvoidmain(String[]args){
inta;//定义输入的a
inthowMany;//定义最后的一项有多少个数字
Scannerscanner=newScanner(System.in);
System.out.println("请输入一个1~9的a值");
a=scanner.nextInt();
System.out.println("请问要相加多少项?
");
howMany=scanner.nextInt();
intsum=0;
inta1=a;//用来保存a的初始值
for(inti=1;i<=howMany;i++){
sum+=a;
a=10*a+a1;//这表示a的下一项
//每次a的下一项都等于前一项*10,再加上刚输入时的a;注意,这时的a已经变化了。
}
System.out.println("sum="+sum);
}
}
8、求2/1+3/2+5/3+8/5+13/8.....前20项之和?
classSum{
publicstaticvoidmain(Sting[]args){
doublesum=0;
doublefenZi=2.0,fenMu=1.0;//初始的分子(fenZi)=2,分母(fenMu)=1
for(inti=1;i<=20;i++){
sum+=fenZi/fenMu;
fenMu=fenZi;//下一项的分母=上一项的分子
fenZi+=fenMu;//下一项的分子=上一项的分子加分母
}
System.out.println("sum="sum);
}
}
9、利用程序输出如下图形:
*
***
*****
*******
*****
***
*
classAsterisk{
publicstaticvoidmain(String[]args){
for(inti=1;i<=13;i+=2){
for(intj=1;j<=i&&i+j<=13;j++){System.out.print("*");}
System.out.println();//换行
}
}
}
11、计算圆周率
PI=4-4/3+4/5-4/7.......
打印出第一个大于3.1415小于3.1416的值
classPi{
publicstaticvoidmain(String[]args){
doublepi=0;//定义初始值
doublefenZi=4;//分子为4
doublefenMu=1;//第一个4,可看作分母为1的分式,以后的分母每次递增2
for(inti=0;i<1000000000;i++){//运行老久,减少循环次数会快很多,只是精确度小些
pi+=(fenZi/fenMu);
fenZi*=-1.0;//每项分子的变化是+4,-4,+4,-4....
fenMu+=2.0;//分母的变化是1,3,5,7,....每项递加2
}
System.out.println(pi);
}
}
输出结果为pi=3.1415926525880504,应该不精确
12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值
112358132134
规律:
一个数等于前两个数之和
//计算斐波那契数列(Fibonacci)的第n个值
publicclassFibonacci{
publicstaticvoidmain(Stringargs[]){
intn=Integer.parseInt(args[0]);
intn1=1;//第一个数
intn2=1;//第二个数
intsum=0;//和
if(n<=0){
System.out.println("参数错误!
");
return;
}
if(n<=2){
sum=1;
}else{
for(inti=3;i<=n;i++){
sum=n1+n2;
n1=n2;
n2=sum;
}
}
System.out.println(sum);
}
}
//计算斐波那契数列(Fibonacci)的第n个值
//并把整个数列打印出来
publicclassFibonacciPrint{
publicstaticvoidmain(Stringargs[]){
intn=Integer.parseInt(args[0]);
FibonacciPrintt=newFibonacciPrint();
for(inti=1;i<=n;i++){
t.print(i);
}
}
publicvoidprint(intn){
intn1=1;//第一个数
intn2=1;//第二个数
intsum=0;//和
if(n<=0){
System.out.println("参数错误!
");
return;
}
if(n<=2){
sum=1;
}else{
for(inti=3;i<=n;i++){
sum=n1+n2;
n1=n2;
n2=sum;
}
}
System.out.println(sum);
}
}
13、求1-1/3+1/5-1/7+1/9......的值。
a,求出前50项和值。
b,求出最后一项绝对值小于1e-5的和值。
publicclassSum{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
doublefenZi=1;
doublefenMu=1;
doublesum=0;
for(inti=0;i<50;i++){
sum+=fenZi/fenMu;
fenZi*=-1.0;
fenMu+=2;
带“//”是第二问所需语句。
//doublelastNumber=fenZi/fenMu;
//System.out.println(sum);
//doublet=Math.abs(lastNumber);
//if(t<1e-5){
//System.out.println(t);
//System.out.println(sum);
//}
}
System.out.println(sum);
}
}
15、在屏幕上打印出n行的金字塔图案,如,若n=5,则图案如下:
*
***
*****
*******
*********
//打印金字塔图案
publicclassPrintStar{
publicstaticvoidmain(Stringargs[]){
intcol=Integer.parseInt(args[0]);
for(inti=1;i<=col;i++){//i表示行数
//打印空格
for(intk=0;kSystem.out.print("");
}
//打印星星
for(intm=0;m<2*i-1;m++){
System.out.print("*");
}
System.out.println();
}
}
}
16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和
打印出所有的可能
//任何一个大于六的偶数可以拆分成两个质数的和
//打印出所有的可能
publicclassGedebahe{
publicstaticvoidmain(Stringargs[]){
intnum=Integer.parseInt(args[0]);
if(num<=6){
System.out.println("参数错误!
");
return;
}
if(num%2!
=0){
System.out.println("参数错误!
");
return;
}
Gedebaheg=newGedebahe();
//1不是质数,2是偶数,因此从3开始循环
for(inti=3;i<=num/2;i++){
if(i%2==0){//如果为偶数,退出本次循环
continue;
}
//当i与num-i都为质数时,满足条件,打印
if(g.isPrime(i)&&g.isPrime(num-i)){
System.out.println(i+"+"+(num-i)+"="+num);
}
}
}
数组
1.定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,
最小值,平均值,和值,并输出出来。
代码1:
classArrayNumber{
publicstaticvoidmain(String[]args){
int[]arrayNumber;
arrayNumber=newint[10];
System.out.println("以下是随机的10个整数:
");
//填入随机的10个整数
for(inti=0;iarrayNumber[i]=(int)(100*Math.random());
System.out.print(arrayNumber[i]+"");
}
System.out.println();
intmax=arrayNumber[0];
intmin=arrayNumber[0];
intsum=0;
for(inti=0;iif(maxmax=arrayNumber[i];//求最大值
if(min>arrayNumber[i])
min=arrayNumber[i];//求最小值
sum+=arrayNumber[i];
}
System.out.println("其中Max="+max+",Min="+min+",Sum="+sum+",Avg="+sum/10.0);
}
}
代码2:
publicclassArray{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intarray[]=newint[10];//定义数组
doublesum=0.0;//所有元素和
doubleavg=0.0;//平均值
System.out.println("得到的随机数组为:
");
//得到随机数并输出
for(inti=0;i<10;i++){
array[i]=(int)(Math.random()*20);
System.out.print(array[i]+"");
}
//冒泡排序,也可用Arrays.sort()方法。
for(inti=0;ifor(intj=array.length-1;j>0;j--){
inttemp;
if(array[j]>array[j-1]){
temp=array[j];
array[j]=array[j-1];
array[j-1]=temp;
}
}
}
//求和
System.out.println("\n数组由大到小排序:
");
for(inti=0;iSystem.out.print(array[i]+"");
sum=sum+array[i];
}
//输出相关信息
System.out.println("\n数组的最大值为:
"+array[0]);
System.out.println("数组的最小值为:
"+array[array.length-1]);
System.out.println("数组所有元素和为"+sum);
avg=sum/array.length;
System.out.println("数组所有元素平均值为"+avg);
}
}
2.定义一个int型的一维数组,包含10个元素,分别赋值为1~10,然后将数组中的元素都向前移一个位置,
即,a[0]=a[1],a[1]=a[2],…最后一个元素的值是原来第一个元素的值,然后输出这个数组。
代码1:
publicclassArraySort{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intarray[]=newint[10];
System.out.println("原数组为:
");
for(inti=0;iarray[i]=i;
System.out.print(array[i]+"");
}
System.out.println("\n移位后数组为:
");
inttemp=0;
temp=array[0];
array[0]=array[1];
array[1]=array[2];
array[2]=array[3];
array[3]=array[4];
array[4]=array[5];
array[5]=array[6];
array[6]=array[7];
array[7]=array[8];
array[8]=array[9];
array[9]=temp;
for(inti=0;iSystem.out.print(array[i]+"");
}
}
}
代码2:
publicclassArraySort{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intarray[]=newint[10];
System.out.println("原数组为:
");
for(inti=0;iarray[i]=i;
System.out.print(array[i]+"");
}
System.out.println("\n移位后数组为:
");
inttemp=0;
temp=array[0];//将array[0]的值赋给temp;
//将array[0]到array[8]的值前移;
for(inti=0;iarray[i]=array[i+1];
}
array[9]=temp;//将原array[0]的值赋给array[9]
for(inti=0;iSystem.out.print(array[i]+"");
}
}
}
3.定义一个int型的一维数组,