java基礎練習題


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

Scanner scan = new Scanner(System.in);
 
System.out.println("請輸入一個成績");
double num = scan.nextDouble();
num += num*0.2;
 
System.out.println(num);
View Code

 

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

Scanner scan = new Scanner(System.in);

System.out.println("輸入消費金額:");
double num = scan.nextDouble();//獲取鍵盤數據

System.out.println("抽到的折扣:");
int dis = scan.nextInt();//獲取鍵盤,掃描對象scan依然可用

double price = (num*dis)/10;
System.out.println("折后的價格:" + price);
View Code

 

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

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入一個4位數:");
        int i = scan.nextInt();

        //思路:除以10 100 1000實現小數點左移取整 模10得到個位數的值
        int a,b,c,d;
        d = i%10;
        c = i/10%10;
        b = i/100%10;
        a = i/1000%10;

        int num = a+b+c+d;
        System.out.println(num);    
View Code

 

2、分支結構

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入消費金額:");
        int i = scanner.nextInt();//這里只做整數計算

        double dis = i*0.8;//打折后金額
        if(dis>=1000){
            dis -= 200;
        }

        System.out.println("最后支付費用為:"+dis);
View Code

 

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

        Scanner scanner = new Scanner(System.in);//創建掃描對象同時建立引用
        System.out.println("請輸入年份:");
        int year = scanner.nextInt();

        if(year%4==0&&year%100!=0||year%400==0){//思路:整百年份只有能被400整除的年份是閏年,非整百年份能被4整除,且不能被100整除)
            System.out.println("是閏年");
        }else {
            System.out.println("不是閏年");
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入會4位員號:");
        int num = scanner.nextInt();

        int i = 0;//位計數
        while (num != 0){   //巧用循環
            i++;
            num /= 10;  //除以10取整相當於小數點左移取整
        }

        System.out.println(i);
        if (i == 4){
            System.out.println("登錄成功");
        }else {
            System.out.println("輸入有誤");
        }
View Code

 

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入會4位員號:");
        int num = scanner.nextInt();

        int i = 0;//位計數
        while (num != 0){   //巧用循環
            i++;
            num /= 10;  //除以10取整相當於小數點左移取整
        }

        System.out.println(i);
        if (i == 4){
            System.out.println("登錄成功");
        }else {
            System.out.println("輸入有誤");
        }

        scanner.close();
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入3個整數:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        int i=0;
   
        //兩兩比較
        if(a>b){
            i=a;
            a=b;
            b=i;
        }
        if (a>c){
            i=a;
            a=c;
            c=i;
        }
        if (b>c){
            i=b;
            b=c;
            c=i;
        }

        System.out.print(a+"\t"+b+"\t"+c);
        scanner.close();
View Code

 

3、多分支結構 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入會員的積分:");
        int fen = scanner.nextInt();
        System.out.println("請輸入本次消費金額:");
        int shop = scanner.nextInt();

        if(fen<2000){
            shop *= 0.9;
        }else if(fen<4000){
            shop *= 0.8;
        }else if(fen<8000){
            shop *= 0.75;
        }else{
            shop *= 0.7;
        }

        System.out.println("應繳金額為:"+shop+"元");
        scanner.close();
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入機票原價:");
        int piao = scanner.nextInt();
        System.out.println("請輸入當前月份:");
        int month = scanner.nextInt();
        System.out.println("請選擇:1、頭等艙 2‘經濟艙");
        int i = scanner.nextInt();

        if(month>=5 && month<=11){
            System.out.print("當前是旺季,");
            if (i == 1){
                piao *= 0.9;
                System.out.println("您的票是頭等艙,折扣票價為:"+ piao);
            }else {
                piao *= 0.85;
                System.out.println("您的票是經濟艙,折扣票價為:"+piao);
            }

        }else if(month==12 || month>=1 && month<=4){
            System.out.print("當前是淡季,");
            if (i == 1){
                piao *= 0.7;
                System.out.println("您的票是頭等艙,折扣票價為:"+piao);
            }else {
                piao *= 0.65;
                System.out.println("您的票是經濟艙,折扣票價為:"+piao);
            }
        }else {
            System.out.println("月份錯誤");
        }
        scanner.close();
View Code


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

        Scanner scanner = new Scanner(System.in);       //創建掃描對象
        System.out.println("請選擇一個形狀:1長方形 2正方形 3三角形 4圓形");
        int i = scanner.nextInt();          //獲取鍵盤
        float pi = 3.141592f;
        double result;

        //對比輸入值
        switch (i){
            case 1:
                System.out.println("輸入長度:");
                int length = scanner.nextInt();
                System.out.println("輸入寬度:");
                int wide = scanner.nextInt();
                result = length * wide;
                System.out.println("長方形的面積是:"+ result);
                break;
            case 2:
                System.out.println("輸入邊長:");
                int l = scanner.nextInt();
                result = l*l;
                System.out.println("正方形的面積是:"+ result);
                break;
            case 3:
                System.out.println("輸入底長:");
                int d = scanner.nextInt();
                System.out.println("輸入高:");
                double h = scanner.nextInt();
                result = d*h/2;
                System.out.println("三角形的面積是:"+ result);
                break;
            case 4:
                System.out.println("輸入半徑:");
                double r = scanner.nextDouble();
                result = pi*r*r;
                System.out.println("圓的面積是:"+ result);
                break;
        }
        scanner.close();
View Code

 

4、循環結構 

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

        Random random = new Random();//創建隨機數生成器對象
        int num = random.nextInt(100)+1;//int nextInt(int n):返回一個偽隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值n(不包括)之間均勻分布的 int 值。

        Scanner scanner = new Scanner(System.in);
        System.out.println("請猜一個數字:");
        int i = 0;
        int count = 0;

        while(i!=num){
            i = scanner.nextInt();
            count++;
            if (i>num){
                System.out.println("猜大了");
            }else{
                System.out.println("猜小了");
            }

        }

        System.out.println("恭喜正確,您一共猜了"+ count +"次!");
        scanner.close();
View Code

 

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

        int num = 0;

        for (int i = 1; i <= 100; i++) {
            if(i%7 != 0 && i%10 != 7 && i/10 != 7){
                num += i;
            }
        }

        System.out.println(num);
View Code
        int num = 0;

        for (int i = 1; i <= 100; i++) {
            if(i%7 == 0 || i%10 == 7 || i/10 == 7){
                continue;
            }
            num += i;
        }

        System.out.println(num);
View Code

 

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

        int count = 0;
        int flag = 0;//立旗
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入5個數字:");

        while (count<5){
            int num = scanner.nextInt();
            if(num<0){
                flag=1;
            }
            count++;
        }
        if(flag==0){
            System.out.println("沒有負數");
        }else {
            System.out.println("有負數");
        }
        scanner.close();
View Code

 

5、循環結構(下)

5.1有一個有錢的神經病,她往銀行里存錢。第一天存1元,以后每天比前一天多存50%,完成下列計算任務

1)他存到第幾天,當天存的錢會超過10元
        double money = 1;
        int day = 1;

        while (money<10){
            money *= 1.5;
            day++;
        }
        System.out.println("第" + day +"天超過10元");
View Code

 

        double money = 1;
        int day =1;
        //day在for中定義是局部變量,不能在外部直接輸出;
        for (;true;day++) {
            if(money>10){
                break;
            }
            money *= 1.5;
        }

        System.out.println("第" + day +"天超過10元");
View Code

 

        double money = 1;
        int day = 1;

        //使用if break的方式
        while (true){
            if(money>10){
                break;
            }
            money *= 1.5;
            day++;
        }

        System.out.println("第" + day +"天超過10元");
View Code

 

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

        double money = 1;
        double num = 0;

        for (int day = 1; day <= 30; day++) {
            num += money;
            System.out.println("day:"+day+",money:" + money);
            money *= 1.5;
        }
        
        System.out.println("一個月共存了" + money +"元");
View Code

 

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

        int time = 50;
        int round = 10000/400;
        int sum =0;

        for (int i = 1; i <= round; i++) {
            sum += time;
            time++;
        }
        
        System.out.println(sum);
View Code

 

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入一個整數");
        int num = scanner.nextInt();
        int sum = 0;

        while (num>0){
            sum += num%10;//模10得到個位的數字
            num = num/10;//除以10取整得到個位前面的數字
        }
        
        System.out.println("各位數字之和為:" + sum);
View Code

 

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

        int day = 1;
        double sum = 5;

        while (sum <= 56.7){
            sum -= 3.5;
            day++;
            sum += 5;
        }
        System.out.println("需要" +day+ "天");
    }
View Code
        int day = 1;
        double sum = 0;

        while (true){
            sum +=5;
            if(sum>56.7){
                break;
            }
            sum -= 3.5;
            day++;
        }
        System.out.println(day);
View Code

 

6、循環嵌套

6.1求1-1000以內的質數列表。質數是只能被1和自身整除的整數

        int i,j;
        int count=0;

        //思路:遍歷測試從2-自身(包含)之間的因數,如果只有自身則說明是質數(如果這個因數小於自身,說明i有其它因數)
        for (i = 1; i <1000 ; i++) {//1不是質數,質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
            for(j = 2;j<=i;j++){
                if(i%j==0){//找因數
                    break;
                }
            }
            if(i==j){
                System.out.print(i+"\t");
                count++;
            }
            if(count == 10){
                System.out.println();
                count = 0;
            }
        }
View Code
        //思路:遍歷測試2-自身之間的數,如果沒有因數說明i是質數(如果有因數,則說明i不是質數
        int j;
        for (int i=1;i<150;i++){//1不是質數
            for (j=2;j<i;j++){
                if (i%j == 0){//找因數
                   break;
                }
            }
            if(j<i){
                continue;
            }
            System.out.print(i+" ");
        }
View Code
        //思路:遍歷測試2-自身之間的數,如果沒有因數說明i是質數(如果有因數,則說明i不是質數
        outhor:
        for (int i=1;i<150;i++){//1不是質數
            for (int j=2;j<i;j++){
                if (i%j == 0){//找因數
                    continue outhor;
                }
            }
            System.out.print(i+" ");
        }
View Code

 

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;
        
        //思路:遍歷數組元素,與max比較
        for (int i = 1; i < nums.length; i++) {
            if(nums[i]>max){
                max=nums[i];
                index = i;
            }
        }
        System.out.println("最大值是:"+max+",下標是:"+index);
View Code

 

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

        int[] ints = new int[10];
        Random random = new Random();

        //生成數組
        for (int i = 0; i < 10; i++) {
            ints[i] = random.nextInt(10);
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //升序輸出
        int n;
        for (int j = 9; j > 0; j--) {
            for (int i = 0; i < j; i++) {
                if(ints[i+1]<ints[i]){
                    n = ints[i];
                    ints[i] = ints[i+1];
                    ints[i+1] = n;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //降序輸出
        for (int j = 9; j > 0; j--) {
            for (int i = 0; i < j; i++) {
                if(ints[i]<ints[i+1]){
                    n = ints[i];
                    ints[i] = ints[i+1];
                    ints[i+1] = n;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            System.out.print(ints[i]+" ");
        }

        //總和 平均數
        System.out.println();
        double sum=0;
        for (int i = 0; i < 10; i++) {
            sum += ints[i];
        }
        System.out.print("數組元素的總和是:"+sum+",平均數是:"+sum/10);
View Code

 

        //創建對象
        Random ran = new Random();
        int[] num = new int[10];

        //生成數組
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10);
        }

        //使用sort方法排序 Arrays.sort(數組名,起始下標,終止下標);
        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);
        System.out.println("平均數:" + sum / num.length);
View Code

 

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

        int[] num = new int[5];
        Random ran = new Random();
        
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10)+1;//元素獲取隨機數
            //思路:新元素值與前面的元素遍歷比較,如果相等,退回去重新生成隨機數,再次遍歷比較
            for (int j = 0; j < i; j++) {
                if(num[i]==num[j]){
                    i--;
                    break;
                }
            }
        }

        //foreach語法 遍歷數組 訪問集合中的元素
        for (int x:num) {
            System.out.println(x);
        }
View Code

 

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

        //創建對象,生成一個隨機數組
        int[] ints = new int[20];
        Random random = new Random();
        for (int i = 0; i < ints.length; i++) {
            ints[i] = random.nextInt(20);
            System.out.print(ints[i]+" ");
        }
        System.out.println();

        //按照元素互相比較的方法進行統計的思路
        int count = 0;
        int n = 0;
        int[][] numbs = new int[ints.length][2];
        outhor:
        for (int i = 0; i < ints.length; i++) {//遍歷ints[i]的元素
            //左側若有重復,則跳出循環遍歷下一個元素
            for (int j = i-1; j >= 0; j--) {
                if(ints[i]==ints[j]){
                    continue outhor;
                }
            }
            //右側有重復,則計數累加,並輸出數字
            for (int j = i; j < ints.length; j++) {
                if(ints[i]==ints[j]){
                    count++;
                }
            }
            System.out.println("數字"+ints[i]+ "出現了"+count+"次,");//輸出數字和出現次數

            //用二維數組存儲下每個數字及出現次數,數組有效長度為n,這里數字已無重復
            numbs[n][0] = ints[i];
            numbs[n][1] = count;
            n++;
            count = 0;
        }
        for (int i = 0; i < n; i++) {
            System.out.println(numbs[i][0] +"\t"+ numbs[i][1]+",");//查看二維數組
        }

        //提取最大的計數值(出現次數)
        int maxc = 0;
        for (int i = 0; i < n; i++) {
            if(numbs[i][1]>maxc){
                maxc = numbs[i][1];
            }
        }
        //輸出計數值(出現次數)為最多的所有數字
        System.out.print("出現次數最多的數字是:");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == maxc){
                System.out.print(numbs[i][0]+ " ");
            }
        }
        System.out.println();

        //提取計數(出現次數)為1的數字,存儲在數組中,數組有效長度為m
        int[] num =new int[n];
        int m = 0;
        System.out.print("只出現一次的數字是:");
        for (int i = 0; i < n; i++) {
            if(numbs[i][1] == 1) {
                System.out.print(numbs[i][0] + " ");
                num[m] = numbs[i][0];
                m++;
            }
        }
        //輸出最小數字
        int min = num[0];
        for (int i = 1; i < m; i++) {
            if(num[i]<min){
                min = num[i];
            }
        }
        System.out.println("其中最小的數字是:"+min);
View Code

 

 

2021-10-18

//即使再小的帆也能遠航~~~


免責聲明!

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



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