Tải bản đầy đủ (.pdf) (12 trang)

Ôn tập ngôn ngữ lập trình C căn bản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (236.29 KB, 12 trang )

Buổi 1:
1. Giới thiệu ngôn ngữ lập trình C:
- Một số chương trình: Turbor C, Borland C, Dev C,…
- Giới thiệu về Dev C:
+ Biên dịch: F9
+ Chạy CT: F10
+ Biên dịch + Chạy: F11
- Cấu trúc 1 chương trình đơn giản:
#include<stdio.h> // Khai báo thư viện
int main()
{
printf("Hello! An");
….;

return 0; // Trả về giá trị cho hàm main
}
- Một số các lưu ý trong ngôn ngữ C:
+ C là một ngôn ngữ phân biệt chữ hoa và chữ thường.
int aa,Aa,aA;
+ Tất cả các từ khóa trong ngôn ngữ C đều phải viết chữ thường.
include , if, for, int, main…
+ Phân cách các câu lệnh bằng dấu chấm phẩy ;
+ Khi biên dịch bị báo lỗi, thì phải kiểm tra tại dòng màu đỏ thông báo của
chương trình hoặc trên 1 dòng.
- Một số lỗi trong lập trình C:
+ Lỗi cú pháp: do người lập trình gõ sai cấu trúc, từ khóa, câu lệnh,…Khi bị lỗi
này thì chương trình sẽ không biên dịch được đồng thời sẽ thông báo lỗi.
 Cách khắc phục: sửa lại các lỗi.
+ Lỗi phát sinh: do người sử dụng chương trình nhập đầu vào không đúng với
kiểu dữ liệu,…
 Cách khắc phục: nhập đúng dữ liệu hoặc lập trình để hạn chế đầu cho đúng..


+ Lỗi thuật toán: do người lập trình đưa ra cách giải quyết sai cho bài toán..Khi
bị lỗi này., chương trình vẫn biên dịch và chạy bình thường, tuy nhiên kết quả
sẽ sai.
 Cách khắc phục: Chọn cách giải quyết đúng và lập trình lại, hoặc sửa lại
đoạn chương trình tính toán sai.
2. Các thành phần cơ bản trong ngôn ngữ C:
- Các kiểu dữ liệu:
+ Kiểu số nguyên: int, long.
+ Kiểu số thực: float, double.
+ Kiểu ký tự: char.
- Các toán tử tính toán: + - * /(chia lấy phần nguyên) % (chia lấy phần dư).


+ Đối với kiểu int: /, %. VD: 8/6=1, 8%6=2, 20/8=2.
+ Đối với kiểu float: chỉ có /. VD: 10/4=2.5
int a=8,b=6,c;
float d=8.1,e=7,f;
c=a/b; //c=1
f=d%e;// sai
- Các hàm toán học thông thường: khai báo thư viện #include<math.h>
+ pow(a,b): ab
+ sqrt(a): căn bậc 2 của a.
+ pow(a,1/b): căn bậc b của a.
- Các phép toán so sánh: >, <, >=, <=, == (so sánh bằng), = (gán), != (khác)
+ if(a==b)
printf(“a=b”);
+ if(a=b)
printf(“a=b”);
- Các toán tử logic: && (và) , | | (hoặc) , ! (phủ định)
int a=3,b=4,c=8,d=6;

if (a>b && a>c && a>d)
printf(“a lon nhat”);
if (a>b || a>c || a>d)
printf(“a khong phai la so nho nhat”);
- Biến:
+ Khai báo:
Cú pháp: Kiểu dữ liệu Tên_biến;
+ Khai báo kiểu dữ liệu phù hợp để lưu giá trị cho biến.
+ Tên_biến:
 Ngắn gọn, không có khoảng trắng. VD: int delta, tong_binh_phuong;
 Thể hiện nội dung của biến.
 Bắt đầu phải bằng 1 ký tự chữ. VD: float x1,x2;
+ Có thể khai báo biến tại một vị trí bất kỳ trong chương trình, trước khi sử
dụng.
+ Có thể khai cùng lúc nhiều biến, cùng 1 kiểu dữ liệu. Các biến phải được phân
cách bởi dấu phẩy ,
int a,b,c;
+ Có thể khởi tạo giá trị ban đầu cho biến khi khai báo.
int e=5,f,h=9;
+ Lưu ý: trước khi sử dụng biến để tính tính toán 1 kết quả nào đó, nên khởi tạo
giá trị ban đầu.
int tong=3;
tong=tong+5;// tong=8


- Các toán tử tính toán thu gọn trong C:
+ Toán tử: ++, -- (tăng 1 hay giảm 1)
int a=4;
a++; //a=5
a++; tương đương a=a+1;

a--; tương đương a=a-1;
Phân biệt ++a và a++;
int a=1,b=2,c;
 c=b+a++; //a=2,b=2,c=3
 c=++a+b; //a=2,b=2,c=4
+
a+=b; tương đương a=a+b;
a-=b; tương đương a=a-b;
int a=4,b=3;
a=a+b;//a=7
a+=b;//a=7
3. Các câu lệnh nhập xuất trong C: thư viện #include<stdio.h>
- Câu lệnh xuất:
Cú pháp: printf(“Chuỗi hiển thị”,các đối số);
+ “Chuỗi hiển thị”: Hiển thị nội dung cần xuất, nếu là chuỗi thì thì sẽ hiển thị
nội dung chuỗi, nếu cần xuất giá trị của biến thì sử dụng các đặc tả.
Bảng đặc tả:
Kiểu dữ liệu
Đặc tả
+ Kiểu số nguyên: int, long
%d, %ld
+ Kiểu số thực: float, double
%f, %lf
+ Kiểu ký tự: char
%c, %s
VD:
*) printf(“Hello!”);  Hello!
*) int a=4,b=5,c;
printf(“So a: %d”,a);  So a: 4
printf(“So a: a”);  So a: a

printf(“Ket qua: %d + %d =%d”,a,b,a+b);  Ket qua: 4 + 5 = 9
printf(“\n”);  xuống dòng
+ Số lượng biến cần hiển thị trong chuỗi phải bằng số lượng đặc tả trong Chuỗi
hiển thị.
+ Đối với kiểu số thực:
%m.nf: m là số lượng số nguyên, n là số lượng số thập phân
VD: “%.2f”  hiển thị ra 2 số thập phân
- Câu lệnh nhập:
Cú pháp: scanf(“đặc tả”,&tên_biến);
+ Đặc tả: tương ứng với kiểu dữ liệu của biến.
+ Có thể nhập nhiều biến cùng trong 1 lệnh, các biến cách nhau bởi dấu phẩy,
+ Lưu ý: có dấu & trước tên biến.


VD:
int a,b,c;
printf(“Nhap a:”);
scanf(“%d”,&a);
printf(“Nhap b,c:”);
scanf(“%d,%d”,&b,&c);
Bài tập:
1. Viết chương trình nhập vào từ bàn phím 2 cạnh a,b của 1 hình chữ nhật. Xuất
ra chu vi và diện tích của hình chữ nhật đó.
2. Viết chương trình giải phương trình bậc nhất: ax+b=0. a, b được nhập vào từ
bàn phím.
3. Viết chương trình nhập vào 3 điểm toán, lý, hóa, tính điểm trung bình biết
rằng toán hệ số 2. Lý hệ số 3 và hóa hệ số 1.
4. Viết chương trình nhập vào 1 biển số xe là 1 số nguyên gồm 4 chữ số, xuất ra
số nút của số xe đó.
VD: Nhap so xe: 1239  So nut: 5.

Buổi 2:
4. Câu lệnh rẽ nhánh:
a. Câu lệnh if:
- Cú pháp 1:
if (điều kiện)
Câu lệnh;
 Nếu điều kiện là đúng thì thực hiện Câu lệnh nếu sai, bỏ qua không thực
hiện.
 Điều kiện: là một biểu thức trả về giá trị đúng hoặc sai. Điều kiện có thể kết
hợp bởi nhiều biểu thức và các toán tử logic (&&, ||).
 Câu lệnh: có thể chỉ có 1 lệnh hoặc nhiều lệnh nhằm thể hiện 1 mục đích.
Trong trường hợp Câu lệnh là câu lệnh phức (gồm nhiều lệnh) thì phải được
nằm trong cặp dấu {..}.
VD:
- int a=3,b=4;
if(a>b)
printf(“a>b”);
- // Nếu a > b thì hoán đổi giá trị a và b, ngược lại giữ nguyên
int a=5,b=3,t;
if(a>b)
{
t=a;
a=b;
b=t;
}


// cách 2
if(a>b)
{

a=a+b;
b=a-b;
a=a-b;
}
- Cú pháp 2:
if (điều kiện)
Câu lệnh 1;
else
Câu lệnh 2;
 Nếu điều kiện là đúng thì thực hiện câu lệnh 1, ngược lại thực hiện câu lệnh
2.
- Cú pháp 3:
if (điều kiện 1)
Câu lệnh 1;
else if (điều kiện 2)
Câu lệnh 2;

else if (điều kiện N)
Câu lệnh N;
else
Câu lệnh N+1;
Bài tập:
1. Viết chương trình nhập vào 3 số nguyên a,b,c. Tìm giá trị lớn nhất và nhỏ
nhất. VD: a=5, b=3, c=4  Hiển thị: Max=5, Min=3
2. Viết chương trình nhập vào 3 số nguyên a,b,c. Hiển thị 3 số theo thứ tự tăng
dần. VD: a=5, b=3, c=4  Hiển thị: 3 4 5
3. Giải và biện luận phương trình bậc hai: ax2+bx+c=0
4. Viết chương trình nhập vào 3 cạnh của 1 tam giác. Kiểm tra xem tính hợp lệ
của 3 cạnh này có phải là 3 cạnh của 1 tam giác hay không? Nếu đúng, tính chu
vi của tam giác, ngược lại đưa ra giá trị lớn thứ 2.

VD: a=10, b=9,c=1  Hiển thị: Gia tri lon thu 2 : 9
b. Câu lệnh switch:
Cú pháp:


switch(biểu thức)
{
case giá_trị_1: Câu lệnh 1;break;
case giá_trị_2: Câu lệnh 2;break;
….
case giá_trị_N: Câu lệnh N;break;
default: Câu lệnh N+1;break;
}
 Câu lệnh sẽ so sánh biểu thức, nếu đúng với giá trị nào thì sẽ thực hiện câu
lệnh tương ứng với giá trị đó. Trường hợp biểu không đúng với tất cả các giá trị
thì sẽ thực hiện câu lệnh N+1.
VD:
int a;
printf(“Nhap so a:”);
scanf(“%d”,&a);
switch(a)
{
case 1: printf(“Ban nhap so 1”);break;
case 2: printf(“Ban nhap so 2”);break;
case 3:
case 4: printf(“Ban nhap so 3 hoac 4”);break;
default: printf(“Ban nhap so lon hơn 4”);break;
}
Bài tập:
1. Viết chương trình nhập vào tháng và năm. Đưa ra số lượng ngày của tháng

đó.
VD:
tháng:12 năm:2014  So ngay:31
tháng:2 năm:2012  So ngay:29
5. Câu lệnh lặp:
a. Câu lệnh for:
Cú pháp:
for (biểu thức 1; biểu thức 2; biểu thức 3)
Câu lệnh;
 Đầu tiên sẽ thực hiện biểu thức 1, sau đó thực hiện biểu thức 2, nếu biểu thức
2 đúng thì sẽ thực hiện Câu lệnh, sau đó thực hiện biểu thức 3, tiếp theo sẽ thực
hiện lại biểu thức 2 cho đến khi biểu thức 2 có giá trị sai.
 Thông thường: biểu thức 1: khởi tạo giá trị cho biến đếm, biểu thức 2: điều
kiện dừng vòng lặp, biểu thức 3: cập nhật biến đếm.
VD: Viết chương trình hiển thị các số từ 1 đến 10.
int main()


{
int i;
for(i=1;i<=10;i++)
printf(“%d “,i);
return 0;
}
Bài tập:
1. Viết chương trình nhập vào số N. Tính tổng các số từ 1 đến N.
VD: N=4  Tong: 10
2. Viết chương trình nhập vào 2 số M,N(MVD: M=4, N=7  Tong le: 12
3. Viết chương trình tính giai thừa của N!. N được nhập vào từ bàn phím.

4. Viết chương trình tính tổng các ước số chẵn của N (không tính 1 và N). N
được nhập vào từ bàn phím.
VD: N=12  Tong4: 12
5. Tính giai thừa 2 của N!!. N!!=1.3.5…N nếu N lẻ, N!!=2.4.6..N nếu N chẵn.
6. Tính các tổng sau:
a. S1=1-22+32-…N2
b. S2=-1/N2+1/(N-1)2-1/(N-2)2+…1
c. S3=1-32+52-…N2 nếu N lẻ và S3=-22+42-…N2 nếu N chẵn.
7. Kiểm tra N có phải là số nguyên tố hay không?
HD: số NT là số chỉ chia hết cho 1 và chính nó. Xét từ 2 đến N-1 mà không có
số nào mà N chia hết  số NT.
8. Hiển thị các số hoàn hảo từ 1 đến N. Số hoàn hảo là số có tổng các ước số
của nó bằng chính nó (trừ nó ra).
9. Tính tổng các số nguyên tố từ 1 đến N.
10. Nhập vào 2 số a,b. Tính USCLN(a,b).
VD: a=8, b=12  USCLN(a,b)=4.
b. Câu lệnh while
Cú pháp:
while (điều kiện)
{Câu lệnh;};
- Trong khi điều kiện còn đúng thì Câu lệnh vẫn thực hiện. Khi điều kiện sai thì
sẽ dừng và thoát khỏi vòng lặp while.
- Điều kiện: có thể có 1 điều kiện hoặc nhiều điều kiện kết hợp bởi các toán tử
logic( &&, ||,..)
- Câu lệnh: có thể là câu lệnh đơn hoặc là câu lệnh phức.
VD: Viết chương trình hiển thị các số từ 1 đến 10.
int main()
{
int i;
i=1;

while (i<=10)


{
printf(“%d “,i);
i++;
};
return 0;
}
c. Câu lệnh do..while
Cú pháp:
do
{Câu lệnh;}
while (điều kiện);
- Đầu tiên sẽ thực hiện câu lệnh 1 lần, sau đó mới xét điều kiện, nếu điều kiện là
đúng thì lặp lại Câu lệnh, ngược lại thoát khỏi vòng lặp.
- Lưu ý: Giả sử điều kiện là sai từ đầu, đối với vòng lặp do..while thì vẫn sẽ
thực hiện Câu lệnh 1 lần. Còn đối với vòng lặp while thì sẽ không thực hiện lần
nào.
6. Hàm trong C:
- Hàm: là một chương trình nhằm thực hiện 1 chức năng, mục đích hay giải
quyết 1 bài toán nào đó. Hàm có thể có tham số đầu vào hoặc không có.
- Cú pháp:
Kiểu_dữ_liệu Tên_hàm (Các tham số)
{
Các câu lệnh;
}
VD: Tính tổng giai thừa từ 1 đến N.
GT(N)=N!
GT(2)=1*2=2

GT(3)=1*2*3=6
Bài tập 1: Viết chương trình nhập vào một số N. Kiểm tra N có phải là số
nguyên tố hay không? Nếu là SNT hiển thị “ N la SNT”, ngược lại tính tổng các
ước số không phải là số nguyên tố của N.
Bài tập 2: Nhập vào 1 số N. Hiển thị dãy số Fibonacy từ F(1) đến F(N). Biết
rằng giá trị ban đầu: F(1)=1, F(2)=1.
Buổi 3:
1. Nhập xuất từ File.
Khai báo: FILE *f,*g;
VD:
2. Kiểu mảng:
- Khai báo:
Kiểu_dữ_liệu Tên_mảng[số lượng phần tử];
VD: int A[20],B[10];


+ Truy cập giá trị trong mảng thông qua tên mảng và chỉ số.
VD: A[2]=5; A[3]=10;
A[4]=A[2]+A[3]; // A[4]=15
+ Khi khai báo B[10]
Mảng B có 10 phần tử từ B[0]..B[9].
- Nhập xuất mảng.
Bài tập 1: Nhập vào 1 dãy số nguyên gồm N phần tử. Tính tổng các số không
phải là số NT.
Bài tập 2: Đọc vào từ file 1 dãy số nguyên gồm N phần tử. Đưa ra vị trí và giá
trị của phần tử lớn nhất và nhỏ nhất.
Bài tập 3: Đọc.. Kiểm tra tính chất của dãy số có phải là toàn dương hay không?
Nếu phải hiển thị “ Day toan duong”, ngược lại “Khong phai”.
Bài tập 4: Đọc.. Kiểm tra tính chất của dãy số có phải là dãy giảm hay không?
Nếu phải hiển thị “ Day giam”, ngược lại “Khong phai”.

Bài tập 5: Đọc..Hiển thị số dương nhỏ nhất và số âm lớn nhất trong dãy.
Bài tập 6: Đọc…Sắp xếp dãy số thành dãy tăng dần.
Bài tập 7: Đọc…Đọc thêm 1 số X. Đưa ra vị trí phần tử có giá trị bằng X đầu
tiên trong dãy. Nếu không có hiển thị “Khong co”
VD: Dãy: 2 4 3 4 7, X=4  Hiển thị: Vi tri:1
Bài tập 8: Đọc…Đưa ra giá trị phần tử âm chẵn lớn thứ 2 trong dãy.
VD: Dãy: 4-3 - 6 4 -2 8. Hiển thị: -4
Bài tập 9: Đọc… Tìm vị trí phần tử lẻ nhỏ thứ 2 trong dãy.
VD: Dãy: 3 -3 5 4 -2 7. Hiển thị: 3
Bài tập 10: Đọc…Đọc thêm 1 số nguyên X ở dòng cuối trong file. Đưa ra vị trí
phần tử có giá trị bằng X kế cuối trong dãy. Nếu chỉ có 1 phần tử có giá trị X
hay không có thì xuất ra “Khong co”.
VD:
NHAP.INP
XUAT.OUT
6
Vi tri:3
243474
4
Bài tập 11: Đọc…Sắp xếp dãy thành 1 dãy có tính chất: các phần tử âm đứng
trước được sắp xếp giảm dần, các phần tử dương đứng sau cùng được sắp xếp
tăng dần.
VD:
NHAP.INP
XUAT.OUT
6
-2 -3 -9 5 7 8
8 -2 -9 5 7 -3



Bài tập 12: Đọc vào 2 dãy số nguyên đã được sắp xếp tăng dần. Nối 2 dãy này
thành 1 dãy số tăng dần.
VD:
NHAP.INP
XUAT.OUT
4
122345689
2368
5
12459
Bài tập 13: Đọc…Sửa các số nguyên tố trong dãy thành số 0 rồi hiển thị ra.
VD:
NHAP.INP
XUAT.OUT
6
809000
839573
Bài tập 14: Đọc…Chèn số 0 vào vị trí ngay sau các phần tử là số nguyên tố.
VD:
NHAP.INP
XUAT.OUT
6
830950704
839574
Bài tập 15: Đọc…Xóa tất cả các số nguyên tố có trong dãy.
VD:
NHAP.INP
XUAT.OUT
6
894

839574
Bài tập 16: Đọc…Hiển thị dãy con tăng dài nhất trong dãy ban đầu.
VD:
NHAP.INP
XUAT.OUT
8
279
8342791
3. Mảng 2 chiều.
- Khai báo: Kiểu_dữ_liệu Tên_mảng [số dòng] [số cột]
VD: int A[20][20]
- Nhập xuất ma trận A[m][n]
Bài tập 1: Đọc 1 ma trận A gồm m dòng, n cột từ tập tin. Tính tổng:
a. Các số chẵn trên ma trận
b. Các số nguyên tố trên nửa trên đường chéo chính của ma trận


c. Các số chia hết cho 3 hoặc 4 trên nửa dưới đường chéo phụ
d. Các số không phải là số nguyên tố nằm trên đường chéo chính.
Bài tập 2: Đọc…. Đưa ra kết quả là tổng lớn nhất của các phần tử nằm trên một
cột.
NHAP.INP
XUAT.OUT
34
16
8344
2791
1234
Bài tập 3: Đọc…. Hiển thị những dãy (dòng) là dãy tăng trong ma trận.
NHAP.INP

XUAT.OUT
34
1234
8344
2791
1234
Bài tập 4: Đọc…. Hiển thị cột giảm dài nhất trong ma trận
NHAP.INP
XUAT.OUT
44
10 9 3
8 3 10 4
721
2791
9234
10 1 4 3
Bài tập 5: Đọc…. Tính tổng các phần tử chẵn vừa nằm bên dưới đường chéo
chính, vừa nằm bên dưới đường chéo phụ của ma trận.
NHAP.INP
XUAT.OUT
55
12
83143
27915
92344
11438
31389
Bài tập 6: Đọc…. Sắp xếp ma trận tăng dần theo chiều ngang.
NHAP.INP
XUAT.OUT

44
1348
8314
1279
2791
2349
9234
1143
1143


Bài tập 7: Đọc…. Sắp xếp ma trận giảm dần theo chiều dọc.
NHAP.INP
XUAT.OUT
44
9794
8314
8344
2791
2233
9234
1111
1143



×