Professional Documents
Culture Documents
KTLT CoBan
KTLT CoBan
1. Nhập:
· scanf("<Mã_định_dạng>", &Tên_Biến);
VD:
char HoTen[30];
float DiemToan;
2. Xuất:
Kí tự Char %c 1 byte
Phuc158@yahoo.com Page 1
Cấu trúc điều khiển
1. If eslse
if (<Điều kiện>)
{
//Khối lệnh này sẽ được thực hiện nếu <Điều kiện> ĐÚNG.
}
else
{
//Khối lệnh này sẽ được thực hiện nếu <Điều kiện> SAI.
}
2. Switch
switch (<Biểu_Thức>)
{
case <Giá_Trị_1>:
//Khối lệnh này sẽ được thực hiện
//nếu giá trị của <Biểu_Thức> = <Giá_Trị_1>;
break;
case <Giá_Trị_2>:
//Khối lệnh này sẽ được thực hiện
//nếu giá trị của <Biểu_Thức> = <Giá_Trị_2>;
break;
…………
…………
…………
default:
//Khối lệnh này sẽ được thực hiện
//nếu <Biểu_Thức> != tất cả các Giá_Trị ở trên;
break;
}
3. For
for (<Khởi_Tạo_Biến_Đếm>, <Điều_Kiện>, <Thay_Đổi_Biến_Đếm>)
{
//Khối lệnh này sẽ được lặp lại nếu <Điều_Kiện> ĐÚNG;
}
4. While
while (<Điều_Kiện>)
{
//Khối lệnh này sẽ được lặp lại nếu <Điều_Kiện> == ĐÚNG;
}
5. Do…While
do
{
//Khối lệnh;
}while(<Điểu_Kiện>);
Phuc158@yahoo.com Page 2
Chú thích: <Khối lệnh> sẽ được thực hiện 1 lần rồi so <Điều kiện> nếu đúng thì tiếp tục lặp lại <Khối
lệnh>, nếu sai thì kết thúc vòng lặp.
- Khác:
-----------------------------------------------------˜«™-----------------------------------------------------
Phuc158@yahoo.com Page 3
Bài tập:
Liệt kê ước số của số nguyên dương N:
Ý đồ:Cho i chạy từ 1 đến N-1, nếu N chia hết cho i thì i là ước số của N
void LietKeUocSo(int n)
{
for(int i=1 ; i<n ; i++)
if(n%i==0)
printf("%d ",i);
}
VD: 4 và 12
- 12 > 4 => 12-4 = 8 -> 4 và 8
- 8 > 4 => 8-4 = 4 -> 4 và 4
- 4 = 4 => Ước số chung lớn nhất là 4.
while(a!=b)
{
if(a>b)
a -= b;
else
b -= a;
}
KetQua = a;
return KetQua;
}
KetQua = a*b/UocSoChungLonNhat(a,b);
return KetQua;
}
Phuc158@yahoo.com Page 4
Số nguyên tố: là số tự nhiên lớn hơn 1, chỉ chia hết cho 1 và chính nó.
VD: 2, 3, 5, 7, 11…
int KiemTraSoNguyenTo(int n)
{
int KetQua = 1;//0: false, 1: true
for(int i=2;i<(int)sqrt(n);i++)
if(n%i == 0)
KetQua = 0;
return KetQua;
}
Ý đồ:
- Tính tổng các ước sô
- So sánh ước số với N, nếu bắng => Hoàn thiện
int KiemTraSoHoanThien(int n)
{
int KetQua = 0;
int TongUocSo = 0;
return KetQua;
}
· sqrt(9) = 3
· (int)sqrt(9)= 3
=> 3 = 3 => 9 là số chính phương
Phuc158@yahoo.com Page 5
int KiemTraSoChinhPhuong(int n)
{
int KetQua = 0; //0: false, 1: true
if(sqrt(n) == (int)sqrt(n))
KetQua = 1;
return KetQua;
}
VD: N = 123
- Biến đếm = 0
- 123 > 0 => Biến đếm = 1; N = 123/10 = 12
- 12 > 0 => Biến đếm = 2; N = 12/10 = 1
- 1 > 0 => Biến đếm = 3; N = 1/10 = 0
- 0>0: sai => Thoát khỏi vòng lặp, Biến đếm = 3 => N có 3 chữ số.
int DemChuSo(int n)
{
int KetQua=0;
while(n>0)
{
KetQua++;
n = n/10;
}
return KetQua;
}
Phuc158@yahoo.com Page 6
int SoDaoNguoc(int n)
{
int m = 0;
while(n>0)
{
m = m*10 + n%10;
n = n/10;
}
return m;
}
Ý đồ:
1. Xác định cơ số: VD: 123321 => Cơ số = 100000
2. Xử lý: Trong khi Cơ_Số > 1.
o Nếu Số_Đầu != Số_Đuôi => Không đối xứng; thoát khỏi vòng lặp.
o Ngược lại:Bỏ số đầu, bỏ số đuôi, Cơ_Số/100;
int KiemTraDoiXung(int n)
{
int KetQua = 1; //0: true, 1: false
int CoSo = 1;
//Xac dinh co so
while((n/CoSo)>9)
CoSo *=10;
//Xử lý
while(CoSo>1)
{
if((n%10)!=(n/CoSo)) //Nếu số đuôi khác số đầu
{
KetQua = 0;
break;
}
else
{
n = (n%CoSo)/10; //Bỏ số đầu và số đuôi
CoSo /=100;
}
}
return KetQua;
}
Phuc158@yahoo.com Page 7
Kiểm tra các chữ số của số nguyên dương N tăng dần từ trái sang phải:
Ý đồ:
- Xét giảm dần từ phải qua trái.
- Chữ số bên phải luôn luôn > chữ số bên trái.
int KiemTraTangDan(int n)
{
int KetQua = 1;
while(n>9)
{
if(n%10 < (n/10)%10)
{
KetQua = 0;
break;
}
n = n/10;
}
return KetQua;
}
while(n>=CoSo)
{
if((n%CoSo) == 0)
{
k++ ;
n = n/CoSo;
}
else
{
k=0;
break;
}
}
return k;
}
Phuc158@yahoo.com Page 8
Tài liệu tham khảo:
- Bài tập kĩ thuật lập trình – Nguyễn Tấn Trần Minh Khang.
- Bài tập ngôn ngữ lập trình C (từ A đến Z) – Huỳnh Tấn Dũng - Hoàng Đức Hải.
Phuc158@yahoo.com Page 9