Bài thực hành môn Kỹ thuật lập trình | Trường Đại học Bách Khoa Hà Nội
Thứ tự thực hiện các phép toán trong C: 1.1 Viết chương trình nhập các tham số tương ứng và tính giá trị các biểu thức sau :
int a,b,c,d; a=b=c++=d=10; in ra a,b,c,d; a=b=++c=d=10;
in ra a,b,c,d. Giữ nguyên đoạn code trên, sửa dòng khai báo thành int a,c,d,b; chạy chương trình và xem kết quả và đưa ra nhận xét
Preview text:
Experiment and Exercise Scenario CN CNTT
Autor : Vũ ũức Vượng
Course Title: Programming Technique Semester : 04 Product Code: IT3540 1/9
Experiment and Exercise Scenario CN CNTT Semester: 4
Course Title: Programming Technique Week: 5+6st Theme: Basics of C,C++ No. Lý thuyết Thực hành 1
Thứ tự thực hiện các phép
1.1 Viết chương trình nhập các tham số tương ứng và tính giá trị các biểu thức sau : toán trong C int a,b,c,d; a=b=c++=d=10; in ra a,b,c,d a=b=++c=d=10; in ra a,b,c,d
Giữ nguyên đoạn code trên, sửa dòng khai báo thành int a,c,d,b; chạy chương
trình và xem kết quả và đưa ra nhận xét
1.2 Viết chương trình nhập các tham số tương ứng và tính giá trị các biểu thức sau : Int a,b Nhập a b= a++ + 2 * a; in ra a,b b= ++a + 2 * a; in ra a,b b= (2*a)+ ++a; in ra a,b b= (2*a)+ a++; in ra a,b b= ++a + (2*a); in ra a,b b= a++ + (2*a); a=10;
printf(" \n a++,a = %d, %d",a++,a); a=10;
printf(" \n ++a,a = %d, %d",++a,a); a=10;
printf(" \n a,a++ = %d, %d",a,a++); 2/9
Experiment and Exercise Scenario CN CNTT a=10;
printf(" \n a,++a = %d, %d",a,++a);
Chạy chương trình trên TURBO C++, VC++ và GCC, xem kết quả và đưa ra nhận xét
về thứ tự thực hiện các phép toán, cùng cơ chế truyền tham số cho hàm của C 2 Array
2.1 Viết CT nhập vào 1 xâu ký tự va in ra số lần xuất hiện của mỗi ký tự trong xâu.
Nhập vào 2 ký tự rồi in ra xâu với ký tự thứ nhất ( nếu có) trong xâu được thay thế
bằng ký tự thứ 2.Trình bày giải pháp
2.2 Viết chương trình tính tổng 2 ma trận
2.3 Viết chương trình tính tích 2 ma trận 3 Pointer
3.1 Chép chương trình sau, chạy, xem kết quả rồi tìm và chỉnh sửa lỗi : #include #include void main(){ int a,b,c; int *p=&c; c = 3; /* divide c by itself */ a = c/*p; b = c /* set b to 3 */ ;
printf("a=%d, b=%d, c=%d\n", a,b,c); getch(); } 4 Functions
XD hàm tính căn bậc ba của 1 số thực, rồi nhập dãy các số thực x1, x2, ..., xn và tính tổng : Biết rằng : 3/9
Experiment and Exercise Scenario CN CNTT 5
Pointer và cấp phát bộ nhớ 4.1 Viết lại chương trình 2.2,2.3 dùng cấp phát bộ nhớ động ( sử dụng mảng 1 chiều, động và 2 chiều) Semester: 4
Course Title: Programming Technique Week: 7+8+ 9+10nd Theme: Advanced C,C++ No. Lý thuyết Thực hành 6 Overloading Operator
6.1 Xây dựng cấu trúc phân số , hàm tiện ích xác lập phân số ( setpPS(int,int), hàm tối giản phân số,
và đa năng hóa các toán tử +,-,*,/, ++,--
6.2 áp dụng cấu trúc phân số cung các hàm va toán tử trên, viết chương trình nhập các phân số
p1,p2,p3 và số nguyên a,b rồi tính và in ra giá trị các biểu thức sau : b= a++ + 2 * a; b= ++a + 2 * a; b= (2*a)+ ++a; b= (2*a)+ a++; b= ++a + (2*a); p2= p1++ + (2*p1); p2= p1++ + 2 * p1; p2= ++p1 + 2 * p1; p2= (2*p1)+ ++p1; 4/9
Experiment and Exercise Scenario CN CNTT p2= (2*p1)+ p1++; p2= ++p1 + (2*p1); p2= p1++ + (2*p1);
Chạy chương trình trên TURBO C++, xem kết quả và đưa ra nhận xét cách thực hiện phép toán ++,
-- của trình dịch, và so sánh với cách thức thức hiện của toán tử ++,-- do ta định nghĩa ! ( De de
dang so sanh ket qua, hay nhap a=1 va p1=(1/1) . Sv can lien he voi bang thu tu thuc hien cac phep
toan, va dua ra nhan xet ve cach thuc cai dat bieu thuc cua trinh dich tuong ung !!!)
(Liên hệ với bài 1.2 !!!)
6.3 Xay dungcau truc Time va da nang hoa cac toan tu can thiet 7 Array + overloading operator
7.1 xây dựng cấu trúc matrix với các trường kiểu nguyên R và C để xác định số hàng và số cột của
ma trận, trường float ** data để cấp phát bộ nhớ động dùng mảng hai chiều. Và dịnh nghĩa các phép
toán +, * để cộng và nhân 2 ma trận
** sau khi cài đặt xong các phép toán, hãy khai báo các matran a,b,c,d tương ứng và thực hiện biểu
thức a=b+c; in ra a, d=b*c; in ra d;
Sau do cho a=b+c; và d=b*c; 2000 lần ( lặp); rồi in kết quả a,d và so sánh với các kết quả ở trên !!
( về nguyên tắc thì a và d phải không đổi, vì b,c không đổi thì chạy bao nhiêu lần, kết quả vẫn không
thay đổi, nhưng thực tế ???, hãy tìm hiểu nguyên nhân tại sao !!! ) 8 Array and Pointer
8.1 Chép chương trình sau, chạy, xem kết quả và giải thích những điểm bất thường trong chương trình : #include #include #include void main(){ int i,m[5]; char x1[10],x2[10]; char *s1,*s2;
for (i=1; i<7;i++) i[m] =i*2;
for (i=1;i<7;i++) printf(“\n m[%d] = %d”,i,m[i]); 5/9
Experiment and Exercise Scenario CN CNTT s1= new char[10]; s2= new char[10]; strcpy(s2,” xau 2”);
strcpy(s1,”Dai hoc bach khoa ha noi”); printf(“\n s1= %s”,s1); printf(“\n s2= %s”,s2); strcpy(x2,” xau x2”);
strcpy(x1,”Dai hoc bach khoa ha noi”); printf(“\n x1= %s”,x1); printf(“\n x2= %s”,x2); getch(); }
( Luu y ve pham vi cua mang, cach su dung i[m]=…, giai thich tai sao ket qua doi voi mang m van
dung va chi ra duoc nguy co tiem an. So sanh s1,s2 voi x1,x2, giai thich co che thuc hien !) 9 Recursive – De qui
9.1 Viết hàm đệ qui tính tổng các chữ số chẵn( lẻ) của số nguyê n dương n
9.2 Viết Hàm đệ qui đổi 1 số nguyên dạng thập phân sang 1 cơ số bất kỳ (2,8,16)
9.3Tính S(n) = s qrt(1 + s qrt(2 + sqrt (3 + ...s qrt (n-1 + sqrt (n)))))
9.4 Tính S(n) = 1/2 + 3/4 + 5/6 + 7/8 +9/10 + .....
9.5* Cho hai dãy số X và Y với :
X ={ 1, 4, 12,56, 880, .... }
Y ={ 1, 2, 16,384,43008, ….}
Hãy viết CT đệ qui tính tổng :
S(n) = X(1)+X(2) + ……X(n) +Y(1)+Y(2)+ ….. + Y(n) 10
Các bài tập trong slide chương IV, phần đệ qui : Luu y : 1 so giai thuat cai dat trong slide tren lop co
nhung sai sot, khi thuc hien cac bai tap nay, sv can chi ra nhung diem sai sot trong cacgiai thuat do ! 11 Programming Style
11.1 Ap dung cac ky thuat phan tich, thiet ke va cai dat cung phong cach lap trinh trong vi du
“Text formatting”. Tien hanh phan tich thiet ke va cai dat bai toan sau :
Cho mot xau ky tu gom day cac so co 3 chu so co dang nhu sau :
“101,102,103,104,201,202,205,206,207,208,209,210,212,215,301,302,303,304,305,401,403… .” ( do dai tuy y) 6/9
Experiment and Exercise Scenario CN CNTT
Hay to chuc lai de in ra ket qua tren nhieu dong, moi dong khong qua 30 ky tu. Noi dung moi dong co dang nhu sau :
101-104,201,202,205-210,212,215 301-305,401,403 … .
(tuc la neu day cac so lien tuc gom nhieu hon 3 so thi dua ve dang somin-somax)
Tu nay ve sau : cac bai tap (ke ca bai thi-kiem tra) phai tien hanh theo trinh tu : +Dua ra bai toan
+Phan tich cac yeu cau
+Thiet ke so bo (pseudocode)
+Cai dat ( dua ra Ct nguon cuoi cung, cac buoc phan tich,trien khai chi tiet step by
step co the bo qua) – Dong thoi phai ap dung moi ky thuat, phong cach nhu da hoc trong chuong III
• 11.2 Mở rộng BT trên : Bài toán tính tiền phòng ks :ăể tính tiền phòng cho 1 đoàn
khách tại khách sạn, từ thực tế sử dụng phòng của khách người ta đã trích rút từ CSDL
ra các thông tin cần thiết và lưu vào mảng với các thông tin như sau : 7/9
Experiment and Exercise Scenario CN CNTT Thời gian Số người Số phòng Giá tiền Số ngày 01/01/2007 – 05/01/2007 1 105 45 4 01/01/2007 – 05/01/2007 1 106 45 4 01/01/2007 – 05/01/2007 1 107 45 4 01/01/2007 – 05/01/2007 1 109 45 4 01/01/2007 – 05/01/2007 2 101 45 4 01/01/2007 – 05/01/2007 2 302 45 4 01/01/2007 – 05/01/2007 2 205 55 4 01/01/2007 – 05/01/2007 2 206 55 4 01/01/2007 – 05/01/2007 2 207 55 4 01/01/2007 – 05/01/2007 2 208 55 4 07/01/2007 – 09/01/2007 1 104 45 2 07/01/2007 – 09/01/2007 2 304 55 2 07/01/2007 – 10/01/2007 1 105 45 3 07/01/2007 – 10/01/2007 1 106 45 3 07/01/2007 – 10/01/2007 1 107 45 3 07/01/2007 – 10/01/2007 2 305 55 3 07/01/2007 – 10/01/2007 2 306 55 3 07/01/2007 – 10/01/2007 2 307 55 3 07/01/2007 – 10/01/2007 2 308 55 3 07/01/2007 – 10/01/2007 2 401 55 3 09/01/2007 – 10/01/2007 1 201 45 1 09/01/2007 – 10/01/2007 2 406 55 1
Từ kết quả dạng như trên, ngươi ta phải đưa ra kết quả dưới dạng sau : Thời gian Diễn giải Thành tiền 01/01/2007 – 05/01/2007
105-107,109,(1K),101,102,(2K) : 45 usd x 4 D 900 x 6 R
205-208,(2K) : 55 usd x 4 D x 4 R 880 07/01/2007 – 09/01/2207 104,(1K) : 45 usd x 2 D x 1 R 90 304 (2K) : 55 usd x 2 D x 1 R 110 07/01/2007 – 10/01/2007
105-107,(1K) 45 usd x 3 D x 3 R 405
305-308,401,(2K) 55 usd x 3 D x 5 R 825 09/01/2007 – 10/01/2007 201,(1K) : 45 usd x 1 D x 1 R 45 8/9
Experiment and Exercise Scenario CN CNTT 406,(2K) : 55 usd x 1 D x 1 R 55 Tong cong 3310
(Ghi chú : K = số lượng Khách mỗi phòng, D = số ngày, R = Số Phòng)
Hãy viết chương trình thực hiện việc trên ( mảng 1 được khởi tạo khi khai báo,
viết ct để tạo mảng 2 ) 9/9