Bài tập C++ cơ bản
505 lượt xem
Để 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.
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!