国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

曾經(jīng)做過的40道程序設(shè)計(jì)課后習(xí)題總結(jié)

2019-11-14 21:52:15
字體:
供稿:網(wǎng)友
曾經(jīng)做過的40道程序設(shè)計(jì)課后習(xí)題總結(jié)

曾經(jīng)做過的40道程序設(shè)計(jì)課后習(xí)題總結(jié)(一)

課后習(xí)題目錄

1 斐波那契數(shù)列2 判斷素?cái)?shù)3 水仙花數(shù)4 分解質(zhì)因數(shù)5 楊輝三角6 學(xué)習(xí)成績查詢7 求最大公約數(shù)與最小公倍數(shù)8 完全平方數(shù)9 統(tǒng)計(jì)字母、空格、數(shù)字和其它字符個(gè)數(shù)10 求主對(duì)角線之和11 完數(shù)求解12 求s=a+aa+aaa+aaaa+aa...a的值13 高度計(jì)算14 乘法口訣15 無重復(fù)三位數(shù)16 菱形打印17 利潤計(jì)算18 第幾天判斷19 從小到大輸出數(shù)列20 猴子吃桃問題21 乒乓球比賽22 求分?jǐn)?shù)之和23 求階乘的和24 遞歸求法25 求不多于5的正整數(shù)26 回文判斷27 星期判斷28 插數(shù)入數(shù)組29 取整數(shù)的任意位30 按順序輸出數(shù)列31 位置替換32 字符串排序33 貸款器34 通訊錄排序35 閏年判斷36 二元方程求解37 密碼解譯38 DVD查詢39 電子日歷40 萬年歷

1 斐波那契數(shù)列

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

1.2 源程序

public class Fibonacci {    public static final int MONTH = 15;      public static void main(String[] args) {       long f1 = 1L, f2 = 1L;       long f;       for (int i = 3; i < MONTH; i++) {           f = f2;           f2 = f1 + f2;           f1 = f;           System.out.

1.3 運(yùn)行結(jié)果

第3個(gè)月的兔子對(duì)數(shù): 2

第4個(gè)月的兔子對(duì)數(shù): 3

第5個(gè)月的兔子對(duì)數(shù): 5

第6個(gè)月的兔子對(duì)數(shù): 8

第7個(gè)月的兔子對(duì)數(shù): 13

第8個(gè)月的兔子對(duì)數(shù): 21

第9個(gè)月的兔子對(duì)數(shù): 34

第10個(gè)月的兔子對(duì)數(shù): 55

第11個(gè)月的兔子對(duì)數(shù): 89

第12個(gè)月的兔子對(duì)數(shù): 144

第13個(gè)月的兔子對(duì)數(shù): 233

第14個(gè)月的兔子對(duì)數(shù): 377

1.4 源程序揭秘

斐波那契數(shù)列公式:

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

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

public class Prime {    public static int count = 0;      public static void main(String[] args) {       for (int i = 101; i < 200; i++) {           boolean b = true;// 默認(rèn)此數(shù)就素?cái)?shù)           for (int j = 2; j <= Math.sqrt(i); j++) {              if (i % j == 0) {                  b = false; // 此數(shù)不是素?cái)?shù)                  break;              }           }           if (b) {              count++;              System.out.print(i + " ");           }       }       System.out.println("/n素?cái)?shù)的個(gè)數(shù):" + count);    }}

2.3 運(yùn)行結(jié)果:

101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

素?cái)?shù)的個(gè)數(shù):21

2.4 源程序揭秘

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

3 水仙花數(shù)

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

public class shuixian {    static int b, bb, bbb;      public static void main(String[] args) {         for (int num = 101; num < 1000; num++) {           shuixian tnn = new shuixian();           tnn.f(num);       }    }      public void f(int m) {       bbb = m / 100;       bb = (m % 100) / 10;       b = (m % 100) % 10;       if ((bbb * bbb * bbb + bb * bb * bb + b * b * b) == m) {           System.out.println(m);       }    }}

3.3 運(yùn)行結(jié)果:

153

370

371

407

3.4 源程序揭秘

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

4 分解質(zhì)因數(shù)

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

import java.util.Scanner;  public class ZhiYinShu {    static int n, k = 2;      public static void main(String[] args) {       Scanner s = new Scanner(System.in);       n = s.nextInt();       System.out.print(n + "=");       ZhiYinShu fpf = new ZhiYinShu();       fpf.f(n);    }      public void f(int n) {       while (k <= n) {           if (k == n) {              System.out.println(n);              break;           } else if (n > k && n % k == 0) {              System.out.print(k + "*");              n = n / k;              f(n);              break;           } else if (n > k && n % k != 0) {              k++;              f(n);              break;           }       }    }}

4.3 運(yùn)行結(jié)果:

200

200=2*2*2*5*5

4.4 源程序揭秘

對(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í)行第一步。

5 楊輝三角

5.1 題目:打印出楊輝三角形(要求打印出10行如下圖) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

5.2 源程序

public class YangHuiSanJiao {         public static void main(String[] args) {         int[][] a = new int[10][10];       for (int i = 0; i < 10; i++) {           a[i][i] = 1;           a[i][0] = 1;       }       for (int i = 2; i < 10; i++) {           for (int j = 1; j < i; j++) {              a[i][j] = a[i - 1][j - 1] + a[i - 1][j];           }       }         for (int i = 0; i < 10; i++) {           for (int k = 0; k < 2 * (10 - i) - 1; k++) {              System.out.print(" ");           }           for (int j = 0; j <= i; j++) {              System.out.print(a[i][j] + "   ");           }           System.out.println();       }    }}

5.3 運(yùn)行結(jié)果:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

5.4 源程序揭秘

楊輝三角形性質(zhì):

每行數(shù)字左右對(duì)稱,由1開始逐漸變大,然后變小,回到1。  

第n行的數(shù)字個(gè)數(shù)為n個(gè)。  

第n行數(shù)字和為2^(n-1)。  

每個(gè)數(shù)字等于上一行的左右兩個(gè)數(shù)字之和。可用此性質(zhì)寫出整個(gè)楊輝三角形。   

第n行的第1個(gè)數(shù)為1,第二個(gè)數(shù)為1×(n-1),第三個(gè)數(shù)為1×(n-1)×(n-2)/2,第四個(gè)數(shù)為1×(n-1)×(n-2)/2×(n-3)/3&hellip;依此類推。  

算法原理:

使用一個(gè)二維數(shù)組yh[][]存儲(chǔ)楊輝三角形的數(shù)據(jù),行和列的大小為所需要輸出的行數(shù)Row(本程序中Row為10)。

使用for循環(huán)使楊輝三角中除了最外層(不包括楊輝三角底邊)的數(shù)為1 ;

使用語句yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j]使第i行第j列的數(shù)據(jù)等于第(i-1)行第(j-1)列的數(shù)據(jù)與第(i-1)行第(j)列的數(shù)據(jù)之和,即每個(gè)數(shù)字等于上一行的左右兩個(gè)數(shù)字之和。

6 學(xué)習(xí)成績查詢

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

import java.util.Scanner;  public class ChaXun {    static int grade;      public static void main(String[] args) {       Scanner str = new Scanner(System.in);       int s = str.nextInt();       ChaXun fc = new ChaXun();       grade = fc.compare(s);       if (grade == 1) {           System.out.print('A');       } else if (grade == 2) {           System.out.print('B');       } else {           System.out.println('C');       }    }      public int compare(int s) {       return s > 90 ? 1 : s > 60 ? 2 : 3;    }}

6.3 運(yùn)行結(jié)果:

90

B

6.4 源程序揭秘

利用(a>b)?a:b條件運(yùn)算符來處理。

7 求最大公約數(shù)與最小公倍數(shù)

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

import java.util.Scanner;  public class YueBei {    public static void main(String[] args) {       int a, b;       Scanner s1 = new Scanner(System.in);        Scanner s2 = new Scanner(System.in);       a = s1.nextInt();       b = s2.nextInt();       YueBei scd = new YueBei();       int m = scd.division(a, b);       int n = a * b / m;       System.out.println("最大公約數(shù): " + m);       System.out.println("最小公倍數(shù): " + n);    }      public int division(int x, int y) {       int t;       if (x < y) {           t = x;           x = y;           y = t;       }         while (y != 0) {           if (x == y)              return 1;           else {              int k = x % y;              x = y;              y = k;           }       }       return x;    }}

7.3 運(yùn)行結(jié)果:

56

78

最大公約數(shù): 2

最小公倍數(shù): 2184

7.4 源程序揭秘

在循環(huán)中,只要除數(shù)不等于0,用較大數(shù)除以較小的數(shù),將小的一個(gè)數(shù)作為下一輪循環(huán)的大數(shù),取得的余數(shù)作為下一輪循環(huán)的較小的數(shù),如此循環(huán)直到較小的數(shù)的值為0,返回較大的數(shù),此數(shù)即為最小公約數(shù),最小公倍數(shù)為兩數(shù)之積除以最小公倍數(shù)。

8 完全平方數(shù)

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

public class WanQuan {    public static void main(String[] args) {       for (long l = 1L; l < 100000; l++) {           if (Math.sqrt((long) (l + 100)) % 1 == 0) {              if (Math.sqrt((long) (l + 268)) % 1 == 0) {                  System.out.println(l + "加100是一個(gè)完全平方數(shù),再加168又是一個(gè)完全平方數(shù)");              }           }       }    }}

8.3 運(yùn)行結(jié)果:

21加100是一個(gè)完全平方數(shù),再加168又是一個(gè)完全平方數(shù)

261加100是一個(gè)完全平方數(shù),再加168又是一個(gè)完全平方數(shù)

1581加100是一個(gè)完全平方數(shù),再加168又是一個(gè)完全平方數(shù)

8.4 源程序揭秘

在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后的結(jié)果滿足如下條件,即是結(jié)果。

9 統(tǒng)計(jì)字母、空格、數(shù)字和其它字符個(gè)數(shù)

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

import java.util.*;  public class Number {    static int digital = 0;    static int character = 0;    static int other = 0;    static int blank = 0;      public static void main(String[] args) {       char[] ch = null;       Scanner sc = new Scanner(System.in);       String s = sc.nextLine();       ch = s.toCharArray();         for (int i = 0; i < ch.length; i++) {           if (ch[i] >= '0' && ch[i] <= '9') {              digital++;           } else if ((ch[i] >= 'a' && ch[i] <= 'z') || ch[i] > 'A'                  && ch[i] <= 'Z') {              character++;           } else if (ch[i] == ' ') {              blank++;           } else {              other++;           }         }       System.out.println("數(shù)字個(gè)數(shù): " + digital);       System.out.println("英文字母個(gè)數(shù): " + character);       System.out.println("空格個(gè)數(shù): " + blank);       System.out.println("其他字符個(gè)數(shù):" + other);    }  }

9.3 運(yùn)行結(jié)果:

sadf239 asl!~@#*(#)

數(shù)字個(gè)數(shù): 3

英文字母個(gè)數(shù): 7

空格個(gè)數(shù): 2

其他字符個(gè)數(shù):8

9.4 源程序揭秘

利用while語句,條件為輸入的字符不為 '/n '。

10 求主對(duì)角線之和

10.1 題目:求一個(gè)3*3矩陣對(duì)角線元素之和。

10.2 源程序

import java.util.Scanner;  public class DuiJiaoXian {      public static void main(String[] args) {       Scanner s = new Scanner(System.in);       int[][] a = new int[3][3];         for (int i = 0; i < 3; i++) {           for (int j = 0; j < 3; j++) {              a[i][j] = s.nextInt();           }       }         System.out.println("輸入的3 * 3 矩陣是:");       for (int i = 0; i < 3; i++) {           for (int j = 0; j < 3; j++) {              System.out.print(a[i][j] + " ");           }           System.out.println();       }         int sum = 0;       for (int i = 0; i < 3; i++) {           for (int j = 0; j < 3; j++) {              if (i == j) {                  sum += a[i][j];              }           }       }       System.out.println("對(duì)角線和是 " + sum);    }}

10.3 運(yùn)行結(jié)果:

2 3 4 5

34 4 56 67

12 34 5 6

輸入的3 * 3 矩陣是:

2 3 4

5 34 4

56 67 12

對(duì)角線和是 48

10.4 源程序揭秘

利用雙重for循環(huán)控制輸入二維數(shù)組,再將a[i][i]累加后輸出。

由于博客字?jǐn)?shù)限制,40道程序設(shè)計(jì)課后習(xí)題總結(jié)將分4篇帖子進(jìn)行總結(jié),后面3篇帖子后面會(huì)一一貼出,或者可以在自己的博客下載已經(jīng)總結(jié)完的全文 http://my.oschina.net/mkh/blog/340689 ,里面有全面詳細(xì)的總結(jié)。

  原創(chuàng)文章歡迎轉(zhuǎn)載,轉(zhuǎn)載時(shí)請注明出處。

  作者推薦文章:

    》Java自學(xué)之道

    》給程序入門者的一點(diǎn)建議

    》總結(jié)5種比較高效常用的排序算法

    》如何獲取系統(tǒng)信息

    》如何生成二維碼過程詳解


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南宫市| 建始县| 通化县| 花莲市| 贺州市| 深圳市| 澄城县| 晋宁县| 随州市| 买车| 天长市| 南阳市| 神池县| 洪雅县| 疏附县| 吴桥县| 桐城市| 宜城市| 云阳县| 河源市| 开原市| 延吉市| 方城县| 察哈| 珠海市| 青龙| 阳山县| 邳州市| 策勒县| 南溪县| 甘孜县| 霍城县| 塔河县| 钦州市| 麟游县| 伊金霍洛旗| 陇西县| 娄底市| 多伦县| 武功县| 台东县|