Chào các bạn, hôm nay tôi xin giới thiệu một loạt bài tập C/C++ có lời giải. Đây là những bài tập từ cơ bản tới nâng cao, bao gồm các phần sau:
Contents
- 1 Bài tập về cấu trúc điều khiển, rẽ nhánh
- 2 Bài tập về vòng lặp
- 3 Bài tập mảng một chiều
- 4 Bài tập mảng hai chiều
- 5 Bài 1: Tính tổng bình phương các số lẻ từ 1 đến n
- 6 Bài 2: Tìm max của 3 số a, b, c nhập từ bàn phím
- 7 Bài 3: Kiểm tra số chẵn lẻ
- 8 Bài 4: Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số a và b nhập từ bàn phím
- 9 Bài 5: Kiểm tra số hoàn hảo
- 10 Bài 6: Kiểm tra số chính phương
- 11 Bài 7: In ra các số nguyên tố trong khoảng từ 1 đến n, với n là số nguyên nhập từ bàn phím
- 12 Bài 8: Tính tổng biểu thức S = 1 + x + 2x^2 + 3x^3 + … + nx^n, với x là số thực, n là số nguyên được nhập từ bàn phím
- 13 Bài 9: Tính giá trị của biểu thức S(n) = 1 + 3 + 5 + … + (2n+1), với n bất kỳ nhập từ bàn phím
- 14 Bài 10: Tính giá trị của biểu thức S = 2x^2y + 1 – |x-1| nếu x > y, S = 5x – 3y^3 nếu x <= y
- 15 BÀI TẬP PHẦN MẢNG 1 CHIỀU (bài 11 đến bài 16)
Bài tập về cấu trúc điều khiển, rẽ nhánh
Bài tập về vòng lặp
Bài tập mảng một chiều
Bài tập mảng hai chiều
Ngoài 20 bài tập lập trình C/C++ này, bạn còn có thể tham khảo các series bài tập khác dưới đây:
Bạn đang xem: Tổng hợp bài tập C/C++ có lời giải
- 1000 bài tập kỹ thuật lập trình của thầy Nguyễn Tấn Trần Minh Khang có đề & đáp án
- Bài tập cấu trúc dữ liệu & giải thuật tổng hợp C/C++
- Bộ sưu tập bài tập lập trình của các trường ĐH có đáp án
- Bài tập chuỗi trong C có đáp án
- Và hơn 100 bài tập lập trình C/C++ có hướng dẫn chi tiết
Bài 1: Tính tổng bình phương các số lẻ từ 1 đến n
#include<stdio.h>
#include<conio.h>
int main()
{
int i, s=0, n;
printf("Nhap n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i%2!=0)
{
s=s+i*i;
}
}
printf("Tong binh phuong cac so le la: %d", s);
getch();
}
Bài 2: Tìm max của 3 số a, b, c nhập từ bàn phím
#include<stdio.h>
#include<conio.h>
int main()
{
int a, b, c, max;
printf("Nhap a=");
scanf("%d",&a);
printf("Nhap b=");
scanf("%d",&b);
printf("Nhap c=");
scanf("%d",&c);
max=a;
if(b>max)
{
max=b;
}
if(c>max)
{
max=c;
}
printf("Gia tri lon nhat la: %d",max);
getch();
}
Bài 3: Kiểm tra số chẵn lẻ
#include<stdio.h>
#include<conio.h>
int main()
{
int x;
printf("Nhap x:");
scanf("%d",&x);
if(x%2==0)
{
printf("%d la so chan",x);
}
else
{
printf("%d la so le",x);
}
getch();
}
Bài 4: Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số a và b nhập từ bàn phím
#include<stdio.h>
#include<conio.h>
int main()
{
int x, y, a, b;
do
{
printf("Nhap a, b = ");
scanf("%d%d",&a,&b);
}
while(a<=0 || b<=0);
x=a;
y=b;
while(a!=b)
{
if(a>b)
{
a-=b;
}
else
{
b-=a;
}
}
printf("Uoc chung lon nhat la %d",a);
printf("Boi chung nho nhat la %d",(x*y)/a);
getch();
}
Bài 5: Kiểm tra số hoàn hảo
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int x;
int s=0, i;
printf("Nhap mot so nguyen duong n");
scanf("%d", &x);
for(i=1;i<x;i++)
{
if(x%i== 0)
{
s=s+i;
}
}
if(s==x)
{
printf("%d la so hoan hao",x);
}
else
{
printf("%d khong phai la so hoan hao",x);
}
getch();
}
Bài 6: Kiểm tra số chính phương
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int x, y;
printf("Nhap x=");
scanf("%d",&x);
y=sqrt(x);
if(x==y*y)
{
printf("%d la so chinh phuong",x);
}
else
{
printf("%d khong phai la so chinh phuong",x);
}
getch();
}
Bài 7: In ra các số nguyên tố trong khoảng từ 1 đến n, với n là số nguyên nhập từ bàn phím
#include<stdio.h>
#include<conio.h>
int main()
{
int n, i, j, dem;
printf("Nhap n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
dem=0;
for(j=2;j<=i/2;j++)
{
if(i%j==0)
dem++;
}
if(dem==0)
{
printf("%5d",i);
}
}
getch();
}
Bài 8: Tính tổng biểu thức S = 1 + x + 2x^2 + 3x^3 + … + nx^n, với x là số thực, n là số nguyên được nhập từ bàn phím
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int n, i;
float x, s=1;
printf("Nhap x, n:");
scanf("%f %d",&x,&n);
for(i=1;i<=n;i++)
{
s=s+i*pow(x,i);
}
printf("Gia tri tinh duoc la:%0.2f", s);
getch();
}
Bài 9: Tính giá trị của biểu thức S(n) = 1 + 3 + 5 + … + (2n+1), với n bất kỳ nhập từ bàn phím
#include<stdio.h>
#include<conio.h>
int main()
{
int i, n, s=0;
printf("Nhap n=");
scanf("%d",&n);
for(i=1;i<=2*n+1;i=i+2)
{
s=s+i;
}
printf("Gia tri bieu thuc la: %d ", s);
getch();
}
Bài 10: Tính giá trị của biểu thức S = 2x^2y + 1 – |x-1| nếu x > y, S = 5x – 3y^3 nếu x <= y
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
float x, y, s=0;
printf("Nhap x=");
scanf("%f",&x);
printf("Nhap y=");
scanf("%f",&y);
if(x>y)
{
s=2*x*x*y +1-fabs(x-1) ;
}
else
{
s=5*x - 3*x*pow(y,3);
}
printf ("Gia tri tinh duoc la %f",s);
getch();
}
BÀI TẬP PHẦN MẢNG 1 CHIỀU (bài 11 đến bài 16)
Bài 11: Nhập vào 1 dãy số nguyên. Hiển thị dãy số đó ra màn hình.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50];
int i, n;
printf("Nhap so phan tu mang: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("Mang vua nhap la:");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
getch();
}
Bài 12: Nhập 1 dãy số nguyên và tìm số nguyên tố có trong mảng và vị trí số đó trong mảng.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50];
int i,n,j,kt;
printf("Nhap so luong phan tu:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("Cac so nguyen to co trong mang va vi tri cac so do trong mang la:");
for(i=0;i<n;i++)
{
kt=0;
for(j=2;j<=a[i]/2;j++)
{
if(a[i]%j==0)
kt=1;
}
if(kt==0)
printf("So nguyen to %d vi tri %d trong mang ", a[i],i );
}
getch();
}
Bài 13: Nhập 1 dãy số nguyên và tìm số lớn nhất, vị trí số lớn nhất trong mảng. Sắp xếp dãy số theo thứ tự tăng dần. Tính tổng và trung bình cộng các số có trong dãy.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50];
int i,n,tg,max,j,s=0;
printf("Nhap vao so phan tu:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
for(i=1;i<n;i++)
{
if(a[i]>max)
{
max =a[i];
}
}
printf("So lon nhat =%d",max);
printf("Vi tri cua gia tri lon nhat trong day la: ");
for(i=0;i<n;i++)
{
if (a[i]==max)
{
printf("%6d", i+1);
}
}
//sap xep day so theo thu tu tang dan
for(i=0;i<n-1;i++)
for(j=i+1; j<n; j++)
{
if(a[i]>a[j])
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
printf("Day so sau khi sap xep la:");
for(i=0;i<n;i++)
{
printf("%6d",a[i]);
}
//Tinh tong va trung binh cong cac so trong day
for(i=0;i<n;i++)
{
s=s+a[i];
}
printf("Tong cac so trong day la: %d",s);
printf("Trung binh cong cac so trong day la: %f", (float)s/n);
getch();
}
Xem thêm : Bắt đầu học Javascript: Phần 1 – Nhập môn
Bài 14: Nhập 1 dãy số nguyên và in ra dãy số đã nhập. Tìm số lớn nhất và vị trí của nó trong dãy. Sắp xếp dãy số theo thứ tự giảm dần. Chèn số X vào dãy sao cho sau khi chèn giá trị các phần tử vẫn giảm dần (X nhập từ bàn phím).
#include<stdio.h>
#include<conio.h>
int main()
{
int a[30],i,j, n,tg,v,x;
printf("Nhap vao so phan tu: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//hien thi day so vua nhap
printf("Day so vua nhap la:");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
//dua ra man hinh cac so chan va vi tri trong day
printf("Cac so chan trong day va vi tri cac so do trong day la:");
for(i=0;i<n;i++)
{
if(a[i]%2==0)
{
printf("So %d dung thu %d trong day", a[i], i+1);
}
}
// sap xep day so theo gia tri cac phan tu giam dan
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
printf("Day so sau khi sap xep la:");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
//chen so x vao day sao cho sau khi chen gia tri cac phan tu van tang dan (x nhap tu ban phim)
printf("Nhap gia tri can chen X:");
scanf("%d", &x);
v=0;
i=0;
while(a[i]>x)
{
i++;
}
v=i;
for(i=n-1;i>=v;i--)
{
a[i+1]=a[i];
}
a[v]=x;
printf("Day so sau khi chen la:");
for(i=0;i<n+1;i++)
{
printf("%5d", a[i]);
}
getch();
}
Bài 15: Nhập 1 dãy số thực không quá 50 phần tử, tính tổng các số dương trong dãy và xóa tất cả các số âm có trong dãy.
#include<stdio.h>
#include<conio.h>
int main()
{
int i, j, n,a[50],s=0;
printf("Nhap vao so phan tu ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]>0)
{
s=s+a[i];
}
}
printf("Tong cac so duong trong day la:%d",s );
// Xoa tat ca cac so am trong day
for(i=0;i<n;i++)
{
if(a[i]<0)
{
for(j=i;j<n-1;j++)
{
a[j]=a[j+1];
}
n=n-1;
}
}
printf("Day so sau khi xoa la:");
for(i=0;i<n;i++)
{
printf("%5d", a[i]);
}
getch();
}
Bài 16: Nhập 1 dãy số nguyên không quá 50 phần tử, tính trung bình cộng các số chia hết cho 3 có trong dãy và chèn số X vào vị trí thứ k trong dãy (X và k nhập từ bàn phím).
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50];
int i,n,t=0,k,x,d=0;
printf("Nhap vao so phan tu: ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
// in ra man hinh trung binh cong cac so chia het cho 3
for(i=0;i<n;i++)
{
if(a[i]%3==0)
{
t=t+a[i];
d=d+1;
}
}
if(d==0)
{
printf("Khong co so chia het cho 3 trong day");
}
else
{
printf("Trung binh cong cac so chia het cho 3 trong day la %f", (float)t/d);
}
// chen so x vao vi tri thu k trong day
printf("Nhap gia tri va vi tri can chen x, k = ");
scanf("%d%d", &x,&k);
for(i=n-1;i>=k;i--)
{
a[i+1]=a[i];
}
a[k]=x;
printf("Day so sau khi chen la:");
for(i=0;i<n+1;i++)
{
printf("%5d", a[i]);
}
getch();
}
BÀI TẬP MẢNG MA TRẬN ( MẢNG 2 CHIỀU ) (bài 17 đến bài 21)
Bài 17: Nhập vào một ma trận n x m, in ra ma trận vừa nhập.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50][50];
int i,j,m,n;
printf("Nhap so hang n=");
scanf("%d",&n);
printf("Nhap so cot m=");
scanf("%d",&m);
printf("Nhap vao ma tran:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("Ma tran vua nhap la:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",a[i][j]);
}
printf("n");
}
}
Xem thêm : Chia sẻ tài liệu học lập trình Javascript Cơ Bản PDF [Mới 2023]
Bài 18: Nhập vào một ma trận n x m, in ra ma trận vừa nhập dưới dạng bảng. Hiển thị và tính tổng các phần tử trên hàng chẵn của ma trận. Tìm giá trị lớn nhất trên cột 1 của ma trận.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50][50];
int i,j,m,n;
printf("Nhap so hang n=");
scanf("%d",&n);
printf("Nhap so cot m=");
scanf("%d",&m);
printf("Nhap vao ma tran:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
// in ra ma tran vua nhap duoi dang bang
printf("Ma tran vua nhap la:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",a[i][j]);
}
printf("n");
}
// tinh tong phan tu tren hang chan cua mang
float s=0;
for(i=0;i<n;i=i+2)
{
for(j=0;j<m;j++)
{
s=s+a[i][j];
}
}
printf("Tong phan tu tren hang chan cua mang la: %5f",s);
// tim max tren cot 1 cua mang
int max;
max=a[0][0];
for(i=1;i<n;i++)
{
if(a[i][0]>max)
{
max=a[i][0];
}
}
printf("Gia tri max tren cot 1 cua mang la %5d",max);
getch();
}
Bài 19: Nhập 2 ma trận m x n, tính tổng 2 ma trận
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10][10],b[10][10],c[10][10];
int i,j,m,n;
printf("Nhap so hang m=");
scanf("%d",&m);
printf("Nhap so cot n=");
scanf("%d",&n);
printf("Nhap vao ma tran A:");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("Nhap vao ma tran B:");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
printf("Ma tran sau cong:");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",c[i][j]);
}
printf("n");
}
getch();
}
Bài 20: Nhập ma trận n x n, tìm phần tử lớn nhất trên đường chéo chính, kiểm tra ma trận vừa nhập xem có phải là ma trận đơn vị không
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10][10];
int i,j,n, max;
printf("Nhap n= ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//tim phan tu lon nhat tren duong cheo chinh
max=a[0][0];
for(i=0;i<n;i++)
{
if(a[i][i]>max)
{
max=a[i][i];
}
}
printf("Gia tri lon nhat tren duong cheo chinh la %d", max);
// kiem tra ma tran vua nhap co phai ma tran don vi
int kt=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(((i==j)&&(a[i][j]!=1))||((i!=j)&&(a[i][j]!=0)))
{
kt=1;
}
}
}
if(kt==0)
{
printf("La ma tran don vi");
}
else
{
printf("Khong phai la ma tran don vi");
}
getch();
}
Bài 21: Nhập vào một ma trận n x m, in ra ma trận vừa nhập dưới dạng bảng. Sắp xếp hàng 2 theo chiều giá trị các phần tử giảm dần. Đưa ra màn hình tổng các phần tử trong ma trận. Tìm giá trị lớn nhất trong mảng. Tìm giá trị nhỏ nhất chia hết cho 3 có trong mảng.
#include<stdio.h>
#include<conio.h>
int main()
{
int a[50][50];
int m,n,i,j;
printf("Nhap so hang n=");
scanf("%d",&n);
printf("Nhap so cot m=");
scanf("%d",&m);
printf("Nhap vao ma tran:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
// in ra ma tran vua nhap duoi dang bang
printf("Ma tran vua nhap la:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",a[i][j]);
}
printf("n");
}
//sap xep hang 2 trong mang theo chieu giam dan
int tg,k;
for(j=0;j<m-1;j++)
{
for(k=j+1;k<m;k++)
{
if(a[1][j]<a[1][k])
{
tg=a[1][j];
a[1][j]=a[1][k];
a[1][j]=tg;
}
}
}
printf("Ma tran vua sap xep hang 2 lan");
for(j=0;j<m;j++)
{
printf("%5d",a[1][j]);
}
//Dua ra man hinh tong cac phan tu ma tran
int s=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
s=s+a[i][j];
}
}
printf("Tong cac phan tu la: %d",s);
//gia tri nho nhat chia het cho 3 trong mang
int min, kt=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]%3==0)
{
min=a[i][j];
kt=1;
break;
}
}
}
if(kt==1)
{
for(i=0;i<n;i++)
{
for(j=0; j<m; j++)
{
if((a[i][j]%3==0)&&(a[i][j]<min))
{
min=a[i][j];
}
}
}
printf("So nho nhat trong cac so chia het cho 3 co trong day la %d", min);
}
else
{
printf("Trong mang vua nhap khong co so chia het cho 3");
}
getch();
}
Hi vọng bài viết hữu ích với bạn đọc! Tham khảo thêm bài tập C++ có lời giải có link download pdf tại đây.
Nguồn: https://laptrinhc.edu.vn
Danh mục: Tài liệu IT