?? 05. core java exercise.txt
字號:
1,編寫程序,判斷給定的某個年份是否是閏年。 閏年的判斷規則如下: (1)若某個年份能被4整除但不能被100整除,則是閏年。 (2)若某個年份能被400整除,則也是閏年。import java.util.Scanner;class Bissextile{ public static void main(String[] arge){ System.out.print("請輸入年份"); int year; //定義輸入的年份名字為“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year<0||year>3000){ System.out.println("年份有誤,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); }}2,給定一個百分制的分數,輸出相應的等級。 90分以上 A級 80~89 B級 70~79 C級 60~69 D級 60分以下 E級import java.util.Scanner;class Mark{ public static void main(String[] args){ System.out.println("請輸入一個分數"); //定義輸入的分數為“mark”,且分數會有小數 double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble(); //判斷是否有輸入錯誤。 if(mark<0||mark>100){ System.out.println("輸入有誤! "); System.exit(0); } /*判斷分數的等級 90分以上者A級, 80~89分者 B級,70~79分者 C級, 60~69者 D級,60分以下 E級 */ if (mark>=90) System.out.println("this mark is grade \'A\' "); else if (mark>=80) System.out.println("this mark is grade \'B\' "); else if (mark>=70) System.out.println("this mark is grade \'C\' "); else if (mark>=60) System.out.println("this mark is grade \'D\' "); else System.out.println("this mark is grade \'E\' "); }}3,編寫程序求 1+3+5+7+……+99 的和值。class he{ public static void main(String[] args){ int number = 1; //初始值1,以后再+2遞增上去 int sum = 0; for ( ; number <100; number+=2 ){ sum += number; } System.out.println("1+3+5+7+……+99= " +sum); }}4、利用for循環打印 9*9 表?1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81//循環嵌套,打印九九乘法表public class NineNine{ public static void main(String[]args){ System.out.println(); for (int j=1;j<10;j++){ for(int k=1;k<10;k++) { //老師的做法,判斷語句里的 k<=j,省去下列的if語句。 if (k>j) break; //此處用 continue也可以,只是效率低一點 System.out.print(" "+k+"X"+j+"="+j*k); } System.out.println(); } }}6、輸出所有的水仙花數,把謂水仙花數是指一個數3位數,其各各位數字立方和等于其本身, 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 class DafodilNumber{ public static void main(String[] args){ System.out.println("以下是所有的水仙花數"); int number = 100; // 由于水仙花數是三位數,故由100開始算起 int i, j, k; // i j k 分別為number 的百位、十位、個位 for (int sum; number<1000; number++){ i=number/100; j=(number-i*100)/10; k=number-i*100-j*10; sum=i*i*i+j*j*j+k*k*k; if (sum==number) System.out.println(number+" is a dafodil number! "); } }}7、求 a+aa+aaa+.......+aaaaaaaaa=? 其中a為1至9之中的一個數,項數也要可以指定。import java.util.Scanner;class Multinomial{ public static void main(String[] args){ int a; //定義輸入的 a int howMany; //定義最后的一項有多少個數字 Scanner scanner = new Scanner(System.in); System.out.println("請輸入一個 1~9 的 a 值"); a = scanner.nextInt(); System.out.println("請問要相加多少項?"); howMany = scanner.nextInt(); int sum=0; int a1=a; // 用來保存 a 的初始值 for (int i=1; i<=howMany; i++){ sum+= a; a = 10*a +a1; // 這表示a 的下一項 // 每次 a 的下一項都等于前一項*10,再加上剛輸入時的 a ;注意,這時的 a 已經變化了。 } System.out.println("sum="+sum); }}8、求 2/1+3/2+5/3+8/5+13/8.....前20項之和?class Sum{ public static void main(Sting[] args){ double sum=0; double fenZi=2.0, fenMu=1.0; //初始的分子 (fenZi)=2,分母(fenMu)=1 for(int i=1; i<=20; i++){ sum += fenZi / fenMu ; fenMu = fenZi; //下一項的分母 = 上一項的分子 fenZi += fenMu; //下一項的分子 = 上一項的分子加分母 } System.out.println("sum= "sum); }}9、利用程序輸出如下圖形: * * * * * * * * * * * * * * * * * * * * * * * * *class Asterisk{ public static void main(String[] args){ for (int i=1; i<=13; i+=2){ for(int j=1; j<=i && i+j<= 14; j++){System.out.print("* ");} System.out.println(); // 換行 } }}11、計算圓周率 PI=4-4/3+4/5-4/7....... 打印出第一個大于 3.1415小于 3.1416的值class Pi { public static void main(String[] args){ double pi =0; //定義初始值 double fenZi = 4; //分子為4 double fenMu = 1; //第一個4,可看作分母為1 的分式,以后的分母每次遞增2 for (int i = 0; i < 1000000000; i++){ //運行老久,減少循環次數會快很多,只是精確度小些 pi += (fenZi/fenMu) ; fenZi *= -1.0; //每項分子的變化是+4,-4,+4,-4 .... fenMu += 2.0; //分母的變化是1,3,5,7, .... 每項遞加2 } System.out.println(pi); }}輸出結果為pi = 3.1415926525880504,應該不精確12、輸入一個數據n,計算斐波那契數列(Fibonacci)的第n個值 1 1 2 3 5 8 13 21 34 規律:一個數等于前兩個數之和//計算斐波那契數列(Fibonacci)的第n個值
public class Fibonacci{
public static void main(String args[]){
int n = Integer.parseInt(args[0]);
int n1 = 1;//第一個數
int n2 = 1;//第二個數
int sum = 0;//和
if(n<=0){
System.out.println("參數錯誤!");
return;
}
if(n<=2){
sum = 1;
}else{
for(int i=3;i<=n;i++){
sum = n1+n2;
n1 = n2;
n2 = sum;
}
}
System.out.println(sum);
}
}//計算斐波那契數列(Fibonacci)的第n個值
//并把整個數列打印出來
public class FibonacciPrint{
public static void main(String args[]){
int n = Integer.parseInt(args[0]);
FibonacciPrint t = new FibonacciPrint();
for(int i=1;i<=n;i++){
t.print(i);
}
}
public void print(int n){
int n1 = 1;//第一個數
int n2 = 1;//第二個數
int sum = 0;//和
if(n<=0){
System.out.println("參數錯誤!");
return;
}
if(n<=2){
sum = 1;
}else{
for(int i=3;i<=n;i++){
sum = n1+n2;
n1 = n2;
n2 = sum;
}
}
System.out.println(sum);
}
}13、求1-1/3+1/5-1/7+1/9......的值。 a,求出前50項和值。 b,求出最后一項絕對值小于1e-5的和值。15、在屏幕上打印出n行的金字塔圖案,如,若n=5,則圖案如下: * *** ***** ******* *********//打印金字塔圖案
public class PrintStar{
public static void main(String args[]){
int col = Integer.parseInt(args[0]);
for(int i=1;i<=col;i++){//i表示行數
//打印空格
for(int k=0;k<col-i;k++){
System.out.print(" ");
}
//打印星星
for(int m=0;m<2*i-1;m++){
System.out.print("*");
}
System.out.println();
}
}
}16、歌德巴赫猜想,任何一個大于六的偶數可以拆分成兩個質數的和 打印出所有的可能//任何一個大于六的偶數可以拆分成兩個質數的和
//打印出所有的可能
public class Gedebahe{
public static void main(String args[]){
int num = Integer.parseInt(args[0]);
if(num<=6){
System.out.println("參數錯誤!");
return;
}
if(num%2!=0){
System.out.println("參數錯誤!");
return;
}
Gedebahe g = new Gedebahe();
//1不是質數,2是偶數,因此從3開始循環
for(int i=3;i<=num/2;i++){
if(i%2==0){//如果為偶數,退出本次循環
continue;
}
//當i與num-i都為質數時,滿足條件,打印
if(g.isPrime(i) && g.isPrime(num-i)){
System.out.println(i+" + "+(num-i)+" = "+num);
}
}
}
第4章 數組1. 定義一個int型的一維數組,包含10個元素,分別賦一些隨機整數,然后求出所有元素的最大值,最小值,平均值,和值,并輸出出來。class ArrayNumber{ public static void main(String[] args){ int[] arrayNumber; arrayNumber = new int[10]; System.out.println("以下是隨機的10個整數:"); // 填入隨機的 10個整數 for (int i =0; i<arrayNumber.length; i++){ arrayNumber[i] = (int)(100*Math.random()); System.out.print(arrayNumber[i]+" "); } System.out.println(); int max = arrayNumber[0]; int min = arrayNumber[0]; int sum = 0; for (int i =0; i<arrayNumber.length; i++){ if(max < arrayNumber[i]) max = arrayNumber[i]; //求最大值 if(min > arrayNumber[i]) min = arrayNumber[i]; //求最小值 sum += arrayNumber[i]; } System.out.println("其中 Max="+max+",Min="+min+",Sum="+sum+",Avg="+sum/10.0); }}2.定義一個int型的一維數組,包含10個元素,分別賦值為1~10, 然后將數組中的元素都向前移一個位置,即,a[0]=a[1],a[1]=a[2],…最后一個元素的值是原來第一個元素的值,然后輸出這個數組。3. 定義一個int型的一維數組,包含40個元素,用來存儲每個學員的成績,循環產生40個0~100之間的隨機整數,將它們存儲到一維數組中,然后統計成績低于平均分的學員的人數,并輸出出來。4. (選做)承上題,將這40個成績按照從高到低的順序輸出出來。5,(選做)編寫程序,將一個數組中的元素倒排過來。例如原數組為1,2,3,4,5;則倒排后數組中的值為5,4,3,2,1。6,要求定義一個int型數組a,包含100個元素,保存100個隨機的4位數。再定義一個 int型數組b,包含10個元素。統計a數組中的元素對10求余等于0的個數,保存 到b[0]中;對10求余等于1的個數,保存到b[1]中,……依此類推。class Remain{ public static void main( String[] args){ int[] a = new int[100]; //保存100個隨機4位數到 a 中 for (int i = 0; i < a.length; i++){ a[i] = (int) (1000*Math.random()); } //統計 a 數組中的元素對 10 求余的各個的數目 int[] b = new int[10]; int k,sum; for (int j = 0; j < b.length; j++){ for (k=0,sum=0; k < a.length; k++){ if ((a[k]%10)==j) sum++; } b[j] = sum; System.out.printf("b[%d]=%d\n",j,b[j]); } }}7,定義一個20*5的二維數組,用來存儲某班級20位學員的5門課的成績;這5門課 按存儲順序依次為:core C++,coreJava,Servlet,JSP和EJB。 (1)循環給二維數組的每一個元素賦0~100之間的隨機整數。 (2)按照列表的方式輸出這些學員的每門課程的成績。 (3)要求編寫程序求每個學員的總分,將其保留在另外一個一維數組中。 (4)要求編寫程序求所有學員的某門課程的平均分。class Student{ public static void main(String[] args ){ int[][] mark = new int[20][5]; // 給學生賦分數值,隨機生成 for ( int i = 0; ) }}//未完成
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -