Java基础编程题.docx
《Java基础编程题.docx》由会员分享,可在线阅读,更多相关《Java基础编程题.docx(17页珍藏版)》请在冰豆网上搜索。
Java基础编程题
50道JAVA基础编程练习题
【程序1】
题目:
古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21....
publicclassProg1{
publicstaticvoidmain(String[]args){
intn=10;
"第"+n+"个月兔子总数为"+fun(n));
}
privatestaticintfun(intn){
if(n==1||n==2)
return1;
else
returnfun(n-1)+fun(n-2);
}
}
【程序2】
题目:
判断101-200之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
publicclassProg2{
publicstaticvoidmain(String[]args){
intm=1;
intn=1000;
intcount=0;
importclassProg7_1{
publicstaticvoidmain(String[]args){
"请输入一串字符:
");
Scannerscan=newScanner;
Stringstr=();
;
publicclassProg7_2{
publicstaticvoidmain(String[]args){
"请输入一行字符:
");
Scannerscan=newScanner;
Stringstr=();
();
count(str);
}
.a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:
关键是计算出每一项的值。
importclassProg8{
publicstaticvoidmain(String[]args){
"求s=a+aa+aaa+aaaa+...的值,请输入a的值:
");
Scannerscan=newScanner.useDelimiter("\\s*");
程找出1000以内的所有完数。
publicclassProg9{
publicstaticvoidmain(String[]args){
intn=10000;
compNumber(n);
}
seDelimiter("\\s");
inth=();
intn=();
();
distance(h,n);
}
;
publicclassProg12{
publicstaticvoidmain(String[]args){
"请输入当前利润:
");
longprofit=(key_Input());
"应发奖金:
"+bonus(profit));
}
3月5日
seDelimiter("\\D");
seDelimiter("\\D");
"请输入三个数:
");
intx=();
inty=();
intz=();
();
"排序结果:
"+sort(x,y,z));
}
.求出这个数列的前20项之和。
程序分析:
请抓住分子与分母的变化规律。
publicclassProg20{
publicstaticvoidmain(String[]args){
doublen1=1;
doublen2=1;
doublefraction=n1/n2;
doubleSn=0;
for(inti=0;i<20;i++){
doublet1=n1;
doublet2=n2;
n1=t1+t2;
n2=t1;
fraction=n1/n2;
Sn+=fraction;
}
}
}
【程序21】
题目:
求1+2!
+3!
+...+20!
的和
程序分析:
此程序只是把累加变成了累乘。
publicclassProg21{
publicstaticvoidmain(String[]args){
longsum=0;
for(inti=0;i<20;i++)
sum+=factorial(i+1);
}
;
publicclassProg25{
publicstaticvoidmain(String[]args){
intn=0;
"请输入一个5位数:
");
BufferedReaderbufin=newBufferedReader(newInputStreamReader);
try{
n=());
}catch(IOExceptione){
();
}finally{
try{
();
}catch(IOExceptione){
();
}
}
palin(n);
}
privatestaticvoidpalin(intn){
intm=n;
int[]a=newint[5];
if(n<10000||n>99999){
"输入的不是5位数!
");
return;
}else{
for(inti=0;i<5;i++){
a[i]=n%10;
n/=10;
}
if(a[0]==a[4]&&a[1]==a[3])
"是一个回文数");
else
"不是回文数");
}
}
}
【程序26】
题目:
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
程序分析:
用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
import.*;
publicclassProg26{
publicstaticvoidmain(String[]args){
Stringstr=newString();
BufferedReaderbufIn=newBufferedReader(newInputStreamReader);
"请输入星期的英文单词前两至四个字母):
");
try{
str=();
}catch(IOExceptione){
();
}finally{
try{
();
}catch(IOExceptione){
();
}
}
week(str);
}
privatestaticvoidweek(Stringstr){
intn=-1;
if().equalsIgnoreCase("Mo")||().equalsIgnoreCase("Mon")||().equalsIgnoreCase("Mond"))
n=1;
if().equalsIgnoreCase("Tu")||().equalsIgnoreCase("Tue")||().equalsIgnoreCase("Tues"))
n=2;
if().equalsIgnoreCase("We")||().equalsIgnoreCase("Wed")||().equalsIgnoreCase("Wedn"))
n=3;
if().equalsIgnoreCase("Th")||().equalsIgnoreCase("Thu")||().equalsIgnoreCase("Thur"))
n=4;
if().equalsIgnoreCase("Fr")||().equalsIgnoreCase("Fri")||().equalsIgnoreCase("Frid"))
n=5;
if().equalsIgnoreCase("Sa")||().equalsIgnoreCase("Sat")||().equalsIgnoreCase("Satu"))
n=2;
if().equalsIgnoreCase("Su")||().equalsIgnoreCase("Sun")||().equalsIgnoreCase("Sund"))
n=0;
switch(n){
case1:
"星期一");
break;
case2:
"星期二");
break;
case3:
"星期三");
break;
case4:
"星期四");
break;
case5:
"星期五");
break;
case6:
"星期六");
break;
case0:
"星期日");
break;
default:
"输入有误!
");
break;
}
}
}
【程序27】
题目:
求100之内的素数
publicclassProg27{
publicstaticvoidmain(String[]args){
intn=100;
"以内的素数:
");
for(inti=2;iif(isPrime(i))
"");
}
}
ength;j++){
if(i==j)sum1+=a[i][j];
if(j==sum2+=a[i][j];
}
"矩阵对角线之和分别是:
"+sum1+"和"+sum2);
}
}
【程序30】
题目:
有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
程序分析:
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
importclassProg30{
publicstaticvoidmain(String[]args){
int[]A=newint[]{0,8,7,5,9,1,2,4,3,12};
int[]B=sort(A);
print(B);
"请输入10个数的数组:
");
Scannerscan=newScanner;
inta=();
();
int[]C=insert(a,B);
print(C);
}
seDelimiter("\\s");
inta=();
intb=();
intc=();
();
if(a
intt=a;
a=b;
b=t;
}
if(aintt=a;
a=c;
c=t;
}
if(bintt=b;
b=c;
c=t;
}
""+b+""+c);
}
}
【程序35】
题目:
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
importclassProg35{
publicstaticvoidmain(String[]args){
"请输入一组数:
");
Scannerscan=newScanner.useDelimiter("\\s");
int[]a=newint[50];
intm=0;
while()){
a[m++]=();
}
();
int[]b=newint[m];
for(inti=0;ib[i]=a[i];
for(inti=0;i<;i++)
for(intj=0;j<;j++)
if(b[j]
inttemp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
for(inti=0;i<;i++)
"");
}
}
【程序36】
题目:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
importclassProg36{
publicstaticvoidmain(String[]args){
finalintN=10;
"请输入10个数的数组:
");
Scannerscan=newScanner;
int[]a=newint[N];
for(inti=0;i<;i++)
a[i]=();
"请输入一个小于10的数:
");
intm=();
();
int[]b=newint[m];
int[]c=newint[N-m];
for(inti=0;ib[i]=a[i];
for(inti=m,j=0;ic[j]=a[i];
for(inti=0;ia[i]=c[i];
for(inti=N-m,j=0;ia[i]=b[j];
for(inti=0;i<;i++)
"");
}
}
【程序37】
题目:
有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
importclassProg37{
publicstaticvoidmain(String[]args){
"请输入一个整数:
");
Scannerscan=newScanner;
intn=();
();
seDelimiter("\\n");
StringstrIn=();
();
char[]ch=();
"共"++"个字符");
}
}
【程序39】
题目:
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
importclassProg39{
publicstaticvoidmain(String[]args){
"请输入一个整数:
");
Scannerscan=newScanner;
intn=();
();
if(n%2==0)
"结果:
"+even(n));
else
"结果:
"+odd(n));
}
CountyDingYuanProvinceAnHui.
;
publicclassProg50{
"+"Name"+"grade1"+"grade2"+"grade3"+"average");
();
for(inti=0;i<5;i++){
(number[i]);
(""+name[i]);
for(intj=0;j<3;j++)
(""+grade[i][j]);
(""+(sum[i]/5));
();
}
();
}
}