Java基本語法練習題
- 1.輸出一個整數的每一位
- 2.輸出1000-2000之間所有的閏年
- 3.列印1-100之間所有的素數
- 4.輸出乘法口訣
- 5.求兩個整數的最大公約數
- 6.計算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值
- 7.1到100之間的所有整數中出現多少個9
- 8.輸出10000000以內的自冪數
- 9.撰寫代碼模擬三次密碼輸入場景
- 10.寫一個函式回傳引數二進制中1的個數
- 11.判斷數字n是不是2的k次方
- 12.獲取一個數二進制序列中所有的偶數位和奇數位(*)
- 13.完成猜數字游戲
1.輸出一個整數的每一位
參考代碼:
//通過回圈來不斷的%10/10來獲取每一位
public static void func4(int n){
while(n!=0){
System.out.print(n%10+" ");
n/=10;
}
}
2.輸出1000-2000之間所有的閏年
參考代碼:
//2.輸出1000-2000之間所有的閏年
for(int year=1000;year<=2000;year++){
if((year % 4 == 0&& year % 100 != 0)||year % 400 == 0){
System.out.println(year);
}
}
3.列印1-100之間所有的素數
素數:大于1自然數,且只能被1和其自身整除的數
參考代碼:
public class test {
public static boolean isPrime1(int n) {//方法一
for(int i = 2;i < n;i++){
if(n % i==0){//在n的范圍內沒有其他數字可以被n整除
return false;//否則回傳 false
}
}
return true;
}
public static boolean isPrime2(int n) {//方法二
for(int i = 2;i <=Math.sqrt(n);i++){
//該演算法只在該數字的開方內尋找,效率更高
if(n % i==0){
return false;
}
}
return true;
}
4.輸出乘法口訣
參考代碼:
// 3.輸出乘法口訣
for(int i=1;i<=9;i++){//一共列印9行
for(int j=1;j<=i;j++){//每行的輸出不超過行數
//注意這里是print
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
輸出結果:

5.求兩個整數的最大公約數
輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法,它的具體做法是:用較小數除較大數,再用出現的余數(第一余數)去除除數,再用出現的余數(第二余數)去除第一余數,如此反復,直到最后余數是0為止,如果是求兩個數的最大公約數,那么最后的除數就是這兩個數的最大公約數

參考代碼:
// 求兩個整數的最大公約數
//輾轉相除法
public static int func(int a,int b){//輾轉相除法
int c = a % b;
while(c!=0){//余數不為0,則進入回圈
a=b;//把除數賦值給被除數
b=c;//余數賦給除數
c=a%b;//新的余數
}
return b;
}
6.計算1/1-1/2+1/3-1/4+1/5…+1/99-1/100的值
參考代碼:
public static double func1(int n){//求1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值
double sum=0.0;//注意,需要用double 型別
int flg=1;//用于修改+-號
for(int i=1;i<=n;i++){
sum=sum+(flg)*1.0/i;
flg=-flg;
}
return sum;
}
運行結果:

7.1到100之間的所有整數中出現多少個9
參考代碼:
public static int func2(int n){
int count=0;
for(int i=1;i<=n;i++){//99有兩個9
if(i%10==9){//個位上有9的數字個數
count++;
}if(i/10==9){//十位上有9的個數
count++;
}
}
return count;
}
運行結果:

8.輸出10000000以內的自冪數
如果在一個固定的進制中,一個n位自然數等于自身各個數位上數字的n次冪之和,則稱此數為自冪數,(按10進制)
例如:在十進制中,153是一個三位數,各個數位的3次冪之和為
1 ^ 3+5 ^ 3+3^3=153,所以153是十進制中的自冪數
public static void func6(int n){
for(int i=0;i<n;i++){
int sum=0;
int count=0;//計算位數
int tmp=i;//避免求數字位數時導致數字丟失
//1.求當前數字是幾位數
while(tmp!=0){
count++;
tmp/=10;// 123/10=12 12/10=1 1/10=0
}
//得到當前數字的每一位
tmp=i;//避免求數字位數時導致數字丟失
while(tmp!=0){//對數字的每一位進行總位數的次方,并求和
//如135則為 1^3+5^3+3^3
sum+=Math.pow(tmp%10,count);
tmp=tmp/10;//參考第一題中獲得一個數的每一位
}
if(sum==i){
System.out.println(i);
}
}
}
運行結果:螢屏大小受限1~9之間的沒有截屏

9.撰寫代碼模擬三次密碼輸入場景
參考代碼:
public static void guessPassword(){//猜密碼三次登陸
Scanner scanner = new Scanner(System.in);
int count = 3;
while(count != 0){
System.out.println("請輸入你要猜的密碼:");
String password = scanner.nextLine();
if(password.equals("superman")){
System.out.println("登錄成功!");
return;
}else{
count--;
System.out.println("你還有"+count+"次機會!");
}
}
}
運行結果:

10.寫一個函式回傳引數二進制中1的個數
//輸入20
public static int func3(int n){
int count = 0;
while(n!=0){
count++;
n=n&(n-1);
}
return count;
}
運行結果:

11.判斷數字n是不是2的k次方
若n是2的k次方則其在記憶體中的二進制只有一位是1,此時 n&n-1結果是0
參考代碼:
public static boolean fun5(int n){
return ((n&(n-1))==0);
}
12.獲取一個數二進制序列中所有的偶數位和奇數位(*)
解題思路:
創建 n 變數儲存輸入數,然后由兩個回圈分別由高位到低位遍歷輸入數的二進制序列,奇數列從 n >> 31 一直遍歷到 n >> 1 并將每一位都輸出,需要注意 println 是帶換行符的輸出,為了讓數列保持在同一行,要換用 print 來輸出,回圈結束后再加一個換行陳述句,開啟下一條偶數列回圈,偶數列由 n >> 30 遍歷到 n >> 0 并將每一位都輸出,就能得到偶數列,
代碼實作:
public static void main(String[] args) {
System.out.println("請輸入一個整數: ");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
//列印奇數
System.out.println("奇數是:");
for(int i = 31; i >= 1; i -= 2){
System.out.print(((n>>i)&1) + " ");
}
System.out.println();
//列印偶數
System.out.println("偶數是:");
for(int i = 30; i >= 0; i -= 2){
System.out.print(((n>>i)&1) + " ");
}
運行結果:

13.完成猜數字游戲
游戲規則:
系統自動生成一個隨機整數(1-100),然后用戶輸入一個猜測的數字,如果輸入的數字比該亂數小,提示“猜小了”,如果輸入的數字比亂數小提示“猜大了”,如果相等則輸入“猜對了”,
參考代碼:
import java.util.Random;
import java.util.Scanner;
public class test {
// 12.完成猜數字游戲
Random random = new Random();//默認隨機種子是系統時間
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100)+1;//隨機生成的數字范圍是[0,100),+1才滿足題意
while(true) {
System.out.println("請輸入要猜測的數字:(1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("猜小了");
} else if (num > toGuess) {
System.out.println("猜大了");
} else {
System.out.println("恭喜你,猜對了");
break;
}
}
}
}
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328221.html
標籤:其他
