[Lập trình C] In bảng cửu chương

Wednesday, January 17, 2024
Edit this post


Đây là một câu hỏi phỏng vấn tôi đã từng gặp (cho vị trí Automation QA), và cũng là một trong những bài tập cơ bản nằm ở phần đầu của quyển 250 bài tập kỹ thuật lập trình C của tác giả Dương Thiên Tứ, quyển sách mà tôi khuyên những bạn sinh viên IT rất nên tham khảo. 

Bảng cửu chương (multiplication table) là một thứ vô cùng gần gũi và cơ bản mà chúng ta đã được học ở tiểu học. In bảng cửu chương là một bài tập đơn giản nhưng giúp chúng ta hiểu rõ hơn về vòng lặp và cách sử dụng chúng. Đề bài cơ bản như sau: Nhập vào một số n bất kỳ trong khoảng từ 2 tới 9, in ra bảng cửu chương của số đó.

Ví dụ:

Input n=3

3 x 2 =  6
3 x 3 =  9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
Cũng như mọi khi, các bạn hãy cố gắng tự suy nghĩ cách làm trước khi đọc bài giải nhé. Lưu ý, để đơn giản hóa, tôi tạm bỏ qua bước kiểm tra ràng buộc để n chỉ nằm trong khoảng từ 2 tới 9. Với bài đầu tiên này, chỉ cần dùng 1 vòng lặp duy nhất là đủ.

#include <stdio.h>

int main()
{
    int n;
    printf("Input n=");
    scanf("%d", &n);
    putchar('\n');
    
    for (int i=2; i<=9; i++) {
        printf("%d x %d = %2d\n", n, i, n*i);
    }

    return 0;
}
Thật đơn giản phải không nào? Bây giờ chúng ta hãy nâng độ khó lên một chút bằng cách in ra tất cả các bảng cửu chương từ 2 đến 9 như sau:

2 x 2 =  4 3 x 2 =  6 4 x 2 =  8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 
2 x 3 =  6 3 x 3 =  9 4 x 3 = 12 5 x 3 = 15 6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27 
2 x 4 =  8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36 
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45 
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54 
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63 
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72 
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
Giờ thì hãy động não suy nghĩ một chút nhé, nếu cần hãy lấy giấy bất bút ra và chạy tay trên giấy trước. Dễ thấy, chúng ta sẽ cần phải in ra 8 dòng, trên mỗi dòng là 8 lần biểu thức a x b = c. Tiếp tục quan sát, ở mỗi dòng, a sẽ tăng dần từ 2 tới 9, trong khi b là cố định (2 x 2, 3 x 2, 4 x 2...), c là tích của a x b.

Với diễn giải như trên, dễ thấy ta sẽ cần 2 vòng lặp để giải được bài này. Cách làm như sau:

#include <stdio.h>

int main()
{
    for (int i=2; i<=9; i++) {
        for (int j=2; j<=9; j++) {
            printf("%d x %d = %2d ", j, i, j*i);
        }
        printf("\n");
    }
    return 0;
}
Bài tập in bảng cửu chương này là một trong những câu hỏi phỏng vấn ưa thích của tôi. Nó không mang tính đánh đố, nhưng vẫn đủ để đánh giá xem ứng viên có hiểu biết cơ bản về vòng lặp hay không trước khi đến với những câu hỏi khó hơn. Cảm ơn các bạn đã đọc bài viết. Chúc các bạn một ngày vui vẻ!

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...