java基礎練習題


java基礎練習題

 

1變量、運算符和類型轉換:
1.1手動輸入一個學生的成績,對這個成績進行一次加分,加當前成績的20%,輸出加分后成績

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入一個數字");
        int num = scan.nextInt();
        num += num * 0.2;
        System.out.println(num);

1.2商場舉行店慶,抽幾折打幾折,
先手動輸入消費金額,再輸入,抽到的折扣,計算出折后價格

復制代碼
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入消費金額");
        int num = scan.nextInt();
        System.out.println("請輸入抽到的折扣");
        int dis = scan.nextInt();
        int price = 0;// 累加變量
        price = num * dis / 10;
        System.out.println("折后價格:" + price);
復制代碼

1.3手動輸入一個4位數,求各位數字之和

復制代碼
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入一個4位數");
        int shu = scan.nextInt();
        int a = shu / 1 % 10;
        int b = shu / 10 % 10;
        int c = shu / 100 % 10;
        int d = shu / 1000 % 10;
        System.out.println(a + b + c + d);
復制代碼

2分支結構:
2.1商場消費返利活動,手動輸入顧客消費金額,
如果金額打8折后仍然滿1000元,用戶就獲得200元代金券一張(不考慮多張)

復制代碼
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入消費金額");
        int num = scan.nextInt();

        double dis = num * 0.8;// 打折后的價格
        if (dis > 1000) {
            dis = dis - 200;// 200元代金券
        }
        System.out.println(dis);
復制代碼

 

2.2用戶輸入一個年份,如果是閏年輸出是閏年
(年份能被4整除,且不能被100整除,或者能被400整除的年份)

復制代碼
        Scanner input = new Scanner(System.in);
        System.out.println("輸入年份");
        int year = input.nextInt();
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            System.out.println("是閏年");
        } else {
            System.out.println("不是閏年");
        }
復制代碼

 

2.3手動輸入一個整型會員號,
如果用戶輸入的是4位數字,
輸出登錄成功,
如果用戶輸入的不是4位數字,
輸出“您輸入的會員號有誤”

復制代碼
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入整型會員號");
        int num = input.nextInt();
        int i = 0;// 初始化 數字的位數
        while (num != 0) {
            num = num / 10;// 被10整除 i++;
        } // 最后,這個 i 就是數字的位數
        if (i != 4) {
            System.out.println("您輸入的會員號有誤");
        } else {
            System.out.println("登錄成功!");
        }
復制代碼

 

2.4手動輸入a,b,c三個變量的數值,
要求通過數值交換,
把輸入的數值從小到大
排序放入a,b,c中,並輸出

復制代碼
        Scanner scanner = new Scanner(System.in);
        System.out.print("請輸入第一個整數:");
        int a = scanner.nextInt();
        System.out.print("請輸入第二個整數:");
        int b = scanner.nextInt();
        System.out.print("請輸入第三個整數:");
        int c = scanner.nextInt();

        int x = 0;
        if (a > b) {
            x = a;
            a = b;
            b = x;
        }
        if (a > c) {
            x = a;
            a = c;
            c = x;
        }
        if (b > c) {
            x = b;
            b = c;
            c = x;
        }
        System.out.println(a + "," + b + "," + c);
復制代碼

 

3多分支結構
3.1商場根據會員積分打折,
2000分以內打9折,
4000分以內打8折
8000分以內打7.5折,
8000分以上打7折,
使用if-else-if結構,實現手動輸入購物金額和積分,計算出應繳金額

復制代碼
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入購物金額");
        double shop = sc.nextDouble();
        System.out.println("請輸入積分");
        int fen = sc.nextInt();
        if (fen < 2000) {
            shop *= 0.9;
            System.out.println("目前消費" + shop + "元");
        } else if (fen >= 2000 && fen <= 4000) {
            shop *= 0.8;
            System.out.println("目前消費" + shop + "元");
        } else if (fen <= 8000 && fen > 4000) {
            shop *= 0.75;
            System.out.println("目前消費" + shop + "元");
        } else if (fen > 8000) {
            shop *= 0.7;
            System.out.println("目前消費" + shop + "元");
        } else {
            System.out.println("抱歉沒有折扣");
        }
復制代碼

 

3.2機票價格按照淡季旺季、頭等艙和經濟艙收費、
輸入機票原價、月份和頭等艙或經濟艙,
其中旺季(5-10月)頭等艙9折,經濟艙85折,
淡季(11月到來年4月)頭等艙7折,經濟艙65折,
最終輸出機票價格

        Scanner s = new Scanner(System.in);
        System.out.println("請輸入機票原價");
        int piao = s.nextInt();
        System.out.println("請輸入月份");
        int yue = s.nextInt();
        System.out.println("請選擇:1.頭等" + "2.經濟");
        int l = s.nextInt();
        if (yue >= 5 && yue <= 10) {// 旺季
            if (l == 1) {
                piao *= 0.9;
            } else {
                piao *= 0.85;
            }

        } else {// 淡季
            if (l == 1) {
                piao *= 0.7;
            } else {
                piao *= 0.65;
            }

        }
        System.out.println(piao);
View Code

 

3.3選擇一個形狀(1長方形、2正方形、3三角形、4圓形)
根據不同的選擇讓用戶輸入不同的信息,
長方形有長和寬、
正方形有邊長、
三角形有底和高、
圓形有半徑,
計算輸出指定形狀的面積

        Scanner scan=new Scanner(System.in);
        System.out.println("1長方形、2正方形、3三角形、4圓形");
        int num=scan.nextInt();
        switch(num) {
        case 1:
            System.out.println("請輸入長方形的長");
            int l=scan.nextInt();
            System.out.println("請輸入長方形的寬");
            int w=scan.nextInt();
            int fs=l*w;
            System.out.println("長方形面積為:"+fs);
            break;
        case 2:
            System.out.println("請輸入正方形邊長");
            int z=scan.nextInt();
            System.out.println("正方形面積為:"+z*z);
            break;
        case 3:
            System.out.println("請輸入三角形的底長");
            int d=scan.nextInt();
            System.out.println("請輸入三角形的高");
            int g=scan.nextInt();
            System.out.println("三角形面積為:"+d*g/2);
            break;
        case 4:
            System.out.println("請輸入圓形的半徑");
            double r=scan.nextDouble();
            double ys=3.14*r*r;
            System.out.println("圓形面積為:"+ys);
            break;
        }
View Code

 

3.4輸入年份和月份,輸出這個月應該有多少天(使用switch結構)

復制代碼
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入年份");
        int year = scan.nextInt();
        System.out.println("請輸入月份");
        int month = scan.nextInt();
        switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            System.out.println("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("30天");
            break;
        case 2:
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println("29天");
            } else {
                System.out.println("28天");
            }
        }
復制代碼

 

4循環結構(上)
4.1隨機生成一個1-100之間的數字num,循環讓用戶輸入猜這個數,
如果用戶輸入的數字大於num提示輸入的數字比較大,
如果用戶輸入的數字小於num提示輸入的數字比較小,
直到用戶輸入的數字和num相等為止,然后輸出用戶猜數的總次數

復制代碼
        Scanner scan=new Scanner(System.in);
        Random ran=new Random();
        //生成游戲答案1~100
        int num=ran.nextInt(100)+1;
        //System.out.println(num);
        int n=0;//定義n的初值
        int i=0;//定義猜數次數
        while(n!=num) {
            System.out.println("請猜數字");
            n=scan.nextInt();
            if(n>num) {//判斷猜數結果
                System.out.println("輸入的數字較大");
            }else if(n<num) {
                System.out.println("輸入的數字較小");
            }else {
                System.out.println("恭喜您猜對了");
            }
            i++;//猜數次數加1
        }
        System.out.println("總共猜了"+i+"次");
復制代碼

 

4.2打印出1-100之間所有不是7的倍數和不包含7的數字,並求和

復制代碼
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if(i%7 ==0 || i%10 == 7 || i/10 == 7){//注意:70-79容易漏掉
                continue;
            }
            sum += i;
        }
        System.out.println(sum);
復制代碼

 

4.3循環輸入5個數,輸完后顯示這些數中有沒有負數

復制代碼
        Scanner scan=new Scanner(System.in);
        System.out.println("請輸入5個數字");
        int flag=0;//立旗
        int i=1;
        while(i<=5) {
            int num=scan.nextInt();
            if(num<0) {
                flag=1;
            }
            i++;
        }
        if(flag==0) {
            System.out.println("沒有負數");
        }else {
            System.out.println("有負數");
        }
復制代碼

 

5循環結構(下)
5.1有一個有錢的神經病,他往銀行里存錢,
第一天存1元,以后每天比前一天多存50%,完成下列計算任務
1)他存到第幾天,當天存的錢會超過10元

復制代碼
        double money=1;
        int day=1;
        while(money<10) {
            money*=1.5;
            day++;
            System.out.println("day:"+day+",money:"+money);
        }
        System.out.println(day);
復制代碼


2)一個月(30天)后,他總共存了多少錢

復制代碼
double sum=0;
        double mo=1;
        for(int i=1;i<=30;i++) {
            sum+=mo;
            System.out.println("i:"+i+",money:"+mo+",sum:"+sum);
            mo*=1.5;
        }
        System.out.println(sum);
復制代碼

 

 

 

5.2有一個400米一圈的操場,一個人要跑10000米,
第一圈50秒,其后每一圈都比前一圈慢1秒,
按照這個規則計算跑完10000米需要多少秒

復制代碼
        int round=10000/400;
        int sum=0;
        int time=50;
        for(int i=1;i<=round;i++) {
            sum+=time;
            System.out.println("圈數:"+i+",時間:"+time+",花的時間:"+sum);
            time++;
        }
        System.out.println(sum);
復制代碼

 

5.3用戶輸入任意一個整數,求各位數字之和

復制代碼
        Scanner scan=new Scanner(System.in);
        System.out.println("請輸入一個數字");
        int num=scan.nextInt();
        int sum=0;//累加變量
        while(num>0) {
            //將數字的個位取出累加
            sum+=num%10;
            //將當前數字除以10,以便下次循環使用
            num=num/10;//num/=10;
        }
        System.out.println(sum);
復制代碼

 

5.4井里有一只蝸牛,他白天往上爬5米,晚上掉3.5米,井深56.7米
計算蝸牛需要多少天才能從井底到爬出來

復制代碼
        int day=1;//天數
        double sum=0;//爬過的距離
        while(true) {
            //白天向上爬5米
            sum+=5;
            System.out.println("day:"+day+",sum:"+sum);
            if(sum>=56.7) {//如果爬出了井
                //退出循環
                break;
            }
            //晚上掉3.5;
            sum-=3.5;
            day++;
        }
        System.out.println(day);
復制代碼

 

6循環嵌套
6.1求1~1000以內質數列表
PS:質數是只能被1和自身整除的整數

復制代碼
        int i, j;
        for (i = 1; i <= 1000; i++) {
            for (j = 2; j < i; j++) {
                if (i % j == 0)
                    break;
            }

            if (i == j){
                System.out.print(j + " ");
            }

        }
復制代碼

 

7數組
7.1定義一個數組int[] nums={8,7,3,9,5,4,1}
輸出數組中的最大值和最大值所在的下標

復制代碼
        int[] nums={8,7,3,9,5,4,1};
        int max = nums[0];//默認第一個最大
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
                index = i;
            }
        }
        System.out.println("最大的數: "+max+" 下標: "+index);
復制代碼

 

7.2向一個長度為10的整型數組中隨機生成10個0~9的隨機整數,完成下列任務
1)升序輸出、降序輸出
2)輸出總和、平均數

復制代碼
        Random ran = new Random();
        int[] num = new int[10];
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10);
        }
        Arrays.sort(num);
        for (int i = 0; i < num.length; i++) {
            System.out.print(num[i] + " ");
        }
        System.out.println("------升序------");
        for (int i = num.length - 1; i >= 0; i--) {
            System.out.print(num[i] + " ");
        }
        System.out.println("------降序------");

        // 總和
        int sum = 0;
        for (int i = 0; i < num.length; i++) {
            sum = num[i] + sum;
        }
        System.out.println("總和:" + sum);

        // 平均數
        int sum2 = 0;
        for (int i = 0; i < num.length; i++) {
            sum2 = num[i] + sum2;
        }
        System.out.println("平均數:" + sum2 / num.length);
復制代碼

 

7.3向一個長度為5的整型數組中隨機生成5個1-10的隨機整數
要求生成的數字中沒有重復數

復制代碼
        int[] nums = new int[5];
        Random ran = new Random();
        
        for (int i = 0; i < nums.length; i++) {
            nums[i] = ran.nextInt(10) + 1;
            
            for (int j = 0; j < i; j++) {
                while (nums[i] == nums[j]) {//如果重復,退回去重新生成隨機數
                    i--;
                }
            }
        }
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
復制代碼

 

7.4(選做)向一個長度為10的整型數組中隨機生成10個0~9的隨機整數,完成下列任務
1)統計每個數字出現了多少次
2)輸出出現次數最多的數字
3)輸出只出現一次的數字中最小的數字

復制代碼
        Random r = new Random();
        // 1. 聲明源數組,包含10個0-9之間的隨機數
        int[] src = new int[10];
        // 2. 聲明一個標記數組,存放的是0-9,10個數字
        int[] flag = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        // 3. 聲明一個用來統計標記數組中數字在源
        // 數組中的個數
        int[] count = new int[flag.length];
        // 4. 給源數組賦值0-9之間的隨機數
        for (int i = 0; i < src.length; i++) {
            src[i] = r.nextInt(10);
        }
        // 5. 統計標記數組中的每個元素在源數組中
        // 有多少個即給count數組賦值
        for (int i = 0; i < flag.length; i++) {
            for (int j = 0; j < src.length; j++) {
                // 如果標記數組中的數字在源數組中有,則count+1
                if (flag[i] == src[j]) {
                    count[i]++;
                }
            }
        }
        // 6. 輸出src和count的數據
        System.out.println("隨機產生的數據如下:");
        System.out.println(Arrays.toString(src));
        // System.out.println(Arrays.toString(count));

        // a.統計每個數字出現的次數
        // 如果count中的元素的值大於0,則輸出其下標和值
        for (int i = 0; i < count.length; i++) {
            if (count[i] > 0) {
                System.out.println("數字" + i + "出現" + count[i] + "次");
            }
        }

        // b.輸出出現最多次數的數字
        // 假設第一個統計的數字就是最多那個
        int max = count[0];
        int index = 0;
        for (int i = 0; i < count.length; i++) {
            if (count[i] > max) {
                max = count[i];
                index = i;
            }
        }
        System.out.println("出現次數最多的數字是" + index);

        // c. 輸出只出現一次的數字中最小的數字
        for (int i = 0; i < count.length; i++) {
            if (count[i] == 1) {
                System.out.println("出現1次的數字中最小的是" + i);
                break;
            }
        }
復制代碼

 

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM