2019-2020年java基礎50道經(jīng)典練習題及答案_第1頁
2019-2020年java基礎50道經(jīng)典練習題及答案_第2頁
2019-2020年java基礎50道經(jīng)典練習題及答案_第3頁
2019-2020年java基礎50道經(jīng)典練習題及答案_第4頁
2019-2020年java基礎50道經(jīng)典練習題及答案_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

沃克IT教育JAVA基礎編程練習題

整理:Lemon

【程序1]

題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對

兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,

問每個月的兔子對數(shù)為多少?

程序分析:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....

publicclassProgl{

publicstaticvoidmain(String[]args){

intn=10;

System.out.println("第"+n+"個月兔子總數(shù)為"+fun(n));

}

privatestaticintfun(intn){

if(n==l||n==2)

return1;

else

returnfun(n-1)+fun(n-2);

【程序2】

題目:判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。

程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),

如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)。

publicclassProg2{

publicstaticvoidmain(String[]args){

intm=1;

intn=1000;

intcount=0;

〃統(tǒng)計素數(shù)個數(shù)

for(inti=m;i<n;i++){

if(isPrime(i)){

count++;

System.out.print(i+"");

if(count%10==0){

System.out.printin();

System,out.println();

System.out.println("在"+m+"和"+n+"之間共有"+count+"

個素數(shù)”);

//判斷素數(shù)

privatestaticbooleanisPrime(intn){

booleanflag=true;

if(n==l)

flag=false;

else{

for(inti=2;i<=Math.sqrt(n);i++){

if((n%i)==O||n==l){

flag=false;

break;

}

else

flag=true;

}

}

returnflag;

【程序3】

題目:打印出所有的“水仙花數(shù)",所謂"水仙花數(shù)”是指一個三位數(shù),

其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個"水仙花數(shù)",因

為153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,

十位,百位。

publicclassProg3{

publicstaticvoidmain(String[]args){

for(inti=100;i<1000;i++){

if(isLotus(i))

System.out.print(i+"");

}

System,out.println();

}

//判斷水仙花數(shù)

privatestaticbooleanisLotus(intlotus){

intm=0;

intn=lotus;

intsum=0;

m=n/100;

n-=m*100;

sum=

m=n/10;

n-=m*10;

sum+=m*m*m+n*n*n;

if(sum==lotus)

returntrue;

else

returnfalse;

【程序4】

題目:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。

程序分析:對n進行分解質(zhì)因數(shù),應先找到一個最小的質(zhì)數(shù)k,然后

按下述步驟完成:

⑴如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印

出即可。

⑵如果n<>k,但n能被k整除,則應打印出k的值,并用n除以

k的商,作為新的正整數(shù)n,重復執(zhí)行第一步。

⑶如果n不能被k整除,則用k+1作為k的值,重復執(zhí)行第一步。

publicclassProg4{

publicstaticvoidmain(String[]args){

intn=13;

decompose(n);

}

privatestaticvoiddecompose(intn){

System.out.print(n+"=");

for(inti=2;i<n+l;i++){

while(n%i==O&&n!=i){

n/=i;

System.out.print(i+"*");

|

if(n==i){

System,out.println(i);

break;

【程序5】

題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學

用A表示,60-89分之間的用B表示,60分以下的用C表示。

程序分析:(a>b)?a:b這是條件運算符的基本例子。

publicclassProg5{

publicstaticvoidmain(String[]args){

intn=-1;

try{

n=Integer.parselnt(args[0]);

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.println("請輸入成績");

return;

}

grade(n);

|

//成績等級計算

privatestaticvoidgrade(intn){

if(n>100||n<0)

System.out.println("輸入無效");

else(

Stringstr=(n>=90)?"^,屬于A等":((n>60)?"分,屬于

B等":"分,屬于C等/

System,out.println(n+str);

【程序6】

題目:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。

程序分析:利用輾除法。

publicclassProg6{

publicstaticvoidmain(String[]args){

intm,n;

try(

m=Integer.parseInt(args[O]);

n=Integer.parselnt(args[1]);

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.printing輸入有誤");

return;

}

max_min(m,n);

}

//求最大公約數(shù)和最小公倍數(shù)

privatestaticvoidmax_min(intm,intn){

inttemp=1;

intyshu=1;

intbshu=m*n;

if(n<m){

temp=n;

n=m;

m=temp;

}

while(m!=O){

temp=n%m;

n=m;

m=temp;

yshu=n;

bshu/=n;

System.out.println(m+"和"+n+”的最大公約數(shù)為"+yshu);

System.out.println(m+"和"+n+”的最小公倍數(shù)為"+bshu);

【程序7】

題目:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它

字符的個數(shù)。

程序分析:利用while語句,條件為輸入的字符不為

importjava.util.Scanner;

publicclassProg7_l{

publicstaticvoidmain(String[]args){

System.out.print("請輸入一串字符:");

Scannerscan=newScanner(System.in);

Stringstr=scan.nextLine。;//將一行字符轉(zhuǎn)化為字符串

scan.close();

count(str);

)

//統(tǒng)計輸入的字符數(shù)

privatestaticvoidcount(Stringstr){

StringEl="[\u4e00-\u9fa5]";//漢字

StringE2="[a-zA-Z]";

StringE3="[0-9]";

StringE4="\\s";//空格

intcountChinese=0;

intcountLetter=0;

intcountNumber=0;

intcountSpace=0;

intcountOther=0;

char[]array_Char=str.toCharArrayO;//將字符串轉(zhuǎn)化為

字符數(shù)組

String[]array_String=new

String[array_Char.length];//漢字只能作為字符串處理

for(inti=O;i<array_Char.length;i++)

array_String[i]=String.valueOf(array_Char[i]);

//遍歷字符串數(shù)組中的元素

for(Strings:array_String){

if(s.matches(El))

countChinese++;

elseif(s.matches(E2))

countLetter++;

elseif(s.matches(E3))

countNumber++;

elseif(s.matches(E4))

countSpace++;

else

countOther++;

}

System.out.printin("輸入的漢字個數(shù):"+countChinese);

System.out.printing輸入的字母個數(shù):"+countLetter);

System.out.printin("輸入的數(shù)字個數(shù):"+countNumber);

System.out.printin("輸入的空格個數(shù):"+countSpace);

System.out.printin("輸入的其它字符個數(shù):"+countSpace);

importjava.util.*;

publicclassProg7_2{

publicstaticvoidmain(String[]args){

System.out.println("請輸入一行字符:");

Scannerscan=newScanner(System.in);

Stringstr=scan.nextLineQ;

scan.close();

count(str);

//統(tǒng)計輸入的字符

privatestaticvoidcount(Stringstr){

List<String>list=newArrayList<String>();

char[]array_Char=str.toCharArray();

for(charc:array_Char)

list.add(String.valueOf(c));//將字符作為字符串添加到

list表中

Collections.sort(list);//排序

for(Strings:list){

intbegin=list.indexOf(s);

intend=list.lastlndexOf(s);

〃索引結(jié)束統(tǒng)計字符數(shù)

if(list.get(end)==s)

System.out.println("字符<"+s+H,有

"+(end-begin+l)+"個");

【程序8】

題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數(shù)字。例

如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有

鍵盤控制。

程序分析:關(guān)鍵是計算出每一項的值。

importjava.util.Scanner;

publicclassProg8{

publicstaticvoidmain(String[]args){

System.out.print("求s=a+aa+aaa+aaaa+…的值,請輸入

a的值:");

Scannerscan=new

Scarmer(System.in).useDelimiter("\\s*");//以空格作為分隔符

inta=scan.nextint();

intn=scan.nextlntO;

scan.close。;//關(guān)閉掃描器

System.out.println(expressed(2,5)+add(2,5));

}

//求和表達式

privatestaticStringexpressed(inta,intn){

StringBuffersb=newStringBuffer();

StringBuffersubSB=newStringBuffer();

for(inti=1;i<n+1;i++){

subSB=subSB.append(a);

sb=sb.append(subSB);

if(i<n)

sb=sb.append("+");

sb.append("=");

returnsb.toStringO;

|

//求和

privatestaticlongadd(inta,intn){

longsum=0;

longsubSUM=0;

for(inti=1;i<n+1;i++){

subSUM=subSUM*10+a;

sum=sum+subSUM;

}

returnsum;

【程序9】

題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)"。例

如6=1+2+3.編程找出1000以內(nèi)的所有完數(shù)。

publicclassProg9{

publicstaticvoidmain(String[]args){

intn=10000;

compNumber(n);

//求完數(shù)

privatestaticvoidcompNumber(intn){

intcount=0;

System.out.println(n+"以內(nèi)的完數(shù):");

for(inti=1;i<n+1;i++){

intsum=0;

for(intj=1;j<i/2+1;j++){

if((i%j)==O){

sum+=j;

if(sum==i){

System.out.print(i+"");

if((count++)%5==0)

System,out.println();

【程序10]

題目:一球從100米高度自由落下,每次落地后反跳回原高度的一

半;再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈

多高?

importjava.util.Scanner;

publicclassProglO{

publicstaticvoidmain(String[]args){

System.out.print("請輸入小球落地時的高度和求解的次數(shù):

");

Scannerscan=new

Scanner(System.in).useDelimiter("\\s");

inth=scan.nextlntO;

intn=scan.nextlnt();

scan.closeQ;

distance(h,n);

)

//小球從h高度落下,經(jīng)n次反彈后經(jīng)過的距離和反彈的高度

privatestaticvoiddistance(inth,intn){

doublelength=0;

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

length+=h;

h/=2.0;

System.out.printing經(jīng)過第"+n+"次反彈后,小球共經(jīng)過

"+length+"米,"+"第"+n+"次反彈高度為"+h+"米)

}

}

【程序U]

題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字

的三位數(shù)?都是多少?

程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4O組成

所有的排列后再去掉不滿足條件的排列。

publicclassProgl1{

publicstaticvoidmain(String[]args){

intcount=0;

intn=0;

for(inti=l;i<5;i++){

for(intj=l;j<5;j++){

if(j==i)

continue;

for(intk=l;k<5;k++){

if(k!=i&&k!=j){

n=i*100+j*10+k;

System.out.print(n+"");

if((++count)%5==0)

System,out.println();

System,out.printlnQ;

System.out.printin("符合條件的數(shù)共:"+count+"個");

【程序12]

題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤⑴低于或等于10萬元時,

獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元

的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬

到40萬之間時,高于20萬元的部分,可提成5%;40萬至!j60萬

之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,

高于60萬元的部分,可提成1.5%,高于100萬元時,超過100

萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發(fā)放獎金總數(shù)?

程序分析:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長

整型。

importjava.io.*;

publicclassProgl2{

publicstaticvoidmain(String[]args){

System.out.print("請輸入當前利潤:");

longprofit=Long.parseLong(key_Input());

System.out.printing應發(fā)獎金:"+bonus(profit));

|

//接受從鍵盤輸入的內(nèi)容

privatestaticStringkey_Input(){

Stringstr=null;

BufferedReaderbufln=newBufferedReader(new

InputStreamReader(System.in));

try(

str=bufln.readLine();

}catch(IOExceptione){

e.printStackTrace();

}finally{

try{

bufln.close();

}catch(IOExceptione){

e.printStackTrace();

returnstr;

//計算獎金

privatestaticlongbonus(longprofit){

longprize=0;

longprofit_sub=profit;

if(profit>1000000){

profit=profit_sub-1000000;

profit_sub=1000000;

prize+=profit*0.01;

}

if(profit>600000)(

profit=profit_sub-600000;

profit_sub=600000;

prize+=profit*0.015;

}

if(profit>400000){

profit=profit_sub-400000;

profit_sub=400000;

prize+=profit*0.03;

}

if(profit>200000){

profit=profit_sub-200000;

profit_sub=200000;

prize+=prize*0.05;

}

if(profit>100000)!

profit=profit_sub-100000;

profit_sub=100000;

prize+=profit*0.075;

}

prize+=profit_sub*0.1;

returnprize;

【程序13]

題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又

是一個完全平方數(shù),請問該數(shù)是多少?

程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上1。。后再開方,再將該

數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。

publicclassProgl3{

publicstaticvoidmain(String[]args){

intn=0;

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

if(isCompSqrt(i+100)&&isCompSqrt(i+268)){

n=i;

break;

}

}

System.out.println("所求的數(shù)是:"+n);

)

//判斷完全平方數(shù)

privatestaticbooleanisCompSqrt(intn){

booleanisComp=false;

for(inti=1;i<Math.sqrt(n)+1;i++){

if(n==Math.pow(i,2)){

isComp=true;

break;

)

}

returnisComp;

【程序14]

題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再

加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需

考慮多加一天。

importjava.util.Scanner;

publicclassProgl4{

publicstaticvoidmain(String[]args){

Scannerscan=new

Scanner(System.in).useDelimiter("\\D");//匹配非數(shù)字

System.out.print("請輸入當前日期(年-月-日)

intyear=scan.nextlntQ;

intmonth=scan.nextlnt();

intdate=scan.nextlnt();

scan.closeQ;

System,out.printin("今天是"+year+"年的第

“analysis(year,month,date)+"天”);

}

//判斷天數(shù)

privatestaticintanalysis(intyear,intmonth,intdate){

intn=0;

int[]month_date=newint[]

{0,31,28,31,30,31,30,31,31,30,31,30);

if((year%400)==0||((year%4)==0)&&((year%100)!=0))

month_date[2]=29;

for(inti=0;i<month;i++)

n+=month_date[i];

returnn+date;

【程序15]

題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。

程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進行比較,

如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如

果x>z則將x與z的值進行交換,這樣能使x最小。

importjava.util.Scanner;

publicclassProgl5{

publicstaticvoidmain(String[]args){

Scannerscan=new

Scanner(System.in),useDelimiter("\\D");

System.out.print("請輸入三個數(shù):");

intx=scan.nextlnt();

inty=scan.nextlntQ;

intz=scan.nextint();

scan.closeO;

System.out.printin("排序結(jié)果:"+sort(x,y,z));

//比較兩個數(shù)的大小

privatestaticStringsort(intx,inty,intz){

Strings=null;

if(x>y){

intt=x;

x=y;

y=t;

}

if(x>z){

intt=x;

x=z;

z=t;

}

if(y>z){

intt=z;

z=y;

y=t;

}

s=x+""+y+""+z;

returns;

【程序16]

題目:輸出9*9口訣。

程序分析:分行與列考慮,共9行9列,i控制行,j控制歹!]。

publicclassProgl6{

publicstaticvoidmain(String[]args){

for(inti=1;i<10;i++){

for(intj=l;j<i+l;j++)

System.out.print(j+"*"+i+"="+(j*i)+"");

System.out.printin();

【程序17]

題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,

還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多

吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10

天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

程序分析:采取逆向思維的方法,從后往前推斷。

publicclassProgl7{

publicstaticvoidmain(String[]args){

intm=1;

for(inti=10;i>0;i—)

m=2*m+2;

System.out.println("小猴子共摘了"+m+"桃子");

【程序18]

題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊

為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。

a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。

importjava.util.ArrayList;

publicclassProgl8{

Stringa,b,c;//甲隊成員

publicstaticvoidmain(String[]args){

Stringf]racer={"x","y","z"};//乙隊成員

ArrayList<Prog18>arrayList=new

ArrayList<Prog18>();

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

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

for(intk=0;k<3;k++){

Prog18prog18=new

Prog18(racer[i],racer[j],racer[k]);

if(!progl8.a.equals(progl8.b)

&&!progl8.a.equals(progl8.c)

&&!prog18.b.equals(prog18.c)&&

!progl8.a.equals("x")&&!progl8.c.equals("x")

&&!progl8.c.equals("z"))

arrayList.add(prog18);

}

for(Objectobj:arrayList)

System,out.println(obj);

}

//構(gòu)造方法

privateProgl8(Stringa,Stringb,Stringc){

this,a=a;

this.b=b;

this.c=c;

)

publicStringtoString(){

return"a的對手是"+a+""+"b的對手是"+b+""+"c的對

手是"+c;

}

}

【程序19]

題目:打印出如下圖案(菱形)

*

***

******

********

******

***

*

程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一

個規(guī)律,利用雙重for循環(huán),第一層控制行,第二層控制列。

publicclassProgl9{

publicstaticvoidmain(String[]args){

intn=5;

printStar(n);

)

//打印星星

privatestaticvoidprintStar(intn){

//打印上半部分

for(inti=O;i<n;i++){

for(intj=0;j<2*n;j++){

if(j<n-i)

System.out.print("");

if(j>=n-i&&j<=n+i)

System.out.print("*");

)

System.out.printin();

}

//打印下半部分

for(inti=l;i<n;i++){

System.out.print("");

for(intj=0;j<2*n-i;j++){

if(j<i)

System.out.print("");

if(j>=i&&j<2*n-i-l)

System.out.print("*");

}

System.out.printin();

【程序20]

題目:有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...

求出這個數(shù)列的前20項之和。

程序分析:請抓住分子與分母的變化規(guī)律。

publicclassProg20(

publicstaticvoidmain(String[]args){

doublenl=1;

doublen2=1;

doublefraction=nl/n2;

doubleSn=0;

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

doubletl=nl;

doublet2=n2;

nl=tl+t2;

n2=tl;

fraction=nl/n2;

Sn+=fraction;

}

System,out.print(Sn);

【程序21】

題目:求l+2!+3!+...+20!的和

程序分析:此程序只是把累加變成了累乘。

publicclassProg21{

publicstaticvoidmain(String[]args){

longsum=0;

for(inti=0;i<20;i++)

sum+=factorial(i+l);

System,out.println(sum);

|

//階乘

privatestaticlongfactorial(intn){

intmult=1;

for(inti=1;i<n+1;i++)

mult*=i;

returnmult;

}

}

【程序22]

題目:利用遞歸方法求5!。

程序分析:遞歸公式:fn=fn」*4!

publicclassProg22{

publicstaticvoidmain(String[]args){

System.out.println(fact(10));

}

//遞歸求階乘

privatestaticlongfact(intn){

if(n==l)

return1;

else

returnfact(n-l)*n;

【程序23]

題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2

歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說

比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一

個人,他說是10歲。請問第五個人多大?

程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知

道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(1。

歲),再往回推。

publicclassProg23{

publicstaticvoidmain(String[]args){

System.out.println(getAge(5,2));

}

//求第m位同志的年齡

privatestaticintgetAge(intm,intn){

if(m==l)

return10;

else

returngetAge(m-l,n)+n;

【程序24】

題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、

逆序打印出各位數(shù)字。

publicclassProg24{

publicstaticvoidmain(String[]args){

intn=Integer.parseInt(args[O]);

inti=0;

int[]a=newint[5];

do{

a[i]=n%10;

n/=10;

++i;

}while(n!=0);

System.out.print("這是一個"+i+”位數(shù),從個位起,各位數(shù)字

依次為:");

for(intj=O;j<i;j++)

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

【程序25]

題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個

位與萬位相同,十位與千位相同。

importjava.io.*;

publicclassProg25{

publicstaticvoidmain(String[]args){

intn=0;

System.out.print("請輸入一個5位數(shù):");

BufferedReaderbufin=newBufferedReader(new

InputStreamReader(System.in));

try(

n=Integer.parseInt(bufin.readLine());

}catch(IOExceptione){

e.printStackTrace();

}finally{

try(

bufin.closeQ;

}catch(IOExceptione){

e.printStackTrace();

palin(n);

privatestaticvoidpalin(intn){

intm=n;

int[]a=newint[5];

if(n<10000||n>99999){

System.out.println("輸入的不是5位數(shù)!");

return;

}else{

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

a[i]=n%10;

n/=10;

}

if(a[0]==a[4]&&a[l]==a[3])

System.out.println(m+"是一個回文數(shù)");

else

System.out.println(m+"不是回文數(shù)");

【程序26】

題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個

字母一樣,則繼續(xù)判斷第二個字母。

程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況

語句或if語句判斷第二個字母。

importjava.io.*;

publicclassProg26{

publicstaticvoidmain(String[]args){

Stringstr=newStringQ;

BufferedReaderbufln=newBufferedReader(new

InputStreamReader(System.in));

System.out.print("請輸入星期的英文單詞前兩至四個字母):

");

try(

str=bufIn.readLine();

}catch(IOExceptione){

e.printStackTrace();

}finally(

try(

bufln.close();

}catch(IOExceptione){

e.printStackTrace();

week(str);

privatestaticvoidweek(Stringstr){

intn=-1;

if(str.trim().equalsIgnoreCase("Mo")||

str.trimQ.equalsIgnoreCase("Mon")||

str.trim().equalsIgnoreCase("Mond"))

n=1;

if(str.trim().equalsIgnoreCase("Tu")||

str.trimQ.equalsIgnoreCase("Tue")||

str.trimQ.equalsIgnoreCase("Tues"))

n=2;

if(str.trim().equalsIgnoreCase("We")||

str.trimQ.equalsIgnoreCase("Wed")||

str.trim().equalsIgnoreCase("Wedn"))

n=3;

if(str.trim().equalsIgnoreCase("Th")||

str.trimQ.equalsIgnoreCase("Thu")||

str.trimQ.equalsIgnoreCase("Thur"))

n=4;

if(str.trim().equalsIgnoreCase("Fr")||

str.trimQ.equalsIgnoreCase("Fri")||

str.trim().equalsIgnoreCase("Frid"))

n=5;

if(str.trim().equalsIgnoreCase("Sa")||

str.trimQ.equalsIgnoreCase("Sat")||

str.trim().equalsIgnoreCase("Satu"))

n=2;

if(str.trim().equalsIgnoreCase("Su")||

str.trim().equalsIgnoreCase("Sun")||

str.trimQ.equalsIgnoreCase("Sund"))

n=0;

switch(n){

case1:

System.out.printin("星期一");

break;

case2:

System.out.printing星期二");

break;

case3:

System.out.printing星期三");

break;

case4:

System.out.printing星期四");

break;

case5:

System.out.printing星期五");

break;

case6:

System.out.printin("星期六");

break;

case0:

System.out.printin("星期日");

break;

default:

System.out.printing輸入有誤!

break;

【程序27]

題目:求100之內(nèi)的素數(shù)

publicclassProg27(

publicstaticvoidmain(String[]args){

intn=100;

System.out.print(n+"以內(nèi)的素數(shù):");

for(inti=2;i<n+l;i++){

if(isPrime(i))

System.out.print(i+"");

}

|

//求素數(shù)

privatestaticbooleanisPrime(intn){

booleanflag=true;

for(inti=2;i<Math.sqrt(n)+1;i++)

if(n%i==O){

flag=false;

break;

|

returnflag;

【程序28】

題目:對10個數(shù)進行排序

程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小

的與第一個元素交換,下次類推,即用第二個元素與后8個進行比

較,并進行交換。

publicclassProg28(

publicstaticvoidmain(String[]args){

int[]a=newint[]{31,42,21,50,12,60,81,74,101,93);

for(inti=0;i<10;i++)

for(intj=0;j<a.length-i-1;j++)

if(a[j]>a[j+l]){

inttemp=a[j];

a[j]=a[j+l];

a[j+l]=temp;

}

for(inti=0;i<a.length;i++)

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

}

}

【程序29]

題目:求一個3*3矩陣對角線元素之和

程序分析:利用雙重for循環(huán)控制輸入二維數(shù)組,再將累加后

輸出。

publicclassProg29(

publicstaticvoidmain(String[]args){

int[][]a=newint[][]{{100,2,3,},{4}5,6},{17,8,9});

matrSum(a);

)

privatestaticvoidmatrSum(int[][]a){

intsuml=0;

intsum2=0;

for(inti=0;i<a.length;i++)

for(intj=0;j<a[i].length;j++){

if(i==j)suml+=a[i][j];

if(j==a.length-i-1)sum2+=a[i][j];

}

System.out.println("矩陣對角線之和分別是:"+suml+"和

"+sum2);

【程序30]

題目:有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律

將它插入數(shù)組中。

程序分析:首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間

的數(shù)的情況,插入后此元素之后的數(shù),依次后移一個位置。

importjava.util.Scanner;

publicclassProg30{

publicstaticvoidmain(String[]args){

int[]A=newint口{0,8,7,5,9,1,2,4,3,12};

int[]B=sort(A);

print(B);

System,out.println();

System.out.print("請輸入10個數(shù)的數(shù)組:");

Scannerscan=newScanner(System.in);

inta=scan.nextlntO;

scan.closeQ;

int[]C=insert(a,B);

print(C);

//選擇排序

privatestaticint[]sort(int[]A){

int[]B=newint[A.length];

for(inti=O;i<A.length-1;i++){

intmin=A[i];

for(intj=i+1;j<A.length;j++){

if(min>A[j]){

inttemp=min;

min=A[j];

A[j]=temp;

B[i]=min;

B[A.length-1]=A[A.length-l];

returnB;

}

//打印

privatestaticvoidprint(int[]A){

for(inti=O;i<A.length;i++)

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

)

//插入數(shù)字

privatestaticint[]insert(inta,int[]A){

int[]B=newint[A.length+l];

for(inti=A.length-1;i>O;i—)

if(a>A[i]){

B[i+1]=a;

for(intj=O;j<=i;j++)

B[j]=A[j];

for(intk=i+2;k<B.length;k++)

B[k]=A[k-1];

break;

returnB;

【程序31】

題目:將一個數(shù)組逆序輸出。

程序分析:用第一個與最后一個交換。

publicclassProg31{

publicstaticvoidmain(String[]args){

int[]A=newint[]{l,2,3,4,5,6,7,8,9,};

print(A);

System,out.println();

int[]B=reverse(A);

print(B);

)

privatestaticint[]reverse(int[]A){

for(inti=O;i<A.length/2;i++){

inttemp=A[A.length-i-l];

A[A.length-i-l]=A[i];

A[i]=temp;

}

returnA;

)

privatestaticvoidprint(int[]A){

for(inti=O;i<A.length;i++)

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

【程序32]

題目:取一個整數(shù)a從右端開始的4?7位。

程序分析:可以這樣考慮:

⑴先使a右移4位。

⑵設置一個低4位全為1,其余全為0的數(shù)。可用~(~0<<4)

⑶將上面二者進行&運算。

importjava.util.Scanner;

publicclassProg32{

publicstaticvoidmain(String[]msg){

//輸入一個長整數(shù)

Scannerscan=newScanner(System.in);

long1=scan.nextLongO;

scan.closeQ;

//以下截取字符

Stringstr=Long.toString(l);

char[]ch=str.toCharArrayQ;

intn=ch.length;

if(n<7)

System.out.println("輸入的數(shù)小于7位!");

else

System.out.printin("截取的4~7位數(shù)字:

"+ch[n-7]+ch[n-6]+ch[n-5]+ch[n-4]);

【程序33]

題目:打印出楊輝三角形(要求打印出1。行如下圖)

程序分析:

1

11

121

1331

14641

15101051

publicclassProg33{

publicstaticvoidmain(String[]args){

int[][]n=newint[10][21];

n[0][10]=1;

for(inti=1;i<10;i++)

for(intj=10-i;j<10+i+1;j++)

n[i][j]=n[i-l][j-l]+n[i-l][j+l];

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

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

if(n[i][j]==O)

System,out.print("");

else{

if(n[i][j]<10)

System.out.print(""+n[i][j]);//空格為了美觀需

elseif(n[i][j]<100)

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

else

System.out.print(n[i][j]);

)

}

System.out.printin();

【程序34]

題目:輸入3個數(shù)a,b,c,按大小順序輸出。

程序分析:利用指針方法。

importjava.util.Scanner;

publicclassProg34{

publicstaticvoidmain(String[]args){

System.out.print("請輸入3個數(shù):");

Scannerscan=new

Scanner(System.in).useDelimiter("\\s");

inta=scan.nextlntO;

intb=scan.nextlntO;

intc=scan.nextlntQ;

scan.closeO;

if(a<b){

intt=a;

a=b;

b=t;

}

if(a<c){

intt=a;

a=c;

c=t;

}

if(b<c){

intt=b;

b=c;

c=t;

System.out.println(a+""+b+""+c);

}

}

【程序35]

題目:輸入數(shù)組,最大的與第一個元素交換,最小的與最后一個元素

交換,輸出數(shù)組。

importjava.util.Scanner;

publicclassProg35{

publicstaticvoidmain(String[]args){

System.out.print("請輸入一組數(shù):");

Scannersca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論