1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập ngôn ngữ lập trình c++ lập trình hướng cấu trúc

34 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Ngôn Ngữ Lập Trình C++ Lập Trình Hướng Cấu Trúc
Định dạng
Số trang 34
Dung lượng 61,41 KB

Nội dung

Mỗi test gồm 2 dòng, dòng đầu ghi số N là số phần tử của dãy.. Output: Với mỗi bộ test ghi trên một dòng lần lượt là các số chẵn của dãy số ban đầu, theo thứ tự xuất hiện... Dòng đầu là

Trang 1

Danh sách bài tập Ngôn ngữ lập trình C++

int tongChuSo = tinhTongChuSo(n);

std::cout << "Tong cac chu so cua n la: " << tongChuSo <<std::endl;

Trang 2

return 0;

}

2 Số nguyên tố: Viết chương trình kiểm tra một số nguyên dương có

phải số nguyên tố hay không.

// Kiểm tra từ 2 đến căn bậc hai của n

for (int i = 2; i * i <= n; ++i) {

Trang 3

3 Đếm số chữ số: Cho số nguyên dương N không quá 9 chữ số.

Hãy đếm xem N có bao nhiêu chữ số

Trang 4

// Đếm số chữ số và in kết quả

int soChuSo = demSoChuSo(n);

std::cout << "So chu so trong " << n << " la: " << soChuSo << std::endl;

return 0;

}

4 Số không giảm: Một số nguyên dương được gọi là số không giảm nếu các chữ số

từ trái qua phải tạo thành dãy không giảm Ví dụ số số 123 là số không giảm, số

Trang 5

return true; // Nếu không có số giảm, trả về true

// Kiểm tra từng bộ test

for (int i = 0; i < testCases; ++i) {

Input: Dòng đầu ghi số bộ test Mỗi test gồm 2 dòng, dòng đầu ghi số N là

số phần tử của dãy Dòng sau ghi N số của dãy N không quá 100, các sốtrong dãy đều nguyên dương và không quá 1000

Output: Với mỗi bộ test ghi trên một dòng lần lượt là các số chẵn của dãy số

ban đầu, theo thứ tự xuất hiện

Trang 6

std::cout << "Cac so chan trong day so: ";

for (int num : numbers) {

// Kiểm tra từng bộ test

for (int i = 0; i < testCases; ++i) {

Input: Dòng đầu ghi số bộ test Mỗi test gồm 2 dòng, dòng đầu ghi số N là

số phần tử của dãy Dòng sau ghi N số của dãy N không quá 100, các sốtrong dãy đều nguyên dương và không quá 1000

Output: Với mỗi bộ test ghi trên một dòng lần lượt là các số nguyên tố của

dãy số ban đầu, theo thứ tự xuất hiện

Ví dụ :

Trang 8

}

return 0;

}

7 Mảng đối xứng: Nhập một dãy số nguyên có n phần tử (n không quá

100, các phần tử trong dãy không quá 109) Hãy viết chương trình kiểmtra xem dãy có phải đối xứng hay không Nếu đúng in ra YES, nếu sai in

ra NO

Input: Dòng đầu ghi số bộ test, mỗi bộ test gồm hai dòng Dòng đầu là số

phần tử của dãy, dòng sau ghi ra dãy đó, mỗi số cách nhau một khoảngtrống

Output: In ra kết quả kiểm tra.

for (int i = 0; i < n / 2; ++i) {

if (arr[i] != arr[n - 1 - i]) {

Trang 9

Input: Dòng đầu ghi số bộ test Mỗi test gồm 2 dòng, dòng đầu ghi số N là

số phần tử của dãy Dòng sau ghi N số của dãy N không quá 100, các sốtrong dãy đều nguyên dương và không quá 1000

Output: Với mỗi bộ test ghi trên hai dòng :

#include <iostream>

#include <vector>

using namespace std;

void timSoLonNhat(const vector<int> &arr) {

int maxSo = arr[0]; // Giả sử số lớn nhất là số đầu tiên

vector<int> viTri;

// Tìm số lớn nhất và lưu các vị trí có giá trị bằng số lớn nhất

Trang 10

for (int i = 1; i < arr.size(); ++i) {

cout << maxSo << endl;

for (int i = 0; i < viTri.size(); ++i) {

Trang 12

return 0;

}

10 Nhỏ nhất và nhỏ thứ hai: Viết chương trình nhập vào mảng A gồm

n phần tử số nguyên (2 < n < 100) Tìm giá trị nhỏ nhất và nhỏ thứ hai và in ra

Dữ liệu vào đảm bảo luôn có ít nhất 2 số khác nhau

// Khởi tạo giá trị nhỏ nhất và nhỏ thứ hai

int nhoNhat = min(arr[0], arr[1]);

int nhoThuHai = max(arr[0], arr[1]);

// Duyệt qua từng phần tử để cập nhật giá trị nhỏ nhất và nhỏ thứ hai

for (int i = 2; i < n; ++i) {

cout << "Gia tri nho nhat: " << nhoNhat << endl;

cout << "Gia tri nho thu hai: " << nhoThuHai << endl;

Trang 13

11.Liệt kế số nguyên tố trong dãy: Viết chương trình nhập mảng n

(1<n<100) phần tử số nguyên dương Các giá trị trong mảng

Trang 14

for (int i = 2; i * i <= x; ++i) {

Trang 15

12 Sắp xếp tăng: Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100) Thực hiện sắp xếp tăng dần các phần tử của mảng

Trang 17

}

// Tính giá trị trung bình

double giaTriTrungBinh = tinhGiaTriTrungBinh(arr, n);

// In ra kết quả với 3 chữ số sau dấu phẩy

cout << fixed << setprecision(3) << giaTriTrungBinh << endl;

return 0;

}

14.Đếm ký tự: Viết chương trình nhập vào một xâu ký tự S, thực hiện phân tích xâu

đã nhập chứa bao nhiêu chữ cái, chữ số và các ký tự khác

void demKyTu(const string &s) {

int soChuCai = 0, soChuSo = 0, soKyTuKhac = 0;

// Duy?t qua t?ng ký t? trong xâu

for (char kyTu : s) {

Trang 18

int main() {

string s;

getline(cin, s); // Ð?c xâu ký t? t? d?u vào

// G?i hàm d? d?m s? lu?ng ch? cái, ch? s? và ký t? khác

demKyTu(s);

return 0;

}

15 Xâu đối xứng: Một xâu đối xứng là một xâu ký tự khác rỗng mà nếu lật ngược

xâu ấy ta thu được xâu ban đầu Ví dụ các xâu abcba, dd là xâu đối xứng, trong khi các xâu abc, ptit thì không phải.

Cho một xâu ký tự S Hãy tìm cách xoá đi nhiều nhất các kí tự của S để

thu được một xâu đối xứng

// Sử dụng một mảng để lưu số ký tự cần xóa tại từng vị trí

vector<vector<int> > soKyTuXoa(n, vector<int>(n, 0));

// Duyệt qua từng đoạn con của xâu

for (int len = 2; len <= n; ++len) {

for (int i = 0; i < n - len + 1; ++i) {

int j = i + len - 1;

// Xác định số ký tự cần xóa tại vị trí i và j

if (s[i] == s[j]) {

Trang 19

int soKyTuXoa = tinhSoKyTuXoa(s);

cout << soKyTuXoa << endl;

bool dangLaTu = false;

// Duyệt qua từng ký tự trong xâu

Trang 20

for (size_t i = 0; i < xau.length(); ++i) {

// Nếu là ký tự không phải khoảng trống và đang không phải từ,

// tăng số từ lên và đặt trạng thái là đang là từ

cin.ignore(); // Đọc bỏ dòng xuống mới (newline)

for (int i = 0; i < soBoTest; ++i) {

string xau;

getline(cin, xau);

int soTu = demSoTuTrongXau(xau);

cout << soTu << endl;

Input:

Dòng đầu chứa số mặt hàng Mỗi mặt hàng viết trên 4 dòng: Dòng 1: Tênmặt hàng Dòng 2: Nhóm hàng Dòng 3: Giá mua Dòng 4: Giá bán

Trang 21

Output: Ghi ra danh sách mặt hàng đã sắp xếp theo lợi nhuận giảm dần (lợi

nhuận tính bằng giá bán trừ đi giá mua) Mỗi mặt hàng viết trên một dònggồm: mã, tên, nhóm hàng và lợi nhuận Các thông tin cách nhau đúng 1khoảng trống Lợi nhuận viết với 2 chữ  số sau dấu phẩy. 

2 Tu lanh Side by Side Dien lanh 7699.00

1 May tinh SONY VAIO Dien tu 1299.00

3 Banh Chocopie Tieu dung 9.50

MatHang(int ma, string ten, string nhom, double mua, double ban)

: maMatHang(ma), tenMatHang(ten), nhomHang(nhom), giaMua(mua),giaBan(ban) {}

double tinhLoiNhuan() const {

return giaBan - giaMua;

}

};

bool soSanhLoiNhuanGiamDan(const MatHang &a, const MatHang &b) {

Trang 22

return a.tinhLoiNhuan() > b.tinhLoiNhuan();

string tenMatHang, nhomHang;

double giaMua, giaBan;

cin.ignore(); // Đọc bỏ dòng xuống mới (newline)

}

// Sắp xếp danh sách theo lợi nhuận giảm dần

sort(danhSachMatHang.begin(), danhSachMatHang.end(),soSanhLoiNhuanGiamDan);

// Xuất danh sách đã sắp xếp

for (vector<MatHang>::iterator it = danhSachMatHang.begin(); it !=danhSachMatHang.end(); ++it) {

MatHang &matHang = *it;

cout << matHang.maMatHang << " " << matHang.tenMatHang << " " << matHang.nhomHang << " " << fixed << setprecision(2) <<matHang.tinhLoiNhuan() << endl;

Trang 23

Mỗi thí sinh gồm các thông tin:

 Mã thí sinh: là một số nguyên, tự động tăng Tính từ 1

 Tên thí sinh, ngày sinh

 Điểm môn 1, điểm môn 2, điểm môn 3

Trang 24

ThiSinh(int ma, string t, string ns, double d1, double d2, double d3)

: maThiSinh(ma), ten(t), ngaySinh(ns), diemMon1(d1), diemMon2(d2),diemMon3(d3) {}

double tinhTongDiem() const {

return diemMon1 + diemMon2 + diemMon3;

string ten, ngaySinh;

double diemMon1, diemMon2, diemMon3;

Trang 25

for (int i = 0; i < soThiSinh; ++i) {

const ThiSinh &thiSinh = danhSachThiSinh[i];

cout << thiSinh.maThiSinh << " " << thiSinh.ten << " "

<< thiSinh.ngaySinh << " " << fixed << setprecision(1) <<thiSinh.tinhTongDiem() << endl;

}

return 0;

}

19 Quản lý sinh viên: Thông tin về sinh viên gồm có:

1 mã sinh viên là số nguyên tự động tăng;

2 tên sinh viên;

3 điểm sinh viên là số thực gồm điểm môn A, môn B, môn C

 Viết chương trình thực hiện 3 chức năng:

1 thêm mới

2 cập nhật điểm theo mã sinh viên

3 hiển thị danh sách sinh viên theo tổng điểm tăng dần

- Dòng tiếp theo là thông tin sinh viên

Chức năng 3 cũng là kết thúc của luồng input

 

Output:

- Nếu lựa chọn là 1 thì in ra số sinh viên được thêm

- Nếu lựa chọn là 2 thì in ra mã sinh viên được sửa

- Nếu lựa chọn là 3 thì in ra danh sách theo mô tả dưới đây (các thông tin cách nhau một khoảng trắng)

Trang 26

2 tran van nam 5.5 5.0 6.0

1 nguyen van hai 8.5 5.5 7.5

c Tính thương hai phân số và rút gọn

Input: Dòng 1 ghi số bộ test Mỗi bộ test ghi trên một dòng 4 số nguyên

dương lần lượt là tử số của p, mẫu số của p, tử số của q, mẫu số của q Mỗi

5/6 Case #2:

2/8 7/8 9/8 2/7

Trang 27

void simplifyFraction(int& numerator, int& denominator) {

int commonFactor = gcd(numerator, denominator);

numerator /= commonFactor;

denominator /= commonFactor;

}

// Hàm quy đồng hai phân số

void makeCommonDenominator(int& numerator1, int& denominator1, int& numerator2, int& denominator2) {

int commonDenominator = denominator1 * denominator2;

int resultNumerator = numerator1 + numerator2;

int resultDenominator = denominator1;

Trang 28

void divideFractions(int numerator1, int denominator1, int numerator2, int denominator2) {

int resultNumerator = numerator1 * denominator2;

int resultDenominator = denominator1 * numerator2;

for (int testCase = 1; testCase <= numTests; ++testCase) {

int numerator1, denominator1, numerator2, denominator2;

std::cin >> numerator1 >> denominator1 >> numerator2 >>

denominator2;

std::cout << "Case #" << testCase << ":" << std::endl;

// Rút gọn và quy đồng hai phân số

std::cout << numerator1 << '/' << denominator1 << ' ' <<

numerator2 << '/' << denominator2 << std::endl;

Trang 29

21.Sắp xếp chọn: Hãy thực hiện thuật toán sắp xếp chọn trên dãy N sốnguyên Ghi ra các bước thực hiện thuật toán.

Input: Dòng 1 ghi số N (không quá 100) Dòng 2 ghi N số nguyên dương

(không quá 100)

Output:Ghi ra màn hình từng bước thực hiện thuật toán Mỗi bước trên một

dòng, các số trong dãy cách nhau đúng một khoảng trống

// Hàm đổi chỗ giá trị của hai số

void swap(int& a, int& b) {

void selectionSort(int arr[], int n) {

for (int i = 0; i < n - 1; ++i) {

Trang 30

Output:Ghi ra màn hình từng bước thực hiện thuật toán Mỗi bước trên một

dòng, các số trong dãy cách nhau đúng một khoảng trống

#include <iostream>

// Hàm sắp xếp chèn

void insertionSort(int arr[], int n) {

for (int i = 1; i < n; ++i) {

int key = arr[i];

int j = i - 1;

// Di chuyển các phần tử lớn hơn key về phía sau

while (j >= 0 && arr[j] > key) {

Trang 32

Output:Ghi ra màn hình từng bước thực hiện thuật toán Mỗi bước trên một

dòng, các số trong dãy cách nhau đúng một khoảng trống

24 Ma trận chuyển vị: Viết chương trình nhập một ma trận số nguyên dương

cỡ M*N với 2<N,M<10, các số không quá 100 Hãy in ra chuyển vị của

ma trận đó

Dữ liệu vào

Mỗi bộ test viết trên một dòng hai số N và M lần lượt là số hàng và số cột của ma trận (2<N,M<10) Tiếp thep là N dòng ghi các số của ma trận

25 Tìm hàng nhiều số nguyên tố nhất: Viết chương trình nhập vào ma trận vuông cấp n (1 < n < 30) chỉ bao gồm các số nguyên dương không quá 1000

Thực hiện tìm hàng có nhiều phần tử là số nguyên tố nhất Nếu có nhiều hơn một hàng thỏa mãn thì in ra hàng đầu tiên

INPUT

- Dòng đầu tiên là cấp của ma trận

- Các dòng tiếp theo là các phần tử của ma trận

OUTPUT

- Dòng đầu tiên là số thứ tự hàng thỏa mãn

- Dòng thứ hai liệt kê các phần tử thỏa mãn

 

Trang 34

tRan       TRUNG hiEU

      vO le         hOA bINh Vo Le Hoa Binh

 

28 Xóa từ trong xâu: Cho trước một xâu ký tự S1 chỉ bao gồm các chữ cái

và khoảng trống cùng một từ S2 Hãy tìm xem S2 có xuất hiện trong S1hay không Nếu có loại bỏ tất cả những lần xuất hiện của S2 trong S1.Chú ý: tìm S2 trong S1 theo kiểu không phân biệt chữ hoa chữ thường

Input:   Dòng 1 ghi số bộ test Mỗi bộ test ghi trên hai dòng: Dòng đầu ghi xâu ký tự S1, độ dài không quá 200 Dòng thứ 2 ghi từ S2 (không quá 20 ký tự)

Output:  Với mỗi bộ test ghi ra thứ tự bộ test và xâu kết quả sau khi đã xóa

Ngày đăng: 30/03/2024, 14:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w