DANH SÁCH BÀI VIẾT Giải bài tập thực hành 1 – Các thành phần trong ngôn ngữ C Giải bài tập thực hành 2 – Cấu trúc rẽ nhánh Giải bài tập thực hành 3 – Cấu trúc lặp for Giải bài thực hành 4 – Cấu trúc lặp While, do…while Giải bài thực hành 5 – HÀM Giải bài thực hành 6 – Truyền tham số cho hàm Giải bài thực hành 7 – Mảng Giải bài thực hành 8 – Chuỗi ký tự Giải bài thực hành 9 – Kiểu cấu trúc Giải bài thực hành 10 – Tập tin
Bài tập thực hành 2: Cấu trúc rẽ nhánh
I, Các bài tập thực hành cơ bản
Bài 3: Viết chương trình tính tiền điện với chỉ số mới và chỉ số cũ Được nhập vào từ bàn phím. In ra màn hình chỉ số cũ, chỉ số mới và số tiền phải trả. Biết rằng 100 kWh đầu giá 1000, từ kWh 101 – 150 giá 1200, từ kWh 151 – 200 giá 2000, từ 201 trở lên giá 2500.
Code mẫu
#include <stdio.h>
#include <conio.h>
int main() {
int csm, csc, tien, tieuthu;
printf("Nhap chi so moi = ");
scanf("%d", &csm);
printf("Nhap chi so cu = ");
scanf("%d", &csc);
tieuthu=csm-csc;
if(tieuthu<=100)
tien=tieuthu*1000;
else
{
if(tieuthu<=150)
tien=100*1000 + (tieuthu-100)*1200;
else
{
if(tieuthu<=200)
tien=100*1000 + 50*1200 + (tieuthu-150)*2000;
else
{
if(tieuthu>=201)
tien=100*1000 + 50*1200 + 50*2000 + (tieuthu-200)*2500;
} } }
printf("\n CSM = %d", csm);
printf("\n CSC = %d", csc);
printf("\n Tien = %d", tien);
getch();
}
Bài 4. Viết chương trình nhập vào số nguyên dương, in ra số chẵn hay lẻ.
Code mẫu
#include <stdio.h>
#include <conio.h>
int main() {
int n;
printf("Nhap so nguyen duong: ");
scanf("%d", &n);
if(n<=0)
printf("So da nhap khong thoa man");
else
{
if(n%2==0)
printf("So nhap vao la so chan");
else
printf("So nhap vao la so le");
}
getch();
}
Bài 5. Cho ba số a, b, c đọc vào từ bàn phím. Hãy tìm giá trị lớn nhất của ba số trên và in ra kết quả.
Code mẫu
#include <stdio.h>
#include <conio.h>
int main() {
int a, b, c, max;
printf("Nhap so a: ");
scanf("%d", &a);
printf("Nhap so b: ");
scanf("%d", &b);
printf("Nhap so c: ");
scanf("%d", &c);
max=a;
if(b>a && c>a)
{
if(b>c)
max=b;
else
max=c;
}
else
{
if(b>a)
max=b;
if(c>a)
max=c;
}
printf("\n So lon nhat trong 3 so tren la: %d", max);
getch();
}
Bài 6. Viết chương trình nhập vào 4 số thực a, b, c, d. Tìm và in ra số lớn nhất trong 4 số đó (sử dụng toán tử điều kiện và cấu trúc if).
Code mẫu
#include<stdio.h>
int main() {
int a, b, c, d, max, max1, max2;
printf("Nhap vao so a: ");
scanf("%d", &a);
printf("Nhap vao so b: ");
scanf("%d", &b);
printf("Nhap vao so c: ");
scanf("%d", &c);
printf("Nhap vao so d: ");
scanf("%d", &d);
max1=a;
max2=c;
if(a<b)
max1=b;
if(c<d)
max2=d;
max=max1;
if(max2>max1)
max=max2;
printf("So lon nhat trong 4 so la: %d", max);
}
Bài 7. Cho ba số a, b, c đọc vào từ bàn phím. Hãy in ra màn hình theo thứ tự tăng dần các số. (chỉ được dùng thêm 2 biến phụ).
Code mẫu
#include <stdio.h>
int main() {
int a, b, c, trung_gian;
printf("Nhap vao so a: ");
scanf("%d", &a);
printf("Nhap vao so b: ");
scanf("%d", &b);
printf("Nhap vao so c: ");
scanf("%d", &c);
if(a>b)
{
trung_gian=a;
a=b;
b=trung_gian;
}
if(b>c)
{
trung_gian=b;
b=c;
c=trung_gian;
}
if(a>b)
{
trung_gian=a;
a=b;
b=trung_gian;
}
printf("Day so duoc sap xep theo thu tu tang dan la: %d %d %d", a, b, c);
}
Bài 8. Viết chương trình nhập vào một số nguyên n gồm ba chữ số. xuất ra màn hình chữ số lớn nhất ở vị trí nào?
Code mẫu
#include <stdio.h>
int main() {
int n, tram, chuc, donvi, max;
printf("Nhap so nguyen n(gom 3 chu so): ");
scanf("%d", &n);
tram = n/100;
chuc = ((n%100)/10);
donvi = (n%10);
max=tram;
if(chuc>tram && donvi>tram)
{
if(chuc>donvi)
max=chuc;
else
max=donvi;
}
else
{
if(chuc>tram)
max=chuc;
if(donvi>tram)
max=donvi;
}
if(max==tram)
printf("Chu so lon nhat %d nam o hang tram", max);
else
if(max==chuc)
printf("Chu so lon nhat %d nam o hang chuc", max);
else
printf("Chu so lon nhat %d nam o hang don vi", max);
}
Bài 9. Viết chương trình nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo thứ tự tăng dần của các chữ số.
Code mẫu
#include <stdio.h>
int main() {
int n, a, b, c, doi;
printf("Nhap so nguyen n(gom 3 chu so): ");
scanf("%d", &n);
a = n/100;
b = ((n%100)/10);
c = n%10;
if(a>b)
{
doi=a;
a=b;
b=doi;
}
if(b>c)
{
doi=b;
b=c;
c=doi;
}
if(a>b)
{
doi=a;
a=b;
b=doi;
}
printf("%d%d%d", a, b, c);
}
Bài 10. Nhập vào ngày, tháng, năm. Kiểm tra xem ngày, tháng, năm đó có hợp lệ không? In kết quả ra màn hình.
Code mẫu
#include <stdio.h>
int main() {
int ngay, thang, nam;
printf("Nhap ngay,thang,nam: ");
scanf("%d%d%d",&ngay,&thang,&nam);
switch(thang) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if( ngay>0 && ngay<=31){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam);
break;
}
else
{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam);
break;
}
case 4: case 6: case 9: case 11:
if( ngay<=30 && ngay>0){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam);
break;
}
else{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam);
break;
}
case 2:
if( ngay <=28 && ngay > 0){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam);
break;
}
else
{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam);
break;
}
default: printf("Ngay %d thang %d nam ko hop le\n",ngay,thang,nam);
break;
}
}
Bài 11. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp lệ hay không? In kết quả ra màn hình.
Code mẫu
#include <stdio.h>
int main() {
int a,b,c;
printf("Nhap vao gio: ");
scanf("%d", &a);
printf("Nhap vao phut: ");
scanf("%d", &b);
printf("Nhap vao giay: ");
scanf("%d", &c);
if((a>=0 && a<=23) && (b>=0 && b<=59) && (c>=0 && c<=59))
printf("Thoi gian ban da nhap la %d gio %d phut %d giay hop le", a,b,c);
else
printf("Thoi gian ban da nhap la %d gio %d phut %d giay khong co!", a,b,c);
}
Bài 12. Viết chương trình nhập vào ngày, tháng, năm hợp lệ. cho biết năm này có phải là năm nhuận hay không? In kết quả ra màn hình. Trong DƯƠNG LỊCH : Năm nhuận là năm chia hết cho 4, nhưng không chia hết cho 100 (trừ những năm chia hết cho 400 cũng là năm nhuận).
Code mẫu
#include <stdio.h>
int main() {
int ngay, thang, nam;
printf("Nhap ngay,thang,nam: ");
scanf("%d%d%d",&ngay,&thang,&nam);
switch(thang) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if( ngay>0 && ngay<=31){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam); break;
}
else
{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam); break;
}
case 4: case 6: case 9: case 11:
if( ngay<=30 && ngay>0){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam); break;
}
else{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam); break;
}
case 2:
if( ngay <=28 && ngay > 0){
printf("Ngay %d thang %d nam %d hop le\n",ngay,thang,nam); break;
}
else
{ printf("Ngay %d thang %d nam %d ko hop le\n",ngay,thang,nam); break;
}
default: printf("Ngay %d thang %d nam ko hop le\n",ngay,thang,nam); break;
}
if(nam%400==0) printf("Nam %d la nam nhuan",nam);
else
{
if(nam%4==0 && nam%100!=0) printf("Nam %d la nam nhuan",nam);
else printf("Nam %d ko phai la nam nhuan",nam);
}
}
Bài 13. Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay không? (Số chính phương là số khi lấy căn bậc 2 có kết quả là số nguyên).
Code mẫu
#include <stdio.h>
#include <math.h>
int main() {
int n,a;
printf("Nhap vao so nguyen duong: ");
scanf("%d", &n);
if(n>0)
{
a=sqrt(n);
if((a*a)==n)
printf("So ban da nhap vao la so chinh phuong");
else
printf("So ban da nhap vao ko phai la so chinh phuong");
}
}
Bài 14. Viết chương trình xét xem một tam giác có phải là tam giác đều hay không khi biết chiều dài ba cạnh của tam giác.
Code mẫu
#include <stdio.h>
int main() {
int a, b, c;
printf("Nhap canh thu nhat: ");
scanf("%d", &a);
printf("Nhap canh thu hai: ");
scanf("%d", &b);
printf("Nhap canh thu ba: ");
scanf("%d", &c);
if(a==b && b==c)
printf("Tam giac da nhap la tam giac deu");
else
printf("Tam giac da nhap ko phai la tam giac deu");
}
Bài 15. Viết chương trình xét xem một tam giác có phải là tam giác vuông hay không khi biết chiều dài ba cạnh của tam giác.
Code mẫu
#include <stdio.h>
int main() {
int a, b, c;
printf("Nhap canh thu nhat: ");
scanf("%d", &a);
printf("Nhap canh thu hai: ");
scanf("%d", &b);
printf("Nhap canh thu ba: ");
scanf("%d", &c);
if((a*a == (b*b + c*c)) || (b*b == (a*a + c*c)) || (c*c == (b*b + a*a)))
printf("Tam giac da nhap la tam giac vuong");
else
printf("Tam giac da nhap ko phai la tam giac vuong");
}
Bài 16. Viết chương trình nhập vào điểm 3 môn thi : Toán, Lý, Hóa của học sinh. Nếu tổng điểm >=15 và không có môn nào dưới 4 thì in ra kết quả đậu. Nếu đậu mà các môn đều lớn hơn 5 thì in ra lời phê “Học đều các môn”, ngược lại thì in ra “Học chưa đều các môn”, các trường hợp khác là “Thi hỏng”
Code mẫu
#include <stdio.h>
int main() {
float toan, ly, hoa, tong;
printf("Nhap diem toan, ly, hoa: ");
scanf("%f %f %f", &toan, &ly, &hoa);
tong=toan+ly+hoa;
if((tong>=15)&&(toan>=4)&&(ly>=4)&&(hoa>=4))
{
printf("\n Thi dau");
if(toan>=5 && ly>=5 && hoa>=5)
printf("\n Hoc deu cac mon");
else
printf("\n Hoc chua deu cac mon");
}
else
printf("\n Thi chua dat");
}
II, Các bài tập thực hành nâng cao
Bài 20. Viết chương trình nhập vào 1 số từ 0 đến 9, in ra chữ số tương ứng. ví dụ nhập số 5, in ra chữ “Năm”.
Code mẫu
#include <stdio.h>
int main() {
int so;
printf("Nhap so: ");
scanf("%d", &so);
switch(so) {
case 0:
printf("Khong"); break;
case 1:
printf("Mot"); break;
case 2:
printf("Hai"); break;
case 3:
printf("Ba"); break;
case 4:
printf("Bon"); break;
case 5:
printf("Nam"); break;
case 6:
printf("Sau"); break;
case 7:
printf("Bay"); break;
case 8:
printf("Tam"); break;
case 9:
printf("Chin"); break;
default:
printf("So da nhap khong hop le!");
}
}
Bài 21. Viết chương trình nhập số giờ làm và lương giờ rồi tính số tiền lương tổng cộng. Nếu số giờ làm lớn hơn 40 thì những giờ làm dôi ra được tính 1,5 lần.
Code mẫu
#include <stdio.h>
int main() {
int gio;
float luong_gio, ldoi = 1.5, luong;
printf("Nhap so gio lam: ");
scanf("%d", &gio);
printf("Nhap luong moi gio: ");
scanf("%f", &luong_gio);
if(gio<40)
luong = gio * luong_gio;
else
luong = 40 * luong_gio + (gio-40) * luong_gio * ldoi;
printf("%f",luong);
}