Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
180 KB
Nội dung
ĐỀ CƯƠNG NGÔN NGỮ LẬP TRèNH C ( Cao Đẳng ) By: Huy05dt2@gmail.com Cõu 1: Trỡnh bày một số quy tắc cần thiết khi viết chương trỡnh băng ngôn ngữ C? Cho VD minh họa? Trả lời: *Các Quy tắc cần thiết khi viết chương trình bàng ngôn ngữ lập trình C: Quy tắc 1: Mỗi câu lệnh có thể viết trên một hay nhiều dòng nhưng phải được kết thúc bằng dấu chấm phẩy ; Quy tắc 2: Khi viết lời giải thích cần phải đặt lời giải thích giữa dấu /* và dấu */ và có thể được viết - Trên một dòng: sử dụng dấu // ( nội dung chú thích ). VD: int x ; // biến chứa số đếm - Trên nhiều dòng: /* nội dung …………… */ VD: int x ; /*biến chứa số đếm ………………… ………………*/ Quy tắc 3: Trước khi sử dụng một hàm cần biết nó nằm trong thư viện nào và phải dùng toán tử #include nạp thư viện đó vào chương trình. VD: để dùng hàm printf() ta phải nạp thư viện stdio.h như sau: #include “stdio.h” Quy tắc 4: Một chương trình có thể có nhiều hàm nhưng chỉ có duy nhất một hàm chính (hàm main) Cõu 2: trỡnh bày cỏc kiểu dữ liệu trong ngụn ngữ C, cho vớ dụ.? Trả lời: -Kiểu char ( kiểu ký tự ) VD: unsigned 0 ữ 255. -Kiểu nguyờn . VD: unsigned short 0 – 65535. -Kiểu dấu phẩy động VD: float 3.4E – 38 đến 3.4E+38. Cõu 3 : Trỡnh bày khỏi niệm kiểu hằng, cấu trỳc khai bỏo hằng trong ngụn ngữ C. cho vớ dụ minh họa?. Trả lời: -Hằng là các đại lượng cố định không thay đổi trong khi tính toán. -Cấu trỳc: # define <tờn hằng> <giỏ trị> -VD: #define max 100 #define sodem //kiểu nguyờn #define KT ‘A’ // kiểu giỏ trị Cõu 4: trỡnh bày khỏi niệm kiểu biến, cấu trỳc khai bỏo biến?. cho vớ dụ minh họa?. Trả lời: - Biến là giá trị có thể thay đổi được trong khi tính toán, và được khai báo trước khi sử dụng. -Cấu trỳc: < kiểu biến > <tờn biến> -VD: int a,b,c; // khai bỏo biến kiểu nguyờn long y; // khai bỏo biến kiểu long. unsigned char z; // khai bỏo kiểu kớ tự Cõu 5: Trỡnh bày khỏi niệm mảng dữ liệu?. cấu trỳc khi khai bỏo kiểu mảng. ?cho vớ dụ minh họa.? Trả lời: - Mảng là tập hợp cỏc phần tử cú cựng 1 dữ liệu và cựng 1 tờn. - Cấu trỳc: kiểu mảng < tờn mảng> [ số phần tử ] - VD: int A[ 10 ]; //khai bỏo mảng kiểu nguyờn 10 phần tử By: Huy05dt2@gmail.com Cõu 6: Trỡnh bày phương pháp lấy địa chỉ của biến và địa chỉ của mảng , phần tử mảng. Cho vớ dụ minh họa? Trả lời: - Mỗi biến được cấp phát một vùng nhớ gồm một số byte liên tiếp. Số hiệu của byte đầu chính là địa chỉ của biến. Địa chỉ của biến sẽ được sử dụng trong một số hàm ta sẽ nghiên cứu sau này (Ví dụ như hàm scanf ). Để lấy địa chỉ của một biến ta sử dụng phép toán : & tên biến -Địa chỉ đầu của một mảng Tên mảng biểu thị địa chỉ đầu của mảng. Như vậy ta có thể dùng a thay cho &a[0]. - Lấy địa chỉ một phần tử của mảng Có một vài hạn chế trên các mảng hai chiều. Chẳng hạn có thể lấy địa chỉ của các phần tử của mảng một chiều, nhưng nói chung không cho phép lấy địa chỉ của phần tử của mảng hai chiều. Như vậy máy sẽ chấp nhận &a[i] nhưng không chấp nhận phép tính &y[i][j]. Câu7: Trình bày khái niệm về cấu trúc hàm, cấu trúc hàm tả lại giá trị và hàm không trả lại giá trị. Cho ví dụ minh họa? Trả lời: - Khái niệm: Hàm có thể xem là một đơn vị độc lập của chương trình. Các hàm có vai trò ngang nhau, vì vậy không có phép xây dựng một hàm bên trong các hàm khác Xây dựng một hàm bao gồm :-Khai báo kiểu , đặt tên hàm , khai báo các đối và đưa ra câu lệnh cần thiết để thực hiện yêu cầu đề ra. - Hàm trả lại giá trị: → Cấu trúc: <Kiểu hàm> <Tên hàm> ( <khai báo các đối số>) { // Khai báo các biến cục bộ // Các câu lệnh // [return[biểu thức];] } -VD: Tìm giá trị lớn nhất của 2 số int Max(int x , int y ) { int z=0; if(x>y) z=x; else z=y; return z; } - Hàm không trả lại giá trị → Cấu trúc: void <Tên hàm> ( <khai báo các đối số>) { // Khai báo các biến cục bộ // Các câu lệnh By: Huy05dt2@gmail.com } -VD: Tìm giá trị của 2 số int 2; // biến khai báo toàn cục void Max(int x , int y ) { if(x>y) z=x; else z=y; } Câu 8: Trình bày biểu thức và các phép toán số học. Cho ví dụ minh họa.? Trả lời: - Biểu thức : kết hợp giữa các phép toán và các toán hạng để diễn tả một công thức toán học nào đó , Mỗi biểu thức có sẽ có một giá trị - Các phép toán hai ngôi số học là Phép toán ý nghĩa Ví dụ + Phép cộng a+b - Phép trừ a-b * Phép nhân a*b / Phép chia a/b ( Chia số nguyên sẽ chặt phần thập phân ) % Phép lấy phần dư a%b ( Cho phần dư của phép chia a cho b ) Có phép toán một ngôi - ví dụ -(a+b) sẽ đảo giá trị của phép cộng (a+b). Ví dụ1 : 11/3=3 11%3=2 -(2+6)=-8 Các phép toán + và - có cùng thứ tự ưu tiên, có thứ tự ưu tiên nhỏ hơn các phép * , / , % và cả ba phép này lại có thứ tự ưu tiên nhỏ hơn phép trừ một ngôi. Ví dụ2 : x =0; // lệnh gán giá trị 0 cho biến x i++; // lệnh tăng đơn vị cho biến i( i=i+1) y=11; x=y%10; //x=1 y/=10 ; //y=1 Câu 9: Trình bày các phép toán quan hệ, Cho ví dụ minh họa? Trả lời : - Các phép toán quan hệ và ví dụ: Phép toán ý nghĩa Ví dụ > So sánh lớn hơn a>b 4>5 có giá trị 0 By: Huy05dt2@gmail.com >= So sánh lớn hơn hoặc bằng a>=b 6>=2 có giá trị 1 < So sánh nhỏ hơn a<b 6<=7 có giá trị 1 <= So sánh nhỏ hơn hoặc bằng a<=b 8<=5 có giá trị 0 == So sánh bằng nhau a==b 6==6 có giá trị 1 != So sánh khác nhau a!=b 9!=9 có giá trị 0 Câu 10 : Trình bày các phép toán tăng, giảm, lệnh gán và biểu thức. Cho ví dụ minh họa? Trả lời : - Các phép toán tăng, giảm. C đưa ra hai phép toán một ngôi để tăng và giảm các biến . Toán tử tăng là ++ sẽ cộng 1 vào toán hạng của nó, toán tử giảm thì sẽ trừ toán hạng đi 1. Ví dụ : n=5 ++n Cho ta n=6 n Cho ta n=4 Ta có thể viết phép toán ++ và trước hoặc sau toán hạng như sau : ++n, n++, n, n Sự khác nhau của ++n và n++ ở chỗ: trong phép n++ thì tăng sau khi giá trị của nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng. Sự khác nhau giữa n và n cũng như vậy. Ví dụ : n=5 x=++n Cho ta x=6 và n=6 x=n++ Cho ta x=5 và n=6 - Lệnh gán và biểu thức Biểu thức gán là biểu thức có dạng : v = e Trong đó v là một biến ( hay phần tử mảng ), e là một biểu thức. Giá trị của biểu thức gán là giá trị của e, kiểu của nó là kiểu của v. Nếu đặt dấu ; vào sau biểu thức gán ta sẽ thu được phép toán gán có dạng : v=e; Biểu thức gán có thể sử dụng trong các phép toán và các câu lệnh như các biểu thức khác. Ví dụ như khi ta viết a=b=5; thì điều đó có nghĩa là gán giá trị của biểu thức b=5 cho biến a. Kết qủa là b=5 và a=5. By: Huy05dt2@gmail.com Hoàn toàn tương tự như : a=b=c=d=6; gán 6 cho cả a, b, c và d Ví dụ : z=(y=2)*(x=6); { ở đây * là phép toán nhân } gán 2 cho y, 6 cho x và nhân hai biểu thức lại cho ta z =12. Câu 11: Trình bày thứ tự ưu tiên của các phép toán. Cho ví dụ minh họa? Trả lời: - Thứ tự ưu tiên các phép toán -Các phép toán có độ ưu tiên khác nhau, điều này có ý nghĩa trong cùng một biểu thức sẽ có một số phép toán này được thực hiện trước một số phép toán khác. -Thứ tự ưu tiên của các phép toán được trình bày trong bảng sau: TT Phép toán Trình tự kết hợp 1 () [] -> Trái qua phải 2 ! ~ & * - ++ (type ) sizeof Phải qua trái 3 * ( phép nhân ) / % Trái qua phải 4 + - Trái qua phải 5 << >> Trái qua phải 6 < <= > >= Trái qua phải 7 == != Trái qua phải 8 & Trái qua phải 9 ^ Trái qua phải 10 | Trái qua phải 11 && Trái qua phải 12 || Trái qua phải 13 ?: Phải qua trái 14 = += -= *= /= %= <<= >>= &= ^= |= Phải qua trái 15 , Trái qua phải Chú thích: Các phép toán tên một dòng có cùng thứ tự ưu tiên, các phép toán ở hàng trên có số ưu tiên cao hơn các số ở hàng dưới. Đối với các phép toán cùng mức ưu tiên thì trình tự tính toán có thể từ trái qua phải hay ngược lại được chỉ ra trong cột trình tự kết hợp. Ví dụ : * px=*( px) (Phải qua trái) 8/4*6=(8/4)*6 (Trái qua phải) By: Huy05dt2@gmail.com Nên dùng các dấu ngoặc tròn để viết biểu thức một cách chính xác. Câu 12 : Trình bày cấu trúc giải thuật của cấu trúc điều khiển IF . IF ELSE. Cho ví dụ minh họa.? Trả lời : * Cấu trúc lệnh if - Khái niệm: Lệnh if cho phép thực hiện lệnh khi biểu thức điều kiện của toán tử điều kiện if được thoả mãn. - Cấu trúc: if (<Biểu thức điều kiện>) { // Nội dung thoả mãn điều kiện } - Thuật toán - Cấu trúc lệnh if else - Khái niệm: Lệnh if … else cho phép thực hiện “ Nội dung thoả mãn điều kiện” khi biểu thức điều kiện của toán tử if được thoả mãn. Ngược lại, nếu biểu thức điều kiện không thoả mãn thì thực hiện “ Nội dung không thoả mãn điều kiện”. - Cấu trúc: if(<Biểu thức điều kiện>) { // Nội dung thoả mãn điều kiện } else { By: Huy05dt2@gmail.com T tử Nội dung - Ví dụ: Lập trình tìm giá trị cực đại của hai số a, b. #include<Regx52.h> unsigned char a,b,Max; void main() { Max=0; a = 4; b = 9; while(1) { if(a>b) Max=a; if(a<b) Max=b; }; } // Nội dung không thoả mãn điều kiện } - Thuật toán : Câu 13: Trình bày cấu trúc và giải thuật của cấc trúc điều khiển SWITCH và FOR cho ví dụ minh họa? Trả lời : - Cấu trúc toán tử SWITCH - Khái niệm: Là cấu trúc tạo nhiều nhánh đặc biệt. Nó căn cứ vào giá trị một biểu thức nguyên để chọn một trong nhiều cách nhảy. - Cấu trúc: switch ( <Biểu thức nguyên> ) { case kq1: { //khối lệnh 1 break; } case kq2: { // khối lệnh 2 break; } case kqk: { By: Huy05dt2@gmail.com Biểu thức Nội dung 1 Nội dung 2 VD: One: if (a>0) b=1; else b=0; Tow: if (a>0) a=10; else { a=5; b=6; } // khối lệnh k break; } default: { //khối lệnh k+1 break; } } - Thuật toán: -VD: cho biến a nhận giá trị từ 0 đến 3 Switch (a) { case 0: { p=a c=5 break; } case 1: { p=b c=2 break; } default : { p=c b=5 By: Huy05dt2@gmail.com BT 1 BT 2 BT n Nội dung 1 Nội dung 2 Nội dung n GT mặc định break; } } - Cấu trúc FOR - Khái niệm: Toán tử for dùng để xây dựng cấu trúc lặp. - Cấu trúc: for ( <Biểu thức 1>; <Biểu thức 2>; <Biểu thức 3>) { // Lệnh hoặc khối lệnh ; }; - Thuật toán: Câu 14 : Trình bày cấu trúc và giải thuật của cấu trúc điều khiển Do While và While. Cho ví dụ minh họa? Trả lời : * Cấu trúc while - Khái niệm: Cấu trúc while dùng để xây dựng chu trình lặp. - Cấu trúc: while ( <Biểu thức điều kiện> ) { //Lệnh hoặc khối lệnh By: Huy05dt2@gmail.com B T 2 Nội Dung X Lý 3 End Ví dụ: For (i=0; i<4 ; i++) { A [i]=0; }; } Ví dụ : do { y*=10; z =x/y; } while(x>0); *Câu lệnh do while - Khái niệm: do while dùng đẻ xây dựng chu chương trình lặp. - Cấu trúc: do { //Lệnh hoặc khối lệnh; } while ( <Biểu thức điều kiện> ); - Thuật toán : Câu 15: Trình bày khái niệm con trỏ , cấu trúc khai báo con trỏ , gán địa chỉ và truy xuất con trỏ. Cho ví dụ minh họa. Trải lời : *Khái niệm con trỏ: con trỏ là biến chứa địa chỉ của một biến khác. *Cấu trúc khai báo biến con trỏ: <kieu con tro>*<ten con tro> VD: int*p; //khai báo tên con trỏ p char * st; //khai báo biến con trỏ kiểu ký tự * Địa chỉ con trỏ - Con trỏ chứa địa chỉ của đối tượng nên nó có thể xâm nhập vào đối tượng gián tiếp qua con trỏ. Giả sử x là một biến kiểu int, và giả sử px là con trỏ được tạo ra theo một cách nào đó. By: Huy05dt2@gmail.com End B Thức Nội dung Ví dụ : do { B[i] = A[i]; i++; } while(x>=9); [...]... về c u tr c dữ liệu, c u tr c của c u tr c dữ liệu, phương pháp truy c p đến c c thành phần c a c u tr c dữ liệu Cho ví dụ minh họa ? Trả lời : * K /N kiểu c u tr c : vi c định nghĩa một kiểu c u tr c bao gồm vi c nêu ra tên c a kiểu c u tr c và c c thành phần c a nó theo mẫu sau: struct tên_kiểu _c u_tr c { //Khai báo c c thành phần c a c u tr c }; * C u tr c của c u tr c dữ liệu: struct ( ten c u... struct ( ten c u tr c đã định nghĩa) ; Ví dụ : struct date ngayden, ngaydi; *Để truy c p đến một thành phần c bản c a một c u tr c ta sử dụng một trong c c cách viết sau : tên _c u_tr c. tên_thành_phần tên _c u_tr c. tên _c u_tr c. tên_thành_phần tên _c u_tr c tên _c u_tr c. tên _c u_tr c. tên_thành_phần VD : Ta xét phép toán trên c c thành phần c a c u tr c nhom1, nhom2: C u lệnh : printf("%s",nhom1.ten);... pa là con trỏ float pm là con trỏ kiểu float [30] a là địa chỉ kiểu float [30] * C c phép toán trên con trỏ C 4 phép toán liên quan đến con trỏ và địa chỉ là : By: Huy05dt2@gmail.com Phép gán: chỉ th c hiện với c c con trỏ c ng kiểu Phép tăng giảm địa chỉ : Phép truy c p bộ nhớ Phép so sánh C u 19 : Trình c ch khai báo con trỏ hàm và mảng con trỏ hàm, t c dụng c a con trỏ hàm và đối c a con... xuất giá trị c a c phần tử hai chiều VD : int*p,a [2][2] p=a ; p tương ứng với a[0][0] C u 18 : Trình bày kiểu con trỏ và kiểu địa chỉ, c c phép toán trên con trỏ Cho ví dụ minh họa ? Trả lời : * Kiểu con trỏ và kiểu địa chỉ Con trỏ dùng để lưu địa chỉ Mỗi kiểu địa chỉ c n c kiểu con trỏ tương ứng Phép gán địa chỉ cho con trỏ chỉ c thể th c hiện đư c khi kiểu địa chỉ phù hợp với kiểu con trỏ Ví dụ... hàm Cho ví dụ minh họa ? Trả lời : * C ch khai báo con trỏ hàm và mảng con trỏ hàm: float (*f)(float),(*mf[50])(int); Để khai báo : f là con trỏ hàm kiểu float c đối là float mf là mảng con trỏ hàm kiểu float c đối kiểu int ( c 50 phần tử * T c dụng c a con trỏ hàm : dùng để chứa địa chỉ c a hàm Muốn vậy ta th c hiện phép gán tên hàm cho con trỏ hàm Để phép gán c ý nghĩa thì kiểu hàm và kiểu con... biên dịch chương trình và đưa ra thông báo lỗi VD : #if(name_table>max_table) (id_table>max_table) #error max_table C u 25 :Viêt chương trình giải phương trình ax+b=0, giá trị a và b cho biết trư c? Bài làm : By: Huy05dt2@gmail.com C u 26 :Viêt chương trình tìm UCLN c a 2 số x và y tả lại giá trị cho biến z ? Bài làm : #include int UCLN(int x,int y); void main() { int USC; USC=UCLN(2,6);... tương thích Sau phép gán, ta c thể dùng tên con trỏ hàm thay cho tên hàm VD: double (*g)(int, double), (*mg[30])(double, float); * Đối c a con trỏ hàm : cho phép thiết kế c c hàm mà tham số th c trong lời gọi tới nó lại là tên c a một hàm kh c Khi đó tham số hình th c tương ứng phải là một con trỏ hàm C u 20 : Trình khái niệm về đệ quy, phương pháp dùng đệ quy và c c bài toán dùng đệ quy Cho ví dụ... By: Huy05dt2@gmail.com VD : #if(a>0) b=5 ; c= -10 ; #endif * Chỉ thị tiền xử lý #if #else #endif : : #if() // nội dung đư c chỉnh lý #else // nội dung đư c chỉnh lý #endif VD: #if(a>0) b=5 ; c= -10 ; #else b=-3 ; c= 1 ; #endif C u 24 : Trình bày chỉ thị tiền xử lý #include, #error Cho ví dụ minh họa ? Trả lời : • chỉ thị tiền xử lý #include : #include>[đường_dẫn ]tên_tệp • chỉ thị tiền xử lý... tìm USCLN c a hai số nguyên dương a và b #include By: Huy05dt2@gmail.com int uscln(int a,int b ); /* Nguyên mẫu hàm*/ void main() { int m,n; printf("\n Nhap cac gia tri cua a va b :"); scanf("%d%d",&m,&n); printf("\n USCLN cua a=%d va b=%d la :%d", m, m, uscln(m, n)) } int uscln(int a,int b) { if (a==b) return a; else if (a>b)return uscln(a-b,b); else return uscln(a,b-a); } C u 21 : Trình. .. int UCLN(int x,int y) { if(x==y) return x; else { if(x>y) return UCLN(x-y,y); else return UCLN(x,y-x); } } C u 27 :Viêt chương trình tìm MAX c a 2 số x và y tả lại giá trị cho biến z ? Bài làm : #include int a[10]; b[10];i ;c; void main() { i=0; while(1) By: Huy05dt2@gmail.com { for(i=0;i . ĐỀ C ƠNG NGÔN NGỮ LẬP TRèNH C ( Cao Đẳng ) By: Huy05dt2@gmail.com C u 1: Trỡnh bày một số quy t c cần thiết khi viết chương trỡnh băng ngôn ngữ C? Cho VD minh họa? Trả lời: *C c Quy t c cần. kiểu c u tr c : vi c định nghĩa một kiểu c u tr c bao gồm vi c nêu ra tên c a kiểu c u tr c và c c thành phần c a nó theo mẫu sau: struct tên_kiểu _c u_tr c { //Khai báo c c thành phần c a c u. (a>b)return uscln(a-b,b); else return uscln(a,b-a); } C u 21 : Trình khái niệm về c u tr c dữ liệu, c u tr c của c u tr c dữ liệu, phương pháp truy c p đến c c thành phần c a c u tr c dữ liệu. Cho ví