Cấu trúc switch – case

2
12397

Bài tập 1: Nhập vào 2 số nguyên và 1 phép toán. Nếu phép toán là ‘+’, ‘-‘, ‘*’ thì in ra kết quả là tổng, hiệu, tích của 2 số; Nếu phép toán là ‘/’ thì kiểm tra xem số thứ 2 có khác không hay không? Nếu khác không thì in ra thương của chúng, ngược lại thì in ra thông báo “khong chia duoc cho 0”.

Các bước thực hiện

  • Bước 1: Phân tích bài toán.
  • Bước 2: Cài đặt chương trình.
  • Bước 3: Kiểm tra và chạy thử.

Bước 1: Phân tích bài toán

  • Nhập 2 số nguyên bất kỳ, nhập 1 phép toán.
  • Xuất ra kết quả của phép toán vừa nhập.
  • 02 biến số nguyên (int), 01 biến lưu phép toán (biến pheptoan, kiểu char), 01 biến lưu kết quả (biến kết quả kiểu int).
  • Bài toán có 5 trường hợp của phép toán: +,-,*,/% => dùng cấu trúc switch…case.
  • Biều thức rẽ nhánh: biến pheptoan.

Bước 2: Cài đặt chương trình

#include <stdio.h>  
#include<conio.h>  
int main () 
{  
	int so1, so2;       
	float thuong;       
	char pheptoan;   
	printf("\n Nhap vao 2 so nguyen ");  
	scanf("%d%d",&so1,&so2);  
	fflush(stdin);  //Xoa ky tu enter trong vung dem truoc khi nhap phep toan  
	printf("\n Nhap vao phep toan ");   	
	scanf("%c",&pheptoan);  
	switch(pheptoan)  
	{  
		case '+':  
			printf("\n %d + %d =%d",so1, so2, so1+so2);  
			break;   	 	
		case '-':  
			printf("\n %d - %d =%d",so1, so2, so1-so2);  
			break;   	 	
		case '*':  
			printf("\n %d * %d =%d",so1, so2, so1*so2);  
			break;  
		case '/':  
			if (so2!=0)
			{ 
				thuong=float(so1)/float(so2);  
				printf("\n %d / %d =%f", so1, so2, thuong);  
			}  
			else printf("Khong chia duoc cho 0");              
			break;  
		default :  
			printf("\n Chua ho tro phep toan %c", pheptoan);  
			break;  
		}  
	getch();  
	return 0;  
}

Bước 3: Kiểm tra, sửa lỗi và chạy thử

Bài tập 2: Nhập một tháng (nhập bằng số), in ra màn hình tháng đó bằng tiếng Anh tương tứng (January, February, March, April, May, June, July, August, September, October, November, December). Nếu nhập tháng không đúng in ra màn hình “Month is invalid”

Bước 1: Phân tích bài toán:

  • Nhập vào một số tháng bằng số nguyên.
  • Xuất tháng đó ra màn hình bằng tiếng Anh tương ứng.
  • 01 biến thang có kiểu là số nguyên (int).
  • Bài toán có 13 trường hợp hợp lệ và 01 trường hợp không hợp lệ => sử dụng switch…case…
  • Biều thức rẽ nhánh: sử dụng biến thang

Bước 2: Cài đặt chương trình

  • Tạo project mới (giống các bài trước): File -> new ->Project
  • Khai báo thư viện và viết hàm main

thuvien

  • Khai báo và nhập dữ liệu

image010

  • Cài đặt câu lệnh rẽ nhánh

image011

Bước 3: Kiểm tra, sửa lỗi và chạy thử

Bài tập 03: Nhập vào thứ tự của tháng, cho biết tháng đó có bao nhiêu ngày.

#include <stdio.h> 
#include <conio.h>
void main()
{
	int thang;
	printf("Nhap vao mot thang bat ki(1-12): ");
	scanf("%d",&thang);
	switch(thang)
	{
		case 1:printf("Thang 1 co 31 ngay");break;
		case 2:printf("Thang 2 co 28 ngay");break;
		case 3:printf("thang 3 co 31 ngay");break;
		case 4:printf("thang 4 co 30 ngay");break;
		case 5:printf("thang 5 co 31 ngay");break;
		case 6:printf("thang 6 co 30 ngay");break;
		case 7:printf("thang 7 co 31 ngay");break;
		case 8:printf("thang 8 co 31 ngay");break;
		case 9:printf("thang 9 co 30 ngay");break;
		case 10:printf("thang 10 co 31 ngay");break;
		case 11:printf("thang 11 co 30 ngay");break;
		case 12:printf("thang 12 co 31 ngay");break;
		default:printf("Gia tri khong hop le");
	}
	getch();
}

Bài tập 04: Tính chu vi, diện tích của một trong các hình bên dưới (người dùng chọn hình)

  • Hình vuông
  • Hình chữ nhật
  • Hình tròn
#include <stdio.h> //Chuong trinh lua chon tinh chu vi dien tich cac hinh
#include <conio.h>
void main()
{
	printf("Hay lua chon cac hinh sau de tinh chu vi va dien tich:\n");
	printf("\t1.Hinh vuong\n\t2.Hinh chu nhat\n\t3.Hinh tron\n");
	int choose;
	printf("Lua chon cua ban la (1-3): ");
	scanf("%d",&choose);
	switch(choose)
	{
	case 1:
		{
			int x;
			printf("Ban da lua chon hinh vuong\n");
			printf("\tHay nhap vao do dai canh hinh vuong: ");
			scanf("%d",&x);
			int dientich_hv=x*x;
			int chuvi_hv=4*x;
			printf("\tKet qua:\n\t\tChu vi hinh vuong: ",chuvi_hv);
			printf("\tKet qua:\n\t\tDien tich hinh vuong: %d",dientich_hv);
			break;
		}
	case 2:
		{
			int a,b;
			printf("Ban da lua chon hinh chu nhat\n");
			printf("\tHay nhap vao do dai hai canh hinh chu nhat: ");
			scanf("%d%d",&a,&b);
			int dientich_hcn=a*b;
			int chuvi_hcn=2*(a+b);
			printf("\tKet qua:\n\t\tChu vi hinh chu nhat: %d",chuvi_hcn);
			printf("\tKet qua:\n\t\ttDien tich hinh chu nhat: %d",dientich_hcn);
			break;
		}
	case 3:
		{
			int r;
			const int pi=3.14;
			printf("Ban da lua chon hinh tron\n");
			printf("\tHay nhap vao ban kinh hinh tron: ");
			scanf("%d",&r);
			int chuvi_tron=r*pi;
			int dientich_tron=2*pi*r*r;
			printf("\tKet qua:\n\t\tChu vi hinh tron: %d",chuvi_tron);
			printf("\tKet qua:\n\t\tDien tich hinh tron: %d",dientich_tron);
			break;
		}
	default :printf("Lua chon khong hop le");
	}
	getch();
}

Bài tập 05: Nhập vào 1 số bất kỳ (0->9), cho biết cách đọc số vừa nhập

#include <stdio.h> //Chuong trinh nhap so va cho ra cach doc so
#include <conio.h>
void main()
{
	int a;
	printf("Nhap vao so tu nhien bat ki (0-9): ");
	scanf("%d",&a);
	switch(a)
	{
		case 0:printf("Cach doc so vua nhap: Khong");break;
		case 1:printf("Cach doc so vua nhap: Mot");break;
		case 2:printf("Cach doc so vua nhap: Hai");break;
		case 3:printf("Cach doc so vua nhap: Ba");break;
		case 4:printf("Cach doc so vua nhap: Bon");break;
		case 5:printf("Cach doc so vua nhap: Nam");break;
		case 6:printf("Cach doc so vua nhap: Sau");break;
		case 7:printf("Cach doc so vua nhap: Bay");break;
		case 8:printf("Cach doc so vua nhap: Tam");break;
		case 9:printf("Cach doc so vua nhap: Chin");break;
		default:printf("Gia tri khong hop le");
	}
	getch();
}

Bài tập 06:  Viết một chương trình dạng menu cho phép người dùng chọn một trong các chức năng bên dưới:
1. In ra màn hình “Xin chào các bạn”
2. Chức năng đổi nhiệt độ C sang độ F
3. Chức năng tính chu vi và diện tích hình tròn

#include <stdio.h> //Chuomg trinh menu lua chon
#include <conio.h>
void main()
{
	int choose;
	printf("Chon 1 trong 3 lua chon sau\n");
	printf("\t1.In ra man hinh Xin chao cac ban\n");
	printf("\t2.Chuc nang doi do C sang do F\n");
	printf("\t3.Chuc nang tinh chu vi dien tich hinh tron\n");
	printf("Lua chon cua ban la: ");
	scanf("%d",&choose);
	switch(choose)
	{
	case 1:printf("Xin chao cac ban");break;
	case 2:
		{
			int c;
			printf("\tBan da chon chuc nang doi do C sang do F\n");
			printf("\tHay nhap gia tri nhiet do (do C): ");
			scanf("%d",&c);
			int f=(c*1.8)+32;
			printf("\t\tGia tri do F la: %d",f);
			break;
		}
	case 3:
		{
			int r;
			const int pi=3.14;
			printf("Ban da chon chuc nang tinh chu vi dien tich hinh tron\n");
			printf("\tHay nhap vao ban kinh hinh tron: ");
			scanf("%d",&r);
			int chuvi_tron=r*pi;
			int dientich_tron=2*pi*r*r;
			printf("\tKet qua:\n\t\tChu vi hinh tron: %d",chuvi_tron);
			printf("\tKet qua:\n\t\tDien tich hinh tron: %d",dientich_tron);
			break;
		}
	default :printf("Lua chon khong hop le");
	}
	getch();
}

Bài tập tự làm

  1. Viết chương trình nhập vào 1 kí tự, cho biết kí tự này có là nguyên âm hay không?
  2. Nhập vào 1 số bất kỳ (0->9), cho biết cách đọc số vừa nhập
  3. Viết chương trình tính tích: 1*2*3*4*5*….*n, trong đó n nhập từ phím.
  4. Viết chương trình tính tổng: S = 2 + 4 + 6 + 8 +….+ 20.
  1. Viết chương trình tính tổng: 1*2 + 2*3+ 3*4 + 4*5 +.….+ n(n+1).
  2. Kiểm tra một ký tự nhập vào thuộc tập hợp nào trong các tập ký tự sau:
    1. Các ký tự chữ hoa: ‘A’…’Z’
    2. Các ký tự chữ thường: ‘a’… ‘z’
    3. Các ký tự chữ số: ‘0’… ‘9’
    4. Các ký tự khác.
  3. Hệ thập lục phân dùng 16 ký số bao gồm các ký tự 0.. 9 và A, B, C, D, E ,F. Các ký số A, B, C, D, E, F có giá trị tương ứng trong hệ thập phân như sau: A là 10, B là 11, C là 12, D là 13, E là 14, F là 15. Hãy viết chương trình cho nhập vào ký tự biểu diễn một ký số của hệ thập lục phân và cho biết giá trị thập phân tương ứng. Trường hợp ký tự nhập vào không thuộc các ký số trên, đưa ra thông báo lỗi: “Hệ thập lục phân không dùng ký số này”.
  4. Nhập n>=0. Tính S(n)=1-2+3-4+ … +(-1)n-1
  5. Nhập n>=0. Tính T(n)=123 … n
  6. Nhập n>=0. Tính S(n)=1+12+123+ … +123…n
  1. Nhập x,n. Tính T(x,n)=xn
  2. Nhập x,n. Tính S(x,n)=x+x2+x3+ … +xn
  3. Nhập x,n. Tính S(x,n)=-x+x2-x3+ … +(-1)nxn
  4. Nhập x,n. Tính S(x,n)=x-x2+x3-x4+ … +(-1)n-1xn

Xem thêm Vòng lặp For

2 COMMENTS

  1. cho em hỏi là mình có thể sử dụng kết quả của 2 case khác nhau thành 1 case mới được không ạ? Ví dụ: case 1 là kết quả của hình vuông, case 2 là kết quả của hình tròn. tạo thêm case 3 là tổng kết quả của hình vuông và hình tròn được không ạ? em xin cảm ơn

  2. Cho em hỏi là mình có thể dựa vào 2 case khác nhau tạo thành case thứ 3 liên quan đến kết quả của 2 case gốc không ạ? Ví dụ: case 1: kết quả hình vuông, case 2: kết quả hình tròn. tạo thêm case 3: tổng kết quả hình vuông với hình tròn. em xin cảm ơn ạ!

This site uses Akismet to reduce spam. Learn how your comment data is processed.