首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

編程入門練習:學生成績統計與變量交換的兩種實現方式

     編輯:程式設計綜合問答

題目一:三門課程總分與平均分

import java.util.Scanner;

public class ScoreStats {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("輸入課程1成績: ");
        double score1 = sc.nextDouble();
        System.out.print("輸入課程2成績: ");
        double score2 = sc.nextDouble();
        System.out.print("輸入課程3成績: ");
        double score3 = sc.nextDouble();
        
        double total = score1 + score2 + score3;
        double average = total / 3.0;
        
        // 保留小數點後一位
        System.out.printf("總分: %.1f, 平均分: %.1f%n", total, average);
        // 或
        // System.out.println("總分: " + String.format("%.1f", total) + 
        //                   ", 平均分: " + String.format("%.1f", average));
    }
}

題目二:兩整數交換 (不借助第三變量 / 借助第三變量)

方法一:借助第三變量 (標準、通用、安全)

int a = 10, b = 20;
int temp = a;
a = b;
b = temp;
// 結果: a=20, b=10

方法二:不借助第三變量 - 算術運算

int a = 10, b = 20;
a = a + b;  // a=30
b = a - b;  // b=10 (原 a)
a = a - b;  // a=20 (原 b)
// 風險: 整數溢出 (a+b 超過 Integer.MAX_VALUE)

方法三:不借助第三變量 - 位運算 (XOR)

int a = 10, b = 20;
a = a ^ b;
b = a ^ b;  // b = (a^b)^b = a
a = a ^ b;  // a = (a^b)^a = b
// 優點: 無溢出風險、無臨時變量
// 缺點: 僅適用整數、可讀性差、現代編譯器優化下無性能優勢

完整演示程序

public class SwapDemo {
    public static void main(String[] args) {
        // 算術交換
        int a = 10, b = 20;
        System.out.println("算術交換前: a=" + a + ", b=" + b);
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println("算術交換後: a=" + a + ", b=" + b);
        
        // 位運算交換
        a = 10; b = 20;
        System.out.println("XOR交換前: a=" + a + ", b=" + b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("XOR交換後: a=" + a + ", b=" + b);
        
        // 第三變量交換 (推薦)
        a = 10; b = 20;
        System.out.println("臨時變量交換前: a=" + a + ", b=" + b);
        int temp = a;
        a = b;
        b = temp;
        System.out.println("臨時變量交換後: a=" + a + ", b=" + b);
    }
}

最佳實踐建議

場景推薦方法理由
一般業務代碼第三變量可讀性最好、無副作用、編譯器優化同樣高效
嵌入式/寄存器極少XOR節省一個寄存器
浮點數交換第三變量算術/XOR 不適用浮點數
面試展示技巧XOR/算術展示位運算/數學理解
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved