PPLT-C4(CauTrucDieuKhien)-6T

Download Report

Transcript PPLT-C4(CauTrucDieuKhien)-6T

C4: CẤU TRÚC ĐiỀU KHIỂN
1.
2.
3.
4.
5.
Giới thiệu
Cấu trúc rẽ nhánh
Cấu trúc lựa chọn
Cấu trúc lặp
Các lệnh rẽ nhánh và lệnh nhảy
1. Giới thiệu
 Bài toán 1: cho số r nhập từ bàn phím, nếu r> thì
xuất ra chu vi đường tròn và diện tích hình tròn,
nếu r <= 0 thì thông báo ra màn hình dòng “ban
kinh khong hop le”!
Vậy, ta phải xét 2 khả năng xảy ra với r khi lập
trình.
 Bài toán 2: Tính tổng S= 1  1  1  ...  1
1 3 5
n
(n nhập từ bàn phím)
1
Vậy ta cộng các biến
với 1OkOn vào biến S
k
1. Giới thiệu
 Từ hai bài toán ví dụ trên, ta phải sử dụng các
cấu trúc điều khiển để giải quyết bài toán.
 C++ cung cấp các cấu trúc điều khiển:
 Rẽ nhánh;
 Lựa chọn;
 Lặp;
2. CẤU TRÚC RẼ NHÁNH
2.1
2.2
2.3
2.4
2.5
Các điều kiện rẽ nhánh
Phát biểu if-else
Phát biểu if-else lồng
Phát biển switch
Khai báo enum
2.1 Các điều kiện rẽ nhánh
 Tìm đường đi:
 Ở 1 ngã 3 đường có 2 người (1 luôn nói
thật, 1 luôn nói dối). Chỉ với 1 câu hỏi với 1
người, bạn phải tìm được đường tới A.
 2 đứa tranh luận nhau:
 A: trời bsang gan hon trua vi to hon
 B: ngươc lai vi trua nong hon.
2.2 Phát biểu if …(khuyết)
 Cú pháp:
#include <iostream.h>
if (biểu_thức_điều_kiện) #include <conio.h>
void main()
Lệnh1;
{
int bien;
Sai
cout << "Nhap so ";
Bt_đk
cin >> bien;
if (bien>10)
Đúng
cout
<<
"Lon
hon
10";
Làm lệnh 1
getch();
}
Ví dụ (tt)
#include <iostream.h>
#include <conio.h>
void main()
{ int x;
cout << "Nhap so "; cin >> x;
if (x%2==0)
hai điều kiện này đối lập
cout << “x la so chan"; nhau, vì vậy ta nên sử
dụng cấu trúc điều khiển
if (x%2==1)
if ở dạng đủ.
cout << “x la so le";
if … else
getch();
}
2.2 Phát biểu if-else
 Cú pháp:
if (bt_đk)
Lệnh1;
else
lệnh2;
Bt_đk
Đúng
Làm lệnh 1
Sai
Làm lệnh 2
Ví dụ:
#include <iostream.h>
#include <conio.h>
void main()
{ int x;
cout << "Nhap so "; cin >> x;
if (x%2==0)
cout << “x la so chan";
else
cout << “x la so le";
getch();
}
Bt_đk
Đúng
Làm lệnh 1
Sai
Làm lệnh 2
int max(int a, int
b) tập:
Bài
{
return
a:b)các ví dụ sau, ví dụ nào
 Em hãy
cho((a>b)?
biết trong
} số lớn nhất trong 2 số)
sai (tìm
int max(int a, int b)
{ int giatri=b;
if (a>b)
giatri=a;
int max(int a, int b)
return giatri;
{
}
if (a>b)
return a;
return b;
}
int max(int a, int b)
{
if (a>b)
return a;
else
return b;
}
int max(int a, int b)
{ int giatri;
if (a>b) giatri=a;
if (a<=b) giatri=b;
return giatri;
}
int max(int a, int b)
{ int giatri;
if (a>b)
giatri=a;
else giatri=b;
return giatri;
}
Ví dụ sau đúng không? Vì sao?
if (n>0)
cout<<“ N duong”;
if (n<0)
cout<<“ N am”;
else
cout<<“ N la 0”;
?
Cấu trúc if mở rộng
Khi lập trình với những bài toán phức tạp
hơn, đòi hỏi xét nhiều điều với nhiều quan
hệ với nhau, người ta thường sử dụng cấu
trúc if lồng vào nhau.
if (N nguyên dương)
if (N chia hết cho 2)
Ví dụ
N là số dương chẵn;
else
N là số dương lẻ;
else
if (N >0)
if (N%2==0)
cout<<“duong chan”;
else
cout<<“duong le”;
else
if (N<0)
if (N nguyên âm)
if (N chia hết cho 2)
N là số âm chẵn;
if (N%2==0)
cout<< “N là số
âm chẵn”;
else
else
N là số âm lẻ;
else
N la so 0
cout<<“ N là số
âm lẻ”;
else
cout<<“N la so 0”
Nếu ∆>0 thì Pt có 2 nghiệm x1,x2; ngược
lại nếu ∆=0 thì Pt có 1 nghiệm x0, ngược
lại vô nghiệm
if (∆>0)
Nhiều lệnh thuộc 1
{ x1;
điều kiện phải nằm
x2;
trong khối { ..}
}
else
{
if (∆=0)
X0;
else
Vô nghiệm;
}
if (∆<0)
Vô nghiệm
else
{
if (∆=0)
X0;
else
{ x1;
x2;
}
}
2.3 Phát biểu if-else lồng
 Cú pháp:
if (biểu_thức)
Lệnh1;
else
Lệnh2;
if (biểu_thức2)
Lệnh1.1;
else
Lệnh1.2;
if (biểu_thức2)
Lệnh2.1;
else
Lệnh2.2;
2.3 Phát biểu if-else lồng
 Cú pháp:
if (biểu_thức)
Lệnh1;
else
Lệnh2;
if (biểu_thức1.1)
Lệnh1.1;
else
Lệnh1.2;
if (biểu_thức1.1.1)
Lệnh1.1.1;
else
Lệnh1.2.1;
if (biểu_thức2.1) if (biểu_thức2.2.2)
Lệnh1.1.1;
Lệnh2.1;
else
else
Lệnh1.2.1;
Lệnh2.2;
Ví dụ
a=9; b=7; c=4;
if ((a>b)&&(a>c))
z=a+b/2;
else
{
if(c>0)
z+=3;
}
a=9; b=7; c=4;
if ((a>b)&&(a<c))
z=a+b/2;
else
z=a-b/2;
if(c>0)
z+=3;
z=?12
z=? 9
Kinh nghiệm
 Xác định điều kiện:
• Kiểu của điều kiện là gì?
• Cần lựa chọn điều kiện một cách khoa học
(Đúng – Sai):
Cách chọn nào làm cho việc viết lệnh ít hơn
Cách chọn nào dễ hiểu hơn
Kinh nghiệm
 Cách viết:
• Viết đủ cấu trúc trước
• Thêm nội dung cho các trường hợp
• Sử dụng cặp dấu { và } để bao đoạn nội dung
thuộc về từng trường hợp
• Nên thụt đầu dòng với từng nội dung để dễ
kiểm soát
3.
Cấu trúc lựa chọn (switch)
 Trong việc viết chương trình, đôi khi ta gặp
trường hợp có nhiều lựa chọn cùng lúc, ứng với
mỗi lựa chọn là một vấn đề cụ thể cần giải quyết
Ví dụ: Xét kí tự ch:
Nếu ch=‘r’: màu đỏ,‘y’: màu vàng, ‘b’:
màu đen, ‘o’: màu cam, ‘g’: xanh dương,
‘w’: mau trắng, ‘p’: màu hồng.
3.
 Cú pháp:
Phát biển switch
kiểu: Số nguyên
hoặc ký tự hoặc
tập hợp
switch ( <biến> )
{
case <hằng 1> : <lệnh 1>; [break;]
…..
case <hằng n> : <lệnh n>; [break;]
default : <lệnh n+1>; [break;]
}
Thực hiện khi không thực hiện
bất kỳ các nhánh nào bên trên
Kết thúc
nhánh và
thoát khỏi
switch
void main()
Ví dụ:
{
char ch;
cout<< "Nhap vao a hoac b hoac c: ";
cin >>ch;
cout << '\n';
switch (ch)
{
case 'a' : cout << "ky tu duoc nhap la a"; break;
case 'b' : cout << "ky tu duoc nhap la b"; break;
default : cout << "ky tu duoc nhap la c"; break;
}
}
Ví dụ:
 Nhập vào tên xe, xuất ra xe đó thuộc hãng nào?
cout<<“Ten xe: ”;
cin>>loai;
switch (loai)
{ case “Ford” : cout<<“My”; break;
case “Honda” : cout<<“Nhat”; break;
case “BMW” : cout<<“Duc”;break;
default : cout<<“Khong biet; break;
}
#include
<iostream.h>
Bài
tập: Xác
định 1 số nguyên dương nhập từ bàn
phím
là số<math.h>
chẵn hay số lẻ.
#include
void main()
{
int so, kq;
cout << "Nhap vao so: ";cin >> so;cout << '\n';
kq=fmod(so, 2);//chia lay du cho 2 kq=so%2;
switch (kq)
{
case 0 : cout << "So chan"; break;
case 1 : cout << "so le"; break;
}
}
#include <iostream.h>
void main()
{
Nhập
int thang;
cout << "Nhap so thang "; 1
cin >> thang;
2
switch (thang)
3
{
4
case 1:
case 2: cout << "Mua Ha"; Khác
case 3:
case 4: cout << "Mua xuan";
break;
}
}
chú ý
Ví dụ:
Kết quả
Mua HaMua xuan
Mua HaMua xuan
Mua xuan
Mua xuan
Chú ý:
 Nếu không dùng break sau lệnh của case thì:
thực hiện lệnh và đến lệnh tiếp … chỉ thoát khỏi
switch khi gặp break hoặc hết lệnh
 Nếu nhánh case không có lệnh thì: kết quả là
kết quả ở lệnh ứng với case tiếp theo.
#include <iostream.h>
Kiểm tra một ký tự viết thường xem nó là
void main()
nguyên âm hay phụ âm.
{
char ch; cout << "nhap ky tu ";cin >> ch;
switch (ch)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': cout <<"Nguyen am!"; break;
default : cout <<"Phu am!"; break;
}
}
Ví dụ: Kết hợp if và switch
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 qua 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 0 (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 “loi chia cho 0”.
cout<<” Nhap 2 so:";
cin>>a>>b;
fflush(stdin);/*Xóa kí tự
enter trong vùng đệm
trước khi nhap phép
toán*/
cout<<”Nhap phep toan ";
cin>>pt;
switch(pt)
{
case '+':
cout<<a<<” + “<<b<<”
=”<<a+b; break;
case '-':
cout<<a<<” - “<<b<<” =”<<ab; break;
case '*':
cout<<a<<” * “<<b<<”
=”<<a*b; break;
case '/':
if (b!=0)
{ thuong=(float)a/b;
cout<<a<<” / “<<b<<”= ”
<<thuong; }
else
cout<<“không thể chia
duoc cho 0";
break;
}
4. CẤU TRÚC LẶP
4.1
Vòng lặp while
4.2
Vòng lặp do-while
4.3
Vòng lặp for
4.4
Các vòng lặp lồng
Ví dụ
 Bài toán 2: Tính tổng S= 1  1  1  ...  1
1 3 5
n
(n nhập từ bàn phím)
Vậy ta cộng các biến
1
k
với 1OkOn vào biến S
B1: S=0; k=1;
1
B2: S+=
k
B3: k+=2;
B4: Nếu k>n thì dừng, ngược lại quay lại B2.
4.1 Vòng lặp while
Cú pháp (lệnh):
Có giá trị:
- Đúng hoặc Sai
- 1 hoặc 0
while ( biểu thức )
Lệnh hoặc khối lệnh;
Nếu nhiều hơn 1
lệnh thì cần có cặp
dấu { và } bao các
lệnh
Ví duï: Tính toång bình phöông caùùc soá nguyeân döông töø 1 ñeán 4.
float S = 0;
int i = 0;
54321 >=<=44
while
(++i<=4)
S +=3*3
+=1*1
+=2*2
+=
S 4*4
+= i*i
S = 30
4/10/2015
Khi x = 5 nghóa <bt> cho giaù trò SAI,
luùc naøy voøng laëp seõ khoâng thöïc
hieän vaø chöông trình seõ tìm leänh
sau voøng laëp ñeå thöïc hieän.
S=0+1*1+2*2+3*3+4*4=36
35
Vậy: Cấu trúc while hoạt động
3<=4
5<=4
2<=4
1<=4
4<=4
S+=16
S+=4
S+=1
 B1: Xác định giá trị của
biểu thức (kiểm tra)
 Nếu biểu thức có giá
trị 0 (biểu thức sai): ra
khỏi vòng lặp
 Nếu biểu thức có giá
trị 1 (biểu thức đúng):
Qua B2.
 B2: Thực hiện lệnh
 B3: Quay lại B1
Xét ví dụ:
int count=1;
while (count<=5)
cout<<count*count;
count++;
cout<<‘\n’;
int count=1;
while (count<=5)
{
cout<<count*count;
cout<<‘\n’;
count++;
}
Chương trình nào đúng? Sai? Vì sao?
Lưu ý :
 Biểu thức trong cặp dấu ngoặc ( ) sau while có thể là biểu
thức ghép
 Bên trong thân của while:
 Có thể có các vòng lặp khác
 Để ra khỏi while thì:
 Biểu thức phải sai
 Ngoài ra, có thể dùng:
 Break
 return
 goto để nhảy ra khỏi chu trình đến một vị trí mong muốn
bất kỳ
Ví dụ
1: Tính
tổng:
1+tính
2+ 3+….+10
Gắn
hai biến
S S=
được
trong 2 chương trình:
S=0*0+1*1+2*2+..+10*10;
#include<iostream.h>
S=1*1+2*2+..+10*10;
#include<iostream.h>
void main()
#include <conio.h>
{
void main()
float s=0; int i=0;
{
while (i<=10)
float s=0;
{
int i=0;
while (++i<=10)
s=s+i;
s+=i;
i=i+1;
cout << ”Tong S la: “
}
<< s;
cout << ”Tong S la: “ << s; getch();
}
}
5.2 Vòng lặp do-while
#include <iostream.h>
void main ()
{
Cú pháp (lệnh) :
int i;
i=1;
do
do
{
{
cout<<setw(3)<<i;
Lệnh hoặc khối lệnh;
i+=1;
}
}
while (i<=10);
while ( biểu thức );
}
Sự khác nhau giữa while và do_while
Ví dụ 1:
do
{ -nhập r; tính dtich,
cvi.
} while (r>=0)
Ví dụ 2:
-nhập r;
while (r>=0)
{ -tính dtich, cvi.
-nhập r;
}
Ví dụ nào hợp lý?
Sự khác nhau giữa while và do_while
Ví dụ 1:
do
{ -chơi game
-cout<<“Ban muon
choi nua khong
(Y/N)?”
cin>>tl;
} while (tl==‘Y’ || tl==‘y’)
Ví dụ nào hợp lý?
Ví dụ 2:
cout<<“Ban muon choi
nua khong (Y/N)?”
cin>>tl;
while (tl==‘Y’ || tl==‘y’))
{ -chơi game
-cout<<“Ban muon
choi khong (Y/N)?”
cin>>tl;
}
 Kiểm tra điều kiện trước hay sau khi
thực hiện lệnh trong vòng lặp?
 Nếu (biểu thức) cho giá trị sai thì có
thực hiện lệnh trong vòng lặp ? có
thoát khỏi vòng lặp không?
 Nếu biểu thức luôn đúng có thực hiện
lệnh trong vòng lặp ? có thoát khỏi
vòng lặp không?
Ví dụ:
#include <iostream.h>
#include <conio.h>
main()
{
float s=0;
int i=0;
do{
s+=i;}
while (++i<=10);
cout << ”Tong S la: “ >> s;
getch();
}
#include <iostream.h>
#include <conio.h>
main()
{
float s=0;
int i=1;
do{
s+=i;
i=i+1;}
while (i=0);
cout << ”Tong S la: “ >> s;
getch();
}
4.3 Vòng lặp for
Cú pháp (lệnh):
for (b.thức1; b.thức 2; b.thức 3)
<Lệnh>;
Ba biểu thức phân cách bởi dấu ;
 B.thức 1: khởi tạo giá trị ban đầu (biến đếm) cho vòng
lặp. Chỉ làm 1 lần.
 B.thức 2: kiểm tra điều kiện lặp
 B.thức 3: dùng để thay đổi giá trị biến điều khiển
Thân for là một câu lệnh hoặc một khối lệnh
Ví dụ: Tính tổng các số từ 1 đến 100
Phân tích:
Lấy 0 + 1 + 2 + 3 + …. + 100
Hay
Vậy là:
0+1=1
1: Tạo biến đếm và gán =0
1+2=3
2: Kiểm tra biến đếm có <=100?
3+3=6
3: Gán tổng=tổng+biến đếm
4: Tăng biến đếm lên 1 -> 2: …
6 + 4 = 10
….
4/10/2015
Nguyen Kim Duc
46
Hoạt động của for …
B1
for (b.thức1;
<Lệnh>;
B3
B2 2;
b.thức
B4 3)
b.thức
B1: Khởi tạo giá trị ban đầu cho biến
đếm của vòng lặp. Chỉ làm 1 lần
B2: Kiểm tra điều kiện lặp.
Nếu Đúng thì qua B3
Nếu sai qua B4
B3: Thực hiện lệnh. Qua B4
B4: Thay đổi giá trị biến đếm. Về B2
Ví dụ:
Ví dụ 1: Tính tổng: S= 1+ 2+ 3+….10
#include<iostream.h>
cout<<“Nhap N “;cin>>N;
#include <conio.h>
float s=0;
main()
int i;
{
for (i=0; i<=N; i=i+1)
float s=0;
s=s+i;
for (int i=0; i<=10; i++)
cout <<”Tong S la: “;
s+=i;
cout >> s;
cout <<”Tong S la: “ >>s;
}
Lưu ý:
Nếu biểu thức 2 không có thì :
 Điều kiện luôn đúng -> Không ra khỏi for.
 Trong trường hợp này việc ra khỏi chu trình for cần
phải được thực hiện nhờ các lệnh: break, goto hoặc
return
Trong thân của for ta có thể:
 Có nhiều lệnh
 Có các cấu trúc lặp khác lồng nhau
Sau (biểu thức) nếu đặt dấu “;” sẽ không báo lỗi nhưng
hoạt động của for sẽ cho giá trị sai
Nhận xét chung về 3 vòng lặp
do … while
Sau khi
làm lệnh
for
Trước khi
làm lệnh
•Điều kiện Không
làm lệnh
sai
Làm lệnh
1 lần
Không
làm lệnh
•Điều kiện Làm lệnh
đúng
Ít nhất 1 lần
Làm lệnh
ít nhất 2 lần
Làm lệnh
Ít nhất 1 lần
Kiểm tra
điều kiện
while
Trước khi
làm lệnh
Cần trợ giúp bởi: break; goto; return
4.4 Các vòng lặp lồng
 Trong quá trình viết chương trình, đôi khi chúng
ta cần 1 vòng lặp sẽ không giải quyết được bài
toán.
 Thực tế cho thấy rằng các vòng lặp lồng nhau là
vấn đề bình thường
Ví dụ: Bản cửu chương
Ta nhận thấy: Các số 1, 2, …, 9 được biểu thị ??
trong bản cửu chương:
VD: Bản 1
Bản 2
Bản 3
 1x1=1
2x1=2
3x1=3
 1x2=2
2x2=4
3x2=6
 1x3=3
2x3=6
3x3=9
 …..
……..
…….
Trình tự thực hiện
#include <iostream.h>
#include<conio.h>
void main ()
int i, j;
for (i=1;i<5;i++)
{
for (j=1;j<5;j++)
cout<<i+j;
cout<<‘\n’;
}
getch();
}
Mô tả
int i, j;
for (i=1;i<5;i++)
{
for (j=1;j<5;j++)
cout<<i+j;
cout<<‘\n’;
}
j=1
j=2
j=3
j=4
i=1
2
3
4
5
i=2
3
4
5
6
i=3
4
5
6
7
i=4
5
6
7
8
5. Các lệnh rẽ nhánh và lệnh nhảy
5.1 Lệnh Continue
5.2 Lệnh break
5.3 Lệnh goto
5.4 Lệnh return
5.1 Lệnh continue
 Dừng vòng lặp hiện tại và chuyển quyền điều khiển về đầu
vòng lặp kế tiếp
 Trong while và do while, lệnh continue chuyển điều khiển
về thực hiện ngay phần kiểm tra
 Trong for điều khiển được chuyển về bước tính biểu thức 3,
sau đó quay lại bước 2 để bắt đầu một vòng mới của vòng
lặp
Chú ý :
- Sử dụng lệnh continue bên ngoài vòng lặp là lỗi
- Lệnh continue chỉ áp dụng cho vòng lặp chứ không áp dụng
cho switch
Ví dụ:
do
{
cin >> num;
if (num < 0) continue;
// xử lý …
} while (num != 0);
do
{
cin >> num;
if (num >= 0)
{
// xử lý …
}
} while (num != 0);
for (i=0; i<n; i++)
{
cin >>num;
if (num<0) continue; //làm cho nhảy tới: i++
// xử lý …
}
Ví dụ:
while (more)
{
for (i = 0; i < n; i++)
{
cin >> num;
if (num < 0)
continue; // làm cho nhảy tới: i++
// xử lý...
}
//xử lý 2...
}
continue; có ảnh
hưởng với while ?
5.2 Lệnh break
 Câu lệnh break cho phép ra khỏi các vòng lặp for,
while, do … while và cấu trúc rẽ nhánh switch.
 Khi có nhiều vòng lặp lồng nhau, câu lệnh break sẽ
đưa điều khiển chương trình ra khỏi vòng lặp chứa nó
không cần điều kiện gì.
 Cách viết: break;
Ví dụ:
for (i = 0; i < N; ++i)
{
cout << "Please enter your password: ";
cin >> password;
if (Verify(password)) // KT mật khẩu
break; // thoát khỏi vòng lặp
cout << “Khong dung!\n";
}
Ví dụ:
#include <iostream.h>
#include <conio.h>
void main()
{
int so,tong=0;
clrscr();
while (1)
{
cout <<"Nhap mot so nguyen: "; cin >>so;
if (so==0) break;
tong +=so;
}
cout<<"\nTong cac gia tri da nhap la: "<<tong;
getch();
}
5.3 Lệnh Goto
 Lệnh goto cung cấp hình thức nhảy tự do không có cấu
trúc nên dễ gãy chương trình. Vậy hạn chế sử dụng
 Cách viết: goto <nhãn>;
 Ví dụ:
for (i = 0; i < attempts; ++i)
{
cout << "Please enter your password: ";
cin >> password;
if(Verify(password)) // check password for correctness
goto out; // drop out of the loop
cout << "Incorrect!\n";
}
out:
//etc...
5.4 Lệnh return
 Lệnh return cho phép một hàm trả về một giá trị cho
thành phần gọi nó
 Cách viết: return <biểu_thức>;
 Trong đó biểu_thức chỉ rõ giá trị được trả về bởi hàm.
Kiểu của giá trị phải phù hợp với kiểu của hàm. Nếu kiểu
trả về và void viết return;
 Ví dụ:
int main (void)
{
cout << "Hello World\n";
return 0;
}
4.5 Khai báo enum
 Enum hay là kiểu liệt kê, đây là một tập các
hằng số nguyên được đặt tên
 Kiểu liệt kê thích hợp cho những kiểu cần thể
hiện một giá trị cố định như: ngày trong tuần,
tháng trong năm …
 Ví dụ:
 Quả (cam, quýt, bưởi, chuối, soài, ổi)
 Thứ (hai, ba, … chủ nhật)
 Giới tính (nam, nữ)
 Tháng (hai, ba, tư, … mười hai)
4.6 Khai báo enum
 enum [<kiểu>] {<hằng1> [= <giátrị1>], ...} [var_list];
 Ví dụ:
enum traicay {cam, quyt, buoi} qua;
Hoặc:
enum traicay {cam, quyt, buoi};
traicay qua=cam;
#include <conio.h>
#include <iostream.h>
int main()
{
enum qua_an {cam, quyt, buoi} qua;
qua=quyt;
switch (qua)
{
case cam: cout << "Qua cam la qua cam"; break;
case quyt: cout << "Qua quyt chua chua ngot ngot"; break;
case buoi: cout << "Qua buoi co hoa buoi"; break;
}
getch();
}
#include <conio.h>
#include <iostream.h>
int main()
{
enum qua_an {cam, quyt, buoi} qua;
qua=quyt;
switch (qua)
{
case 0: cout << "Qua cam la qua cam"; break;
case 1: cout << "Qua quyt chua chua ngot ngot"; break;
case 2: cout << "Qua buoi co hoa buoi"; break;
}
getch();
}
4.6 Khai báo enum
Lưu ý:
Mỗi hằng số có tên tạo ra enum được đặt cho một
giá trị nguyên; theo mặc định, những giá trị này bắt
đầu từ 0 (không) và tăng 1 (một) cho mỗi thành
viên kế tiếp của enum.
enum traicay {cam, quyt, buoi} qua;
0
1
2
4.6 Khai báo enum
 Muốn trị nguyên của các thành viên tạo thành
enum bắt đầu từ 1 có được ?
enum traicay {cam=1, quyt, buoi} qua;
#include <conio.h>
#include <iostream.h>
int main()
{
enum quy_nam {QuyMot=1, QuyHai, QuyBa, QuyTu} quy;
quy = QuyHai;
switch (quy)
{
case 1: cout << "Quy mot"; break;
case 2: cout << "Quy hai"; break;
case 3: cout << "Quy ba"; break;
case 4: cout << "Quy tu"; break;
default : cout << "Khong dung"; break;
}
getch();
}
Ví dụ