最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

50道基礎(chǔ)編程題練習(xí)你的邏輯思維(一)

2020-07-27 17:40 作者:MagnumHou  | 我要投稿

【程序1】

題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子對(duì)數(shù)為多少?

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

public class Prog1{

public static void main(String[] args){

????int n = 10;

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

}

private static int fun(int n){

????if(n==1 || n==2)

???????return 1;

????else

???????return fun(n-1)+fun(n-2);

????}

}

【程序2】

題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。

程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。

public class Prog2{

????public static void main(String[] args){

????int m = 1;

????int n = 1000;

????int count = 0;

????//統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)

????for(int i=m;i<n;i++){

????????if(isPrime(i)){

????????????count++;

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

????????????if(count%10==0){

????????????System.out.println();

????????}

????}

}

System.out.println();

System.out.println("在"+m+"和"+n+"之間共有"+count+"個(gè)素?cái)?shù)");

}

//判斷素?cái)?shù)

private static boolean isPrime(int n){

????boolean flag = true;

????if(n==1)

??????flag = false;

????else{

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

????????if((n%i)==0 || n==1){

????????flag = false;

????????break;

????}

?????else

???????flag = true;

??????}

????}

????return flag;

????}

}

【程序3】

題目:打印出所有的"水仙花數(shù)",所謂"水仙花數(shù)"是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)"水仙花數(shù)",因?yàn)?53=1的三次方+5的三次方+3的三次方。

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

public class Prog3{

public static void main(String[] args){

????for(int i=100;i<1000;i++){

????if(isLotus(i))

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

????}

????System.out.println();

}

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

private static boolean isLotus(int lotus){

????int m = 0;

????int n = lotus;

????int sum = 0;

????m = n/100;

????n ?-= m*100;

????sum = m*m*m;

????m = n/10;

????n -= m*10;

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

????if(sum==lotus)

????????return true;

????else

????????return false;

????}

}

【程序4】

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

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

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

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

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

public class Prog4{

????public static void main(String[] args){

????????int n = 13;

????????decompose(n);

????}

????private static void decompose(int n){

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

????????????for(int i=2;i<n+1;i++){

????????????????while(n%i==0 && n!=i){

????????????????n/=i;

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

????????????}

????????????if(n==i){

????????????????System.out.println(i);

????????????????break;

????????????}

????????}

????}

}

【程序5】

題目:利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。

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

public class Prog5{

????public static void main(String[] args){

????int n = -1;

????try{

????????????n = Integer.parseInt(args[0]);

??????}catch(ArrayIndexOutOfBoundsException e){

????????????System.out.println("請(qǐng)輸入成績(jī)");

????????return;

????}

????grade(n);

}

//成績(jī)等級(jí)計(jì)算

private static void grade(int n){

????if(n>100 || n<0)

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

????else{

??????String str = (n>=90)?"分,屬于A等":((n>60)?"分,屬于B等":"分,屬于C等");

??????System.out.println(n+str);

????}

????}

}

【程序6】

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

程序分析:利用輾除法。

public class Prog6{

????public static void main(String[] args){

????int m,n;

????try{

????????m = Integer.parseInt(args[0]);

????????n = Integer.parseInt(args[1]);

????}catch(ArrayIndexOutOfBoundsException e){

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

????????return;

????}

????max_min(m,n);

}

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

private static void max_min(int m, int n){

????int temp = 1;

????int yshu = 1;

????int bshu = 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+"和"+n+"的最大公約數(shù)為"+yshu);

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

????}

}

【程序7】

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

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

import java.util.Scanner;

public class Prog7_1{

????public static void main(String[] args){

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

????Scanner scan = new Scanner(System.in);

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

????scan.close();

????count(str);

}

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

private static void count(String str){

????String E1 = "[\u4e00-\u9fa5]";//漢字

????String E2 = "[a-zA-Z]";

????String E3 = "[0-9]";

????String E4 = "\\s";//空格

????int countChinese = 0;

????int countLetter = 0;

????int countNumber = 0;

????int countSpace = 0;

????int countOther = 0;

????char[] array_Char = str.toCharArray();//將字符串轉(zhuǎn)化為字符數(shù)組

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

????for(int i=0;i<array_Char.length;i++)

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

????//遍歷字符串?dāng)?shù)組中的元素

????for(String s:array_String){

????if(s.matches(E1))

??????countChinese++;

????else if(s.matches(E2))

??????countLetter++;

????else if(s.matches(E3))

??????countNumber++;

????else if(s.matches(E4))

??????countSpace++;

????else

??????countOther++;

????}

????System.out.println("輸入的漢字個(gè)數(shù):"+countChinese);

????System.out.println("輸入的字母?jìng)€(gè)數(shù):"+countLetter);

????System.out.println("輸入的數(shù)字個(gè)數(shù):"+countNumber);

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

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

????}

}

import java.util.*;

public class Prog7_2{

public static void main(String[] args){

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

??Scanner scan = new Scanner(System.in);

??String str = scan.nextLine();

??scan.close();

??count(str);

}

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

private static void count(String str){

????List<String> list = new ArrayList<String>();

????char[] array_Char = str.toCharArray();

????for(char c:array_Char)

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

????Collections.sort(list);//排序

????for(String s:list){

????????int begin = list.indexOf(s);

????????int end = list.lastIndexOf(s);

????????//索引結(jié)束統(tǒng)計(jì)字符數(shù)

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

??????????System.out.println("字符‘"+s+"’有"+(end-begin+1)+"個(gè)");

????????}

????}

}

【程序8】

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

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

import java.util.Scanner;

?

public class Prog8{

????public static void main(String[] args){

????System.out.print("求s=a+aa+aaa+aaaa+...的值,請(qǐng)輸入a的值:");

????Scanner scan = new Scanner(System.in).useDelimiter("\\s*");//以空格作為分隔符

????int a = scan.nextInt();

????int n = scan.nextInt();

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

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

}

//求和表達(dá)式

private static String expressed(int a,int n){

????StringBuffer sb = new StringBuffer();

????StringBuffer subSB = new StringBuffer();

????for(int i=1;i<n+1;i++){

??????subSB = subSB.append(a);

??????sb = sb.append(subSB);

??????if(i<n)

????????sb = sb.append("+");

????}

????sb.append("=");

????return sb.toString();

}

//求和

private static long add(int a,int n){

????long sum = 0;

????long subSUM = 0;

????for(int i=1;i<n+1;i++){

????????subSUM = subSUM*10+a;

????????sum = sum+subSUM;

????}

????return sum;

????}

}

【程序9】

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

public class Prog9{

public static void main(String[] args){

????int n = 10000;

????compNumber(n);

}

//求完數(shù)

private static void compNumber(int n){

????int count = 0;

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

????for(int i=1;i<n+1;i++){

????????int sum = 0;

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

????????????if((i%j)==0){

????????????sum += j;

????????????if(sum==i){

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

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

????????????????????System.out.println();

????????????????????}

????????????????}

????????????}

????????}

????}

}

【程序10】

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

import java.util.Scanner;

public class Prog10{

????public static void main(String[] args){

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

????Scanner scan = new Scanner(System.in).useDelimiter("\\s");

????int h = scan.nextInt();

????int n = scan.nextInt();

????scan.close();

????distance(h,n);

}

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

private static void distance(int h,int n){

????double length = 0;

????for(int i=0;i<n;i++){

????length += h;

????h /=2.0 ;

????}

????System.out.println("經(jīng)過第"+n+"次反彈后,小球共經(jīng)過"+length+"米,"+"第"+n+"次反彈高度為"+h+"米");

????}

}

?? 看完兩件事

如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我兩個(gè)小忙:

  1. 點(diǎn)個(gè)「贊」或者「轉(zhuǎn)發(fā)評(píng)論」,讓更多的人也能看到這篇內(nèi)容(喜歡不點(diǎn)贊,都是耍流氓 -_-)

  2. 關(guān)注公眾號(hào)「前端知識(shí)分享喵」,不定時(shí)更新前端技術(shù)分享,

    公眾號(hào)后臺(tái)回復(fù)「電子書」即可免費(fèi)獲取精選的前端電子書。

    添加 MagnumHou 微信,可以獲取 up 主有的大機(jī)構(gòu)的學(xué)習(xí)視頻哦


50道基礎(chǔ)編程題練習(xí)你的邏輯思維(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
外汇| 百色市| 加查县| 陆川县| 赣州市| 淮阳县| 通海县| 永福县| 岚皋县| 白玉县| 吉木乃县| 宝坻区| 邯郸县| 油尖旺区| 仪陇县| 松滋市| 夹江县| 九江市| 灵石县| 福贡县| 兴安县| 辰溪县| 岳阳市| 巴东县| 民县| 明水县| 基隆市| 宁武县| 定安县| 陆良县| 四平市| 邛崃市| 左权县| 朝阳市| 蓬安县| 轮台县| 柳州市| 荔浦县| 临洮县| 高青县| 攀枝花市|