算法編程試題_第1頁
算法編程試題_第2頁
算法編程試題_第3頁
算法編程試題_第4頁
算法編程試題_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

算法編程試題

【程序1】

題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對?兔子,小兔f?長到第三個月后每個月又生一

對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?

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

【程序2】

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

1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,

則表明此數(shù)不是素數(shù),反之是素數(shù)。

做了【程序3】

題目:打印出所有的“水仙花數(shù)、所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:

153是一個"水仙花數(shù)",因為153=1的三次方+5的三次方+3的三次方。

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

【程序4】

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

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

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

(2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復執(zhí)行第一步。

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

【程序5】

題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,6089分之間的用B表示,60分以下

的用C表示。

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

【程序6】

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

1.程序分析:利用輾除法。

【程序7】

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

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

做了【程序8】

題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),

幾個數(shù)相加有鍵盤控制。

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

【程序9】

題目:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)"。例如6=1+2+3.編程找出1000以內(nèi)的所有完

數(shù)。

【程序10]

題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地時,共經(jīng)過多

少米?第10次反彈多高?

【程序11]

題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無束復數(shù)字的三位數(shù)?都是多少?

1.程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。

【程序12]

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

元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時,高于20萬元的部

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

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

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

【程序13]

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

1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足

如下條件,即是結(jié)果。請看具體分析:

【程序14]

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

1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且

輸入月份大于3時霜考慮多加?天。

【程序15]

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

1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進行比較,如果x>y則將x與y的但進行交換,然后再用x

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

【程序16]

題目:輸出9。9口訣。

1.程序分析:分行與列考慮,共9行9歹U,i控制行,j控制列。

【程序17]

題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩

下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下

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

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

【程序18]

題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向

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

1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反

之是素數(shù)。

【程序19]

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

1.程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙市for循環(huán),第一層控制

行,第二層控制列。

【程序201

題目:有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和.

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

【程序21]

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

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

【程序22]

題目:利用遞歸方法求51。

1.程序分析:遞歸公式:fn=fn_r4!

【程序23]

題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問

第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個

人多大?

1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),

依次類推,推到第一人(10歲),再往回推。

【程序24]

題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。

【程序25]

題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。

【程序26]

題目:請輸入星期兒的第一個字母來判斷一下是星期兒,如果第一個字母一樣,則繼續(xù)判斷第二個字母。

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

【程序27]

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

【程序28]

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

1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第

二個元素與后8個進行比較,并進行交換。

【程序29]

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

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

【程序30]

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

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

依次后移一個位置。

做完【程序31]

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

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

【程序32]

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

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

⑴先使a右移4位。

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

(3)將上面二者進行&運算。

【程序33]

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

1.程序分析:

1

11

121

1331

14641

15101051

【程序34]

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

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

【程序35]

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

【程序36]

題目:有n個整數(shù),使其前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面的m個數(shù)

【程序37]

題目:有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下

的是原來第幾號的那位。

【程序38]

題目:寫一個函數(shù),求一個字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度。

【程序39]

題目:編寫一個函數(shù),輸入n為偶數(shù)時,調(diào)用函數(shù)求1/2+1/4+...+1/n,當輸入n為奇數(shù)時,調(diào)用函數(shù)

1/1+1/3+...+1/n(利用指針函數(shù))

【程序40]

題目:字符串排序。

【程序41]

題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個,這只猴子把多的一

個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中

,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?

【程序42]

題目:809*??=800*??+9*??+1

其中??代表的兩位數(shù),8*??的結(jié)果為兩位數(shù),9"??的結(jié)果為3位數(shù)。求??代表的兩位數(shù),及809*??后的結(jié)果。

【程序43]

題目:求0—7所能組成的奇數(shù)個數(shù)。

【程序44]

題目:一個偶數(shù)總能表示為兩個素數(shù)之和。

【程序45]

題目:判斷一個素數(shù)能被幾個9整除

【程序46]

題目:兩個字符串連接程序

做完【程序47]

題目:讀取7個數(shù)(1-50)的整數(shù)值,每讀取一個值,程序打印出該值個數(shù)的*。

【程序48]

題目:某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字

都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。

做完【程序49]

題目:計算字符串中子串出現(xiàn)的次數(shù)

【程序50]

題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數(shù)據(jù)(包括學生號,姓名,三門課成績),計算出平均成績,況原有的數(shù)

據(jù)和計算出的平均分數(shù)存放在磁盤文件"Stud”」。

【程序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-l)+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.printlnO;

)

)

)

System.out.printlnO;

System.out.println("在"+m+"ID"+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.printlnO;

)

/年|」斷水仙花數(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,然后

按下述步驟完成:

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

印出即可。

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

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

(3)如果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==0&&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.parseInt(args[O]);

}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[l]);

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.println("輸入有誤");

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!=0){

temp=n%m;

n=m;

m=temp;

}

yshu=n;

bshu/=n;

System.out.println(m+"fH"+n+"的最大公約數(shù)為

"+yshu);

System.out.println(m+"ID"+n+"的最小公倍數(shù)為

"+bshu);

)

}

【程序7】

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

字符的個數(shù)。

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

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.toCharArray();〃將字符串轉(zhuǎn)化為

字符數(shù)組

String[]array_String=new

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

for(inti=0;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.println("輸入的漢字個數(shù):"+countChinese);

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

System.out.println("輸入的數(shù)字個數(shù):

"+countNumber);

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

System.out.println("輸入的其它字符個數(shù):

"+countSpace);

)

}

importjava.util.*;

publicclassProg7_2{

publicstaticvoidmain(String[]args){

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

Scannerscan=newScanner(System.in);

Stringstr=scan.nextLine();

scan.doseO;

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表中

CoHections.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+"'有

"+(end-begin+1)+

)

)

}

【程序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("^cs=a+aa+aaa+aaaa+…的值,請輸

入a的值:");

Scannerscan=new

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

inta=scan.nextlntO;

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=l;i<n+l;i++){

subSB=subSB.append(a);

sb=sb.append(subSB);

if(i<n)

sb=sb.append("+");

)

sb.eippend("=");

returnsb.toStringO;

)

〃求和

privatestaticlongadd(inta,intn){

longsum=0;

longsubSUM=0;

for(inti=l;i<n+l;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=l;i<n+l;i++){

intsum=0;

for(intj=l;j<i/2+l;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.outprint(“請輸入小球落地時的高度和求解的次數(shù):

");

Scannerscan=new

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

inth=scan.nextlntO;

intn=scan.nextlntO;

scan.closeO;

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.println("經(jīng)過第"+n+"次反彈后,小球共經(jīng)過

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

)

)

【程序111

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

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

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

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

publicclassProgll{

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.printlnO;

)

}

)

)

System.out.printlnO;

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

)

}

【程序12]

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

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

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

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

之間時高于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.println("應發(fā)獎金:"+bonus(profit));

)

〃接受從健盤輸入的內(nèi)容

privatestaticStringkey_Input(){

Stringstr=null;

BufferedReaderbufln=newBufferedReader(new

InputStreamReader(System.in));

try(

str=bufIn.readLine();

}catch(IOExceptione){

e.printStackTrace();

}finally{

try(

bufln.closeO;

}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ù)加上100后再開方,再將該

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

)

/年11斷完全平方數(shù)

privatestaticbooleanisCompSqrt(intn){

booleanisComp=false;

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

if(n==Math.pow(if2)){

isComp=true;

break;

)

)

returnisComp;

)

}

【程序14]

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

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

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

考慮多加一天。

importjava.util.Scanner;

publicclassProgl4{

publicstaticvoidmain(String[]args){

Scannerscan=new

Scanner(System.in).useDelimiter("\\D");//匹酉臼E數(shù)字

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

intyear=scan.nextlnt();

intmonth=scan.nextlnt();

intdate=scan.nextlnt();

scan.closeO;

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

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

)

/網(wǎng)斷天數(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.nextlntO;

intz=scan.nextlntO;

scan.closeO;

("排序結(jié)果:

System.out.println"+sort(x,yfz));

)

〃比較兩個數(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=l;i<10;i++){

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

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

System.out.println();

)

)

)

【程序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){

String[]racer=〃乙隊成員

ArrayList<Prog18>arrayList=new

ArrayList<Progl8>();

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

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

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

Progl8progl8=new

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

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

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

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

!progl8.a.equals("x")

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

arrayList.add(progl8);

)

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=0;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.printlnO;

}

〃打印下半部分

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

System.out.print("");

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

System.out.print("");

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

System.out.print("*");

)

System.out.printlnO;

)

)

)

【程序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]

題目:求1+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=l;i<n+l;i++)

mult*=i;

returnmult;

)

)

【程序22]

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

程序分析:遞歸公式:fn=fn_l*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ù),依次類推,推到第一人(10

歲),再往回推。

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.closeO;

}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=newStringO;

BufferedReaderbufln=newBufferedReader(new

InputStreamReader(System.in));

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

");

try(

str=bufIn.readLine();

}catch(IOExceptione){

e.printStackTrace();

}finally{

try(

bufln.doseO;

}catch(IOExceptione){

e.printStackTrace();

)

)

week(str);

)

privatestaticvoidweek(Stringstr){

intn=-1;

ifCstr.trimO.equalsIgnoreCaseC'Mo")

str.trim().equalsIgnoreCase("Mon")

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

n=1;

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

st

溫馨提示

  • 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

提交評論