Bài tập C++ cơ bản

Để củng cố những kiến thức đã học về lập trình C++. Mời bạn đọc cùng thực hành qua một số bài tập C++ cơ bản dưới đây.

Bài tập C++ cơ bản

1. Bài 01

Viết chương trình C++ giải phương trình bậc 2: ax2 + bx + c = 0.

Code mẫu:

#include <iostream>
#include <cmath>
  
using namespace std;
  
/**
 * giai phuong trinh bac 2: ax2 + bx + c = 0
 *
 * @param a: he so bac 2
 * @param b: he so bac 1
 * @param c: so hang tu do
 */
void giaiPTBac2(float a, float b, float c) {
    // kiem tra cac he so
    if (a == 0) {
        if (b == 0) {
            printf("Phuong trinh vo nghiem!");
        } else {
            printf("Phuong trinh co mot nghiem: x = %f", (-c / b));
        }
        return;
    }
    // tinh delta
    float delta = b*b - 4*a*c;
    float x1;
    float x2;
    // tinh nghiem
    if (delta > 0) {
        x1 = (float) ((-b + sqrt(delta)) / (2*a));
        x2 = (float) ((-b - sqrt(delta)) / (2*a));
        printf("Phuong trinh co 2 nghiem la: x1 = %f va x2 = %f", x1, x2);
    } else if (delta == 0) {
        x1 = (-b / (2 * a));
        printf("Phong trinh co nghiem kep: x1 = x2 = %f", x1);
    } else {
        printf("Phuong trinh vo nghiem!");
    }
}

/**
 * ham main
 */
int main() {
 float a, b, c;
    cout << "Nhap he so bac 2, a = ";
    cin >> a;
    cout << "Nhap he so bac 1, b = ";
    cin >> b;
    cout << "Nhap so hang tu do, c = ";
    cin >> c;
    giaiPTBac2(a, b, c);
    return 1;
}

Kết quả:

Nhap he so bac 2, a = 2
Nhap he so bac 1, b = 3
Nhap so hang tu do, c = 1
Phuong trinh co 2 nghiem la: x1 = -0.500000 va x2 = -1.000000

2. Bài 02

Viết chương trình C++ tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BCSNN) của hai số a và b.

Gợi ý:

  • Sử dụng giải thuật Euclid

Code mẫu:

/**
 * Chuong trinh tim uoc chung lon nhat (USCLN)
 * va boi so chung nho nhat (BSCNN) cua 2 so a và b
 *
 * @author viettuts.vn
 */
  
#include <iostream>
  
using namespace std;

/**
 * Tim uoc so chung lon nhat (USCLN)
 */
int USCLN(int a, int b) {
    if (b == 0) return a;
    return USCLN(b, a % b);
}

/**
 * Tim boi so chung nho nhat (BSCNN)
 */
int BSCNN(int a, int b) {
    return (a * b) / USCLN(a, b);
}

/**
 * Ham main
 */
int main() {
 int a, b;
    cout << "Nhap so nguyen duong a = ";
    cin >> a;
    cout << "Nhap so nguyen duong b = ";
    cin >> b;
    // tinh USCLN cua a và b
    printf("USCLN cua %d va %d la: %d, ", a, b, USCLN(a, b));
    // tinh BSCNN cua a và b
    printf("BSCNN cua %d va %d la: %d", a, b, BSCNN(a, b));
}
Kết quả:
Nhap so nguyen duong a = 4
Nhap so nguyen duong b = 6
USCLN cua 4 va 6 la: 2, BSCNN cua 4 va 6 la: 12

3. Bài 03

Viết chương trình C++ liệt kê tất cả các số nguyên tố nhỏ hơn n.

Code mẫu:

/**
 * Chuong liet ke cac so nguyen to nho hon n.
 *
 *
 */
  
#include <iostream>
#include <cmath>
  
using namespace std;

/**
 * check so nguyen to
 *
 * @author viettuts.vn
 * @param n: so nguyen duong
 * @return 1: la so nguyen so,
 *         0: khong la so nguyen to
 */
int isPrimeNumber(int n) {
    // so nguyen n < 2 khong phai la so nguyen to
    if (n < 2) {
        return 0;
    }
    // check so nguyen to khi n >= 2
    int i;
    int squareRoot = (int) sqrt(n);
    for (i = 2; i <= squareRoot; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

/**
 * Ham main
 */
int main() {
 int i, n;
    cout << "Nhap n = ";
    cin >> n;
    printf("Tat ca cac so nguyen to nho hon %d la: \n", n);
    if (n >= 2) {
        printf("%d ", 2);
    }
    for (i = 3; i < n; i+=2) {
        if (isPrimeNumber(i) == 1) {
            printf("%d ", i);
        }
    }
}
Kết quả:
Nhập n = 100
Tat ca cac so nguyen to nho hon 100 la: 
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

4. Bài 04

Viết chương trình C++ liệt kê n số nguyên tố đầu tiên.

Code mẫu:

/**
 * Chuong trinh liet ke n so nguyen to dau tien.
 *
 * 
 */
  
#include <iostream>
#include <cmath>

using namespace std;

/**
 * check so nguyen to
 *
 * 
 * @param n: so nguyen duong
 * @return 1: la so nguyen so,
 *         0: khong la so nguyen to
 */
int isPrimeNumber(int n) {
    // so nguyen n < 2 khong phai la so nguyen to
    if (n < 2) {
        return 0;
    }
    // check so nguyen to khi n >= 2
    int i;
    int squareRoot = sqrt(n);
    for (i = 2; i <= squareRoot; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

/**
 * Ham main
 */
int main() {
 int n;
    cout << "Nhap n = ";
    cin >> n;
    printf("%d so nguyen to dau tien la: \n", n);
    int dem = 0; // dem tong so nguyen to
    int i = 2;   // tim so nguyen to bat dau tu so 2
    while (dem < n) {
        if (isPrimeNumber(i)) {
            printf("%d ", i);
            dem++;
        }
        i++;
    }
}

Kết quả:

Nhập n = 10
10 so nguyen to dau tien la: 
2 3 5 7 11 13 17 19 23 29 

5. Bài 05

Viết chương trình C++ liệt kê tất cả các số nguyên tố có 5 chữ số.

Code mẫu:

/**
 * Chuong trinh liet ke tat ca so nguyen to co 5 chu so.
 *
 * 
 */
  
#include <iostream>
#include <cmath>

using namespace std;

/**
 * check so nguyen to
 *
 * 
 * @param n: so nguyen duong
 * @return 1: la so nguyen so,
 *         0: khong la so nguyen to
 */
int isPrimeNumber(int n) {
    // so nguyen n < 2 khong phai la so nguyen to
    if (n < 2) {
        return 0;
    }
    // check so nguyen to khi n >= 2
    int i;
    int squareRoot = (int) sqrt(n);
    for (i = 2; i <= squareRoot; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

/**
 * Ham main
 */
int main() {
    int count = 0;
    int i;
    cout << "Liet ke tat ca cac so co 5 chu so:";
    for (i = 10001; i < 99999; i+=2) {
        if (isPrimeNumber(i)) {
            printf("%d\n", i);
            count++;
        }
    }
    printf("Tong cac so nguyen to co 5 chu so la: %d", count);
}
Kết quả:
Liet ke tat ca cac so co 5 chu so:
10007
10009
10037
...
99971
99989
99991
Tong cac so nguyen to co 5 chu so la: 8363

Trên đây là một số bài tập C++ kinh điển mà eLib.VN tổng hợp được. Một bài có thể có nhiều hướng giải quyết. Bạn có thể chọn cách phù hợp. Chúc các bạn thành công!

Ngày:29/10/2020 Chia sẻ bởi:ngan

CÓ THỂ BẠN QUAN TÂM