Bài 3: Mảng và lệnh lặp
xuất bản
Thông báo:
Cảm ơn bạn đã theo dõi QuangNinhBay.Com trong suốt thời gian qua.
Trong thời gian tới website sẽ update để bạn có trải nghiệm mượt mà hơn. Nội dung về thiết kế website cũng như các thủ thuật sẽ được đội ngũ QuangNinhBay.Com Update thường xuyên hơn.
Xin cảm ơn!
Đề bài:
Viết chương trình cho phép nhập dữ liệu từ bàn phím theo các ý sau:a) Viết chương trình xuất ra màn hình 9 bảng nhân và chỉ sử dụng 2 vòng for lồng nhau.
b) Viết chương trình cho phép người dùng khai báo một mảng số nguyên.
- in mảng người dùng đã nhập vào ra màn hình.
- Sau khi in ra màn hình hỏi người dùng có muốn sắp xếp mảng đó tăng dần hay không? Nếu người dùng trả lời “Y” thì sắp xếp mảng người dùng vừa nhập vào còn “N” thì in ra một “thông báo chương trình đã kết thúc”.
Cách giải:
a) Viết chương trình xuất ra màn hình 9 bảng nhân và chỉ sử dụng 2 vòng for lồng nhau.
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package QuangNinhBay.Com; /** * * @author QuangNinhBay.Com Niềm Vui Là Chia Sẻ ! */ public class NewClass { public static void main(String[] args) { //Viết chương trình xuất ra màn hình 9 bảng nhân và chỉ sử dụng 2 vòng for lồng nhau. for (int i = 1; i < 10; ) { // vòng lặp đầu tiên dùng để khai báo biến i điều kiện i nhỏ hơn 10 (bảng nhân của ta sẽ chạy từ 1 đến 9) System.out.printf("--- Bảng Nhân: %d --- \n",i); // in tên bảng nhân mấy ra màn hình biến là i for (int j = 1; j <= 10; j++) { // vòng lặp thứ 2 dùng đê khai báo biến "j" là biến mà ta sẽ đem "i" nhân với nó. System.out.printf("%d x %d = %d\n",i,j,i*j); // in ra màn hình ở đây %d thứ nhất là i, %d thứ 2 là j, %d thứ 3 là i*j } i++;// chạy xong vòng for thứ 2 bên trong. i++ sẽ tăng thêm 1 đơn vị( VD 1 sẽ lên 2 và tối đa đến 9 vì điều kiện vòng for thứ 1 i nhỏ hơn 10) } } }Diễn giải:
- Chúng ta sẽ dùng 2 vòng for lồng nhau như đề bài ra.
- Tư duy 1 chút ta có vòng for đầu tiên sẽ cho i chạy từ 1 tức là i = 1; i++ cho xuống dưới cùng dưới cả vòng for thứ 2 mục đích để chạy xong điều kiện vòng for thứ 2 hết ta tiếp tục tăng i lên 1 đơn vị để thực hiện bảng nhân tiếp theo cụ thể ở bài sẽ là bảng nhân 2.
- vòng for thứ 2 ở bên trong biến ta sẽ đặt là j cũng bằng 1 và điều kiện j <=10. tức là j sẽ chạy từ 1 đến 10 mới kết thúc vòng lặp. sau đó nó chạy đến i++ ở vòng lặp for thứ nhất i++ ở bên dưới và tiếp tục tăng lên 1 đơn vị rồi tiếp tục vào vòng for thứ nhất để thực hiện công việc như trên cho đến khi kết thúc điều kiện ở vòng for thứ nhất cụ thể là i = 9;
b) Viết chương trình cho phép người dùng khai báo một mảng số nguyên.
- in mảng người dùng đã nhập vào ra màn hình.
- Sau khi in ra màn hình hỏi người dùng có muốn sắp xếp mảng đó tăng dần hay không? Nếu người dùng trả lời “Y” thì sắp xếp mảng người dùng vừa nhập vào còn “N” thì in ra một “thông báo chương trình đã kết thúc”.
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package QuangNinhBay.Com; import java.util.Scanner; /** * * @author QuangNinhBay.Com Niềm Vui Là sẻ ! */ class Int { public static void main(String[] args) { int arrSoNguyen[]; int size; String input, chon = "y", khongchon = "n"; Scanner sc = new Scanner(System.in); System.out.println("xin mời nhập vào số lượng số nguyên bạn muốn nhập vào: "); size = Integer.parseInt(sc.nextLine()); arrSoNguyen = new int[size]; for (int i = 0; i < size; i++) { System.out.println("xin mời nhập vào số nguyên thứ " + i + ": "); arrSoNguyen[i] = Integer.parseInt(sc.nextLine()); } for (int i = 0; i < arrSoNguyen.length; i++) { System.out.println("Số nguyên thứ " + i + " là: " + arrSoNguyen[i]); } // sắp xếp mảng int TG; for (int i = 0; i < size - 1; i++) { for (int j = i + 1; j < size; j++) { if (arrSoNguyen[i] > arrSoNguyen[j]) { TG = arrSoNguyen[i]; arrSoNguyen[i] = arrSoNguyen[j]; arrSoNguyen[j] = TG; } } } System.out.println("bạn có muốn sắp xếp mảng số nguyên này theo thứ tự tăng dần hay không? y/n"); input = sc.nextLine(); if (input.equals(chon)) { System.out.println("Mảng đã sắp xếp tăng dần là: "); for (int i = 0; i < size; i++) { System.out.printf("%d", arrSoNguyen[i]); System.out.println(""); } } else if (input.equals(khongchon)) { System.out.printf("Bạn đã chọn không\nChương trình đã kêt thúc\n"); } } }c) Cho một mảng có sẵn int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 }. Hãy sử dụng thuật toán sắp xếp thông qua vòng lặp for để sắp xếp tăng dần và giảm dần lại mảng trên và in ra 2 mảng đó là chưa sắp xếp và đã sắp xếp.
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package QuangNinhBay; /** * * @author Admin */ public class NewClass3 { // Cho một mảng có sẵn int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 }. // Hãy sử dụng thuật toán sắp xếp thông qua vòng lặp for để sắp xếp tăng dần // và giảm dần lại mảng trên và in ra 2 mảng đó là chưa sắp xếp và đã sắp xếp. public static void main(String[] args) { int array[] = {2, 5, -2, 6, -3, 8, 0, -7, -9, 4}; int TG; System.out.println("Mảng Khi chưa sắp xếp là: "); for (int i = 0; i < 10; i++) { System.out.println(array[i]); } System.out.println("sau khi sắp xếp tăng dần"); for (int i = 0; i < 10; i++) { for (int j = i + 1; j < 10; j++) { if (array[i] > array[j]) { TG = array[i]; array[i] = array[j]; array[j] = TG; } } } //in ra mảng đã sắp xếp for (int i = 0; i < 10; i++) { System.out.printf("%d\n", array[i]); } System.out.println("sau khi sắp xếp giảm dần"); for (int i = 0; i < 10; i++) { for (int j = i + 1; j < 10; j++) { if (array[i] < array[j]) { TG = array[i]; array[i] = array[j]; array[j] = TG; } } } //in ra mảng đã sắp xếp for (int i = 0; i < 10; i++) { System.out.printf("%d\n", array[i]); } } }chúc các bạn học tập hiệu quả nhé!