1. Trang chủ
  2. » Công Nghệ Thông Tin

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

12 521 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 236,29 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 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ư).

Trang 1

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ư)

Trang 2

+ Đố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

Trang 3

- 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ả:

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

Trang 4

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;

}

Trang 5

// 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:

Trang 6

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()

Trang 7

{

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(M<N) Tính tổng các số lẻ từ M đến N VD: 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)

Trang 8

{

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];

Trang 9

+ 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:

6

2 4 3 4 7 4

4

Vi tri:3

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:

6

8 -2 -9 5 7 -3

-2 -3 -9 5 7 8

Trang 10

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:

4

2 3 6 8

5

1 2 4 5 9

1 2 2 3 4 5 6 8 9

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:

6

8 3 9 5 7 3

8 0 9 0 0 0

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:

6

8 3 9 5 7 4

8 3 0 9 5 0 7 0 4

Bài tập 15: Đọc…Xóa tất cả các số nguyên tố có trong dãy

VD:

6

8 3 9 5 7 4

8 9 4

Bài tập 16: Đọc…Hiển thị dãy con tăng dài nhất trong dãy ban đầu

VD:

8

8 3 4 2 7 9 1

2 7 9

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

Trang 11

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

3 4

8 3 4 4

2 7 9 1

1 2 3 4

16

Bài tập 3: Đọc… Hiển thị những dãy (dòng) là dãy tăng trong ma trận

3 4

8 3 4 4

2 7 9 1

1 2 3 4

1 2 3 4

Bài tập 4: Đọc… Hiển thị cột giảm dài nhất trong ma trận

4 4

8 3 10 4

2 7 9 1

9 2 3 4

10 1 4 3

10 9 3

7 2 1

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

5 5

8 3 1 4 3

2 7 9 1 5

9 2 3 4 4

1 1 4 3 8

3 1 3 8 9

12

Bài tập 6: Đọc… Sắp xếp ma trận tăng dần theo chiều ngang

4 4

8 3 1 4

2 7 9 1

9 2 3 4

1 1 4 3

1 3 4 8

1 2 7 9

2 3 4 9

1 1 4 3

Trang 12

Bài tập 7: Đọc… Sắp xếp ma trận giảm dần theo chiều dọc

4 4

8 3 1 4

2 7 9 1

9 2 3 4

1 1 4 3

9 7 9 4

8 3 4 4

2 2 3 3

1 1 1 1

Ngày đăng: 27/08/2019, 16:09

TỪ KHÓA LIÊN QUAN

w