Lặp trong C++: Hướng dẫn toàn diện về vòng lặp
1. Vòng lặp while
int dem = 1, tong = 0;
while(dem <= 100)
{
tong = tong + dem;
dem++;
}
cout << tong << endl;
return 0;
2. Sử dụng while để tạo dãy Fibonacci
int gia_tri_truoc, gia_tri_hien_tai;
gia_tri_truoc = 1;
gia_tri_hien_tai = 1;
int so_luong;
cin >> so_luong;
int dem = 0
while(dem < so_luong - 1)
{
int gia_tri_moi = gia_tri_truoc + gia_tri_hien_tai;
gia_tri_truoc = gia_tri_hien_tai;
gia_tri_hien_tai = gia_tri_moi;
dem ++ ;
}
cout << gia_tri_truoc << endl;
3. Vòng lặp for
Cú pháp: for(khởi tạo-1; điều kiện-2; biểu thức-3){thân vòng lặp-4} Đường chạy:1->2->4->3->2
for(int index=0;index<10;index++)
{
cout << index << endl;
}
3.1 Tính tổng từ 1 đến 100
int ket_qua = 0;
for (int i=1;i<=100;i++){
ket_qua = ket_qua + i;
}
cout << ket_qua << endl;
3.2 Sử dụng for để tạo dãy Fibonacci
int n, gia_tri_moi;
cin >> n;
int gia_tri_truoc = 1;
int gia_tri_hien_tai = 1;
for(int dem=0;dem
4. Thoát khỏi vòng lặp
4.1 break
int tong = 0;
for(int dem=1;dem<=100;dem++)
{
if(dem>50) break;
tong = tong + dem;
}
cout << tong << endl;
4.2 continue
int tong2 = 0;
for(int dem=1;dem<=100;dem++)
{
int x = dem;
x = x + dem;
if(dem==50) continue;
tong2 = tong2 + x;
}
cout << tong2 << endl;
5. Kiểm tra số nguyên tố
//Kiểm tra n có phải là số nguyên tố
int n;
cin >> n;
bool la_nguyen_to = true;
for(int i=2;i<=n-1;i++){
if(n%i==0)
{
la_nguyen_to = false;
break;
}
}
if(la_nguyen_to) cout << "co" << endl;
else cout << "khong" << endl;
6. Tính tổng số lẻ và chẵn
int tong = 0 ;
for(int i=1;i<=100;i++)
{
if(i%2) continue;
tong = tong + i;
}
cout << tong << endl;
7. Vòng lặp lồng nhau
int n;
cin >> n;
for(int hang = 0; hang < n; hang++) {
for(int cot = 0; cot < n; cot++) {
cout << "* ";
}
cout << endl;
}
8. In ma trận số
int n;
cin >> n;
for(int hang = 0 ,k=1; hang < n; hang++) {
for(int cot = 0; cot < n; cot++) {
printf("%5d ",k);
k++;
}
cout << endl;
}
9. In tất cả số nguyên tố từ 1 đến 100
for(int i=2;i<=100;i++){
bool la_nguyen_to = true;
for(int j=2;j
Tuy nhiên, trong thực tế, bạn có thể gặp vấn đề về thời gian chạy, đây là một phương pháp tối ưu cơ bản:
#include
using namespace std;
int main() {
int n;
cin >>n;
for(int i=1;i<=n;i++)
{
int num;
bool la_nguyen_to = true;
cin >> num;
for(int j=2;j*j<=num;j++){
if(num%j==0){
la_nguyen_to = false;
break;
}
}
if(la_nguyen_to) cout << num << " la nguyen to" << endl;
else cout << num << " khong phai nguyen to" << endl;
}
}
10. In hình thoi
10.1 Phương pháp đơn giản
int n, khoang_trang, sao;
cin >> n;
//Tính hàng giữa, để xác định số sao tối đa
int giua = (n / 2) + 1;
// In nửa trên
for (int i = 1; i <= giua; i++) {
khoang_trang = giua - i;
sao = 2 * i - 1;
for (int j = 1; j <= khoang_trang; j++) {
cout << " ";
}
for (int j = 1; j <= sao; j++) {
cout << "*";
}
cout << endl;
}
// In nửa dưới
for (int i = giua - 1; i >= 1; i--) {
khoang_trang = giua - i;
sao = 2 * i - 1;
for (int j = 1; j <= khoang_trang; j++) {
cout << " ";
}
for (int j = 1; j <= sao; j++) {
cout << "*";
}
cout << endl;
}
10.2 Phương pháp Manhattan
Phương pháp này khá phức tạp, tôi sẽ viết một bài chi tiết về cách suy luận sau.
int n;
cin >> n;
int x = n /2 ,y = n/2;
for(int i=0;i