Thực hành lập trình căn bản

1. Bài tập thực hành 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 5

int main() {
    int value;
    int index;

    srand(time(0));
    for(index = 0; index < SIZE; ++index) {
        value = rand() % 100 + 1;
        printf("20490042%04d\n", value);
    }

    return 0;
}
Câu hỏi 1: Dòng 13 thực hiện tạo một số nguyên ngẫu nhiên trong khoảng từ 1 đến 100. Câu hỏi 2: Định dạng %04d đảm bảo đầu ra hiển thị đúng 4 chữ số, kể cả các số có ít hơn 4 chữ số. Câu hỏi 3: Chương trình sinh ra mã số sinh viên 12 ký tự, với 9 ký tự đầu là "20490042" và 3 ký tự cuối là số ngẫu nhiên từ 000 đến 100. 2. Bài tập thực hành 2
#include <stdio.h>

int main() {
    int selection, count;
    float sum = 0, payment, balance;

    while (1) {
        printf("\nMenu máy bán nước tự động:\n");
        printf("1. Coca - 3 NT/lon\n");
        printf("2. Sprite - 3 NT/lon\n");
        printf("3. Nước cam - 5 NT/lon\n");
        printf("4. Nước khoáng - 2 NT/lon\n");
        printf("0. Thoát giao dịch\n");
        printf("Nhập mã đồ uống: ");
        scanf("%d", &selection);

        if (selection == 0)
            break;

        if (selection < 1 || selection > 4) {
            printf("Mã đồ uống không hợp lệ, vui lòng nhập lại.\n");
            continue;
        }

        printf("Nhập số lượng mua: ");
        scanf("%d", &count);

        if (count < 0) {
            printf("Số lượng không thể âm, vui lòng nhập lại.\n");
            continue;
        }

        switch (selection) {
            case 1:
            case 2:
                sum += 3 * count;
                break;
            case 3:
                sum += 5 * count;
                break;
            case 4:
                sum += 2 * count;
                break;
        }

        printf("Vui lòng đưa tiền: ");
        scanf("%f", &payment);

        balance = payment - sum;
        printf("Tổng giá trị đơn hàng: %.2f NT\n", sum);
        printf("Tiền thừa: %.2f NT\n", balance);

        sum = 0;
    }

    printf("Cảm ơn bạn đã sử dụng dịch vụ, hẹn gặp lại!\n");
    return 0;
}
Câu hỏi 1: Dòng 53 có chức năng thiết lập lại tổng giá trị đơn hàng; nếu bỏ qua sẽ gây lỗi tính toán cho các lần sau. Câu hỏi 2: Lệnh break sẽ thoát hoàn toàn khỏi vòng lặp, trong khi continue chỉ bỏ qua phần còn lại của vòng lặp hiện tại mà không thoát. Câu hỏi 3: Không cần thiết vì tất cả các lựa chọn đều được xử lý trong các trường hợp switch. 3. Bài tập thực hành 3
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
    char input;
    while ((input=getchar())!=EOF) {
        getchar();
                switch (input) {
        case'r':
            printf("stop!\n");
            break;
        case'g':
            printf("go go go\n");
            break;
        case'y':
            printf("wait a minute\n");
            break;
        default:
            printf("somthing must be wrong...\n");
            break;
        }
    }
    return 0;
}
4. Bài tập thực hành 4
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
    float amount,max=0,min=20000,total=0;
    printf("Nhập chi tiêu hôm nay, nhấn -1 để kết thúc: ");
    while (1) {
        scanf("%f", &amount);
        if (amount == -1)
            break;
        if (amount > max)
            max = amount;
        if (amount < min)
            min = amount;
        total += amount;
    }
    printf("Tổng chi tiêu ngày hôm nay: %.1f\n", total);
    printf("Chi tiêu cao nhất trong ngày: %.1f\n", max);
    printf("Chi tiêu thấp nhất trong ngày: %.1f\n", min);
    return 0;
}
5. Bài tập thực hành 5
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    printf("Đoán xem ngày nào trong tháng 4 năm 2025 là ngày may mắn của bạn\n");
    int guess, target, attempts=0;
    srand(time(0));
    target = rand() % 30 + 1;
    printf("Bắt đầu thôi, bạn có ba lần đoán (1–30): ");
    while (attempts < 3) {
        scanf("%d",&guess);
        attempts += 1;
        if (guess == target){
            printf("Chúc mừng, bạn đã đoán đúng\n");
            return 0;
        }
        else if (guess < target) {
            printf("Ngày bạn đoán quá sớm, ngày may mắn của bạn chưa tới\n");
        }
        else {
            printf("Ngày bạn đoán quá muộn, ngày may mắn của bạn đã qua rồi\n");
        }
        if (attempts < 3)
            printf("Còn lần nữa (1–30):\n");
    }
    printf("Hết lượt rồi, cho bạn biết, ngày may mắn của bạn là ngày %d\n", target);
    return 0;
}
6. Bài tập thực hành 6
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

void person(int row) {
    switch (row) {
    case 0:
        printf("   0   ");
        break;
    case 1:
        printf("  <H>  ");
        break;
    case 2:
        printf("  I I  ");
        break;
    }
}
int main() {
    int lines;
    printf("Nhập số dòng:");
    scanf("%d", &lines);

    for (int i = lines; i > 0; i--) {
        int stars = 2 * i - 1;
        int spaces = (lines - i) * 7; 
        for (int j = 0; j < spaces; j++) {
            printf(" ");
        }
        for (int row = 0; row < 3; row++) {
            for (int j = 0; j < stars; j++) {
                person(row);
            }
            printf("\n");

            for (int j = 0; j < spaces; j++) {
                printf(" ");
            }
        }
        printf("\n");
    }
    return 0;
}

Thẻ: C lập trình thuật toán vòng lặp điều kiện

Đăng vào ngày 14 tháng 6 lúc 08:09