1、古典問題:有一對兔子蛤织,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三 個月后每個月又生一對兔子鸿染, 假如兔子都不死指蚜,問每個月的兔子總數(shù)為多少?這是一個菲波拉契數(shù)列問題
public class No1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("請輸入要計算的月份數(shù):");
int N = sc.nextInt();//月份
int[] sum = new int[N];
for(int i = 0; i < N; i++){
if(i == 1 || i == 0){
sum[i] = 1;
System.out.println("第"+ (i+1) +"個月有"+ sum[i] +"對兔子");
}
else{
sum[i] = sum[i - 1] + sum[i - 2];
System.out.println("第"+ (i+1) +"個月有"+ sum[i] +"對兔子");
}
}
}
}
2牡昆、判斷 101-200 之間有多少個素數(shù)姚炕,并輸出所有素數(shù)摊欠。 程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除 2 到 sqrt(這個數(shù)),如果能被整除柱宦, 則表明 此數(shù)不是素數(shù)些椒,反之是素數(shù)。
public static void main(String[] args) {
int count = 0;
int j = 0;
for(int i = 101; i < 200; i++){
for ( j = 2; j < i; j++) {
// 如果j能被i整除就跳出循環(huán)
if (i % j == 0)
break;
}
//判斷循環(huán)是否提前跳出掸刊,如果j<i說明在2~j之間,i有可整除的數(shù)
if ( j >= i) {
count++;
System.out.println("素數(shù)為:"+ i);
}
}
System.out.println("101-200之間有"+ count +"個素數(shù)");
}
}
3免糕、打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個三位數(shù)忧侧,其各位數(shù)字立方和 等于該數(shù)本身石窑。例如:153 是一個 "水仙花數(shù) ",因為 153= 1的三次方+5的三次方+3的 三次方蚓炬。
public class No3 {
public static void main(String[] args) {
System.out.print("水仙花數(shù): ");
for(int i = 1; i <= 9; i++){
for(int j = 0; j <= 9; j++){
for(int k = 0; k <= 9; k++){
int num = i * 100 + j * 10 + k;
if(num == i*i*i + j*j*j + k*k*k){
System.out.print(num+"\t");
}
}
}
}
}
}
4松逊、將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入 90,打印出 90=233*5肯夏。 程序分析:對 n 進行分解質(zhì)因數(shù)经宏,應(yīng)先找到一個最小的質(zhì)數(shù) k,然后按下述步驟完成:
*(1)如果這個質(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 No4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.print(N + " = ");
//循環(huán)判斷
for (int k = 2; k <= N; k++) {
while (N != k) {
if (N % k == 0) {
System.out.print(k + "*");
N = N / k;
} else {
break;
}
}
}
System.out.print(N); // 打印出最后一個數(shù)
}
5李根、利用條件運算符的嵌套來完成此題:學(xué)習(xí)成績> =90 分的同學(xué)用 A 表示杀餐,60-89 分之 間的用 B 表示,60 分以下的用 C 表示朱巨。
public class No5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("請輸入成績:");
int num = sc.nextInt();
if(num > 100 || num < 0){
System.out.println("數(shù)據(jù)有誤史翘,請輸入0—100的數(shù)據(jù)。");
}
else{
String grade = (num >= 90) ? "A" : (num >= 60) ? "B" : "C";
System.out.println(grade);
}
}
}
}
6冀续、輸入兩個正整數(shù) m 和 n琼讽,求其最大公約數(shù)和最小公倍數(shù)。 /*在循環(huán)中洪唐,只要除數(shù)不等于 0钻蹬,用較大數(shù)除以較小的數(shù),將小的一個數(shù)作為下一輪循環(huán)的 大數(shù)凭需,取得的余數(shù)作為下一輪循環(huán)的較小的數(shù)问欠,如此循環(huán)直到較小的數(shù)的值為 0肝匆,返回較大 的數(shù),此數(shù)即為最大公約數(shù)顺献,最小公倍數(shù)為兩數(shù)之積除以最大公約數(shù)旗国。 /
public class No6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入兩個正整數(shù) m 和 n");
int m = sc.nextInt();
int n = sc.nextInt();
int max = run(m,n);
System.out.println("最大公約數(shù):" + max);
int min = m * n / max;
System.out.println("最小公倍數(shù)為:" + min);
}
public static int run(int m, int n) {
//判斷大小交換位置 使m > n
if (m < n) {
int t = m;
m = n;
n = t;
}
while (n != 0) {
//如果兩個數(shù)相等 就返回它本身
if (m == n)
return m;
else {
int k = m % n;
m = n;
n = k;
}
}
return m;
}
}
7、輸入一行字符注整,分別統(tǒng)計出其中英文字母能曾、空格、數(shù)字和其它字符的個數(shù)肿轨。
public class No7 {
public static void main(String[] args){
System.out.println("請輸入一行字符寿冕,分別統(tǒng)計出其中英文字母、空格椒袍、數(shù)字和其它字符的個數(shù)");
tiqv();
}
private static void tiqv() {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int num = 0,kong = 0,zimu = 0,other = 0;
//將字符串轉(zhuǎn)化為字符數(shù)組
char[] charr = str.toCharArray();
for(int i = 0; i < charr.length; i++){
//Character.isDigit判斷數(shù)組中是否有數(shù)字
if(Character.isDigit(charr[i])){
num++;
}
//Character.isSpaceChar判斷數(shù)組中是否有空格
else if(Character.isSpaceChar(charr[i])){
kong++;
}
//Character.isLetter判斷字符數(shù)組中的字母
else if(Character.isLetter(charr[i])){
zimu++;
}else{
other++;
}
}
System.out.println("英文字母有:" + zimu + "個");
System.out.println("空格有:" + kong + "個");
System.out.println("數(shù)字有:" + num + "個");
System.out.println("其他字符有:" + other + "個");
}
}
8驼唱、求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一個數(shù)字驹暑。例如 2+22+222+2222+22222(此 時共有 5 個數(shù)相加)曙蒸,幾個數(shù)相加有鍵盤控制。
public class No8 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要相加的數(shù)字a(0--9)和相加的次數(shù)b");
int a = sc.nextInt();//輸入的數(shù)字
int b = sc.nextInt();//輸入幾個數(shù)相加
int s = 0;//相加的和
int d = 0;
for(int i = 0; i < b; i++){
d = d + a;
s = d + s;
a = a * 10;
}
System.out.println("相加的總和:"+s);
}
}
9岗钩、一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "肖油。例如 6=1+2+3.編 程 找出 1000 以內(nèi)的所有完數(shù)兼吓。
public class No9 {
public static void main(String[] args){
for (int i = 1; i < 1000; i++)
{
int sum = 0;
for (int j = 1; j < i; j++)
{
if(i % j == 0)
{
sum += j;
}
}
if(i == sum)
{
System.out.println("完數(shù):" + i);
}
}
}
}
10、一球從 100 米高度自由落下森枪,每次落地后反跳回原高度的一半视搏;再落下,求它在 第 10 次落地時县袱,共經(jīng)過多少米浑娜?第 10 次反彈多高?
public class No5 {
public static void main(String[] args){
double h = 100.0;
double s = 100.0;
for(int i = 0; i < 10; i++){
h = h /2;
s += 2 * h;
}
System.out.println(h);
System.out.println(s);
}
}