4
Đồ Án Lập Trình Hệ Thống Bài Tập 2 (C/C++) Hạn Cuối: 23h55, 10/07/2011 1. Viết 1 chương trình C/C++ để thực hiện các công việc sau: -Nhập mảng 1 chiều unsigned char *a, dùng hàm random(256).Dùng ngắt để nhập n. Hãy tạo mảng 1 chiều int* x, mà x[i] cũng chính là a[i], nhưng có giá trị được tính trong hệ nhị phân có các chữ số đảo lại. vd: a[i]=140=10001100 =>x[i]=00110001=49 -Hãy chèn mảng a[] vào mảng x[] sao cho mảng x[] cũng có thứ tự giảm dần. Dùng ngắt để in ra mảng vừa chèn 2. Hãy viết 1 chương trình C/C++ để xử lý các công việc sau đây: Nhập 1 số n kiểu long( dùng ngắt 0X21), rồi đổi n ra xâu ký tự thập phân TP char *s . Tạo mảng 1 chiều int *x; mà x[i] cũng chính là phần tử s[i] của xâu char *s, nhưng có giá trị được tính trong hệ thập lục phân TLP là ½ byte cao bằng giá trị đảo bit của ½ byte thấp, còn 1//2 byte thấp bằng ½ byte cao( dùng phép toán logic).vd: s[i]=’5’=0x35=> s[i]=10100011 =0xA3 3. Viết 1 chương trình C/C++ thực hiện các công việc sau: -Dùng ngắt để nhập ma trận int *a với (6<=n <=10 ). . Tính k là tổng các phần tử của mảng có 2 bit tận cùng bằng 1. -Tạo mảng 1 chiều int *x, mà x[i] cũng chính là phần tử s[i] của xâu s, nhưng tính x[i] bằng cách đảo ½ byte cao với ½ byte thấp s[i]. 4. Viết 1 chương trình C/C++, thực hiện các công việc sau: -Cho trước 1 mảng int *a={6,6,3,3,1,1,3,6,1,9,9,9,0,0,7,4,8,9,5,5}; hãy xỏa các phần tử giống nhau chỉ để lại 1 phần tử, rồi đổi mảng a[] ra số nguyên long n=631907485; -Chuyển các phần tử chẵn mảng a[] sang phải, các phần tử lẻ sang trái, rồi tạo xâu char *st, mà s[i] là chữ số thập phân thứ i mảng a[]. -Hãy xóa các ký tự thập phân nào của xâu st[] <=’4’.Dùng hàm ngắt để in xâu st. 5. Viết 1 chương trình C/C++, thực hiện các công việc sau: Tạo 1 ma trận vuông int *a có dạng dích dắc như sau vd: với n=4 1 2 3 4 8 7 6 5 9 10 11 12

Đồ Án Lập Trình Hệ Thống

Embed Size (px)

DESCRIPTION

Đồ Án Lập Trình Hệ Thống

Citation preview

Page 1: Đồ Án Lập Trình Hệ Thống

Đồ Án Lập Trình Hệ ThốngBài Tập 2 (C/C++)

Hạn Cuối: 23h55, 10/07/2011

1. Viết 1 chương trình C/C++ để thực hiện các công việc sau:-Nhập mảng 1 chiều unsigned char *a, dùng hàm random(256).Dùng ngắt để nhập n. Hãy tạo mảng 1 chiều int* x, mà x[i] cũng chính là a[i], nhưng có giá trị được tính trong hệ nhị phân có các chữ số đảo lại. vd: a[i]=140=10001100 =>x[i]=00110001=49-Hãy chèn mảng a[] vào mảng x[] sao cho mảng x[] cũng có thứ tự giảm dần. Dùng ngắt để in ra mảng vừa chèn

2. Hãy viết 1 chương trình C/C++ để xử lý các công việc sau đây:Nhập 1 số n kiểu long( dùng ngắt 0X21), rồi đổi n ra xâu ký tự thập phân TP char *s .Tạo mảng 1 chiều int *x; mà x[i] cũng chính là phần tử s[i] của xâu char *s, nhưng có giá trị được tính trong hệ thập lục phân TLP là ½ byte cao bằng giá trị đảo bit của ½ byte thấp, còn 1//2 byte thấp bằng ½ byte cao( dùng phép toán logic).vd: s[i]=’5’=0x35=> s[i]=10100011 =0xA3

3. Viết 1 chương trình C/C++ thực hiện các công việc sau: -Dùng ngắt để nhập ma trận int *a với (6<=n <=10 ). . Tính k là tổng các phần tử của mảng có 2 bit tận cùng bằng 1. -Tạo mảng 1 chiều int *x, mà x[i] cũng chính là phần tử s[i] của xâu s, nhưng tính x[i] bằng cách đảo ½ byte cao với ½ byte thấp s[i].

4. Viết 1 chương trình C/C++, thực hiện các công việc sau:-Cho trước 1 mảng int *a={6,6,3,3,1,1,3,6,1,9,9,9,0,0,7,4,8,9,5,5}; hãy xỏa các phần tử giống nhau chỉ để lại 1 phần tử, rồi đổi mảng a[] ra số nguyên long n=631907485;-Chuyển các phần tử chẵn mảng a[] sang phải, các phần tử lẻ sang trái, rồi tạo xâu char *st, mà s[i] là chữ số thập phân thứ i mảng a[].-Hãy xóa các ký tự thập phân nào của xâu st[] <=’4’.Dùng hàm ngắt để in xâu st.

5. Viết 1 chương trình C/C++, thực hiện các công việc sau:Tạo 1 ma trận vuông int *a có dạng dích dắc như sau vd: với n=4 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 - Tìm mảng 1 chiều x[n], mà x[i] là phần tử “YÊN_NGỰA” của hàng i đó là phần tử lớn nhất hàng i đồng thời là phần tử nhỏ nhất cột j, cột j là cột chứa nó.Nếu hàng i không có phần tử ”YÊN_NGỰA”, thì x[i] là tổng các phần tử nào của cột i có byte cao có số bit 1 là số chẵn,.- Viêt hàm in số bát phân, dùng ngắt để in mảng x[n]

6. Hãy viết 1 chương trình C/C++ xử lý các công việc sau đây:Hãy đọc tệp văn bản ”M1CINP.TXT” mà dòng đầu tiên ghi n phần tử mảng 1 chiều int x[n], tiếp theo là n dòng các phần tử của mảng.(khi ghi tệp dùng hàm random(1000) Tính s là tổng các phần tử nào của mảng x[n] có byte cao> byte thấp(dùng phép toán logic và phép dịch). Dùng ngắt viết 1 hàm in số thập lục phân để in mảng và tổng s.

7. Viết 1 chương trình, C thực hiện các công việc sau: Hãy đọc tệp văn bản ”MATRAN.TXT” mà dòng đầu tiên ghi n là số hàng/cột của 1 ma trận vuông , tiếp theo là n*n dòng lưu n*n phần tử ma trận int*a với (5<=n <=12).Hãy taọ mảng 1 chiều int *x mà x[i] là tổng các tích của cột I với hàng j, hàng j úng với phần tử lớn nhất đầu tiên trên cột i ma trận a[n][n]. Tính s là tổng các phần tử x[i] nào có byte thấp, mà ½ byte thấp, có giá trị bằng giá trị đảo bit của ½ byte cao.Viết hàm in số thập phân( dùng ngắt), để in mảng 1 chiều.

Page 2: Đồ Án Lập Trình Hệ Thống

8. Viết 1 chương trình C/C++ để thực hiện các công việc sau: Tạo 1 ma trận vuông xoắn int*a (n=8) như sau: 1 2 3 4 5

16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9Tạo xâu ký tự thập lục phân char *s, mà s[i], là ký tự chữ số thập lục phân tận cùng bên trái của phần tử cột giữa ma trận a[n][n].Rồi đổi xâu s[] ra số thập phân t. Kiểm tra t có phải là số đối xứng (số đọc giống nhâu từ hai đầu, ví dụ 131, 4554 là số đối xứng). Dùng ngắt để in ra t và kết quả kiểm tra t có phải là số đối xứng

9. Cho k số nguyên dương: a1, a2, a3, … ak (0<k<50) và một số nguyên dương N.Điền phép toán cộng (+) hoặc trừ (-) thích hợp vào dấu (?) cho biểu thức sau (nếu có lời giải): a1 ? a2 ? a3 ? a4 ? … ? ak = N . Dùng Ngắt để nhập và n. In các kết quả đúng ra màn hình

10. Tìm dãy nhị phân dài nhất sao cho trên dãy này không có hai bộ k bất kỳ trùng nhau. Bộ klà dãy con có k số liên tiếp nhau trên dãy tìm được. Dùng ngắt để nhập vào kVí dụ: k = 3Kết quả: 000 101 110 0

11. Viết chương trình tạo tập tin nhị phân chứa 10000 số nguyên bất kỳ (dùng hàm random) ghi vào file SONGUYEN.INP. Mỗi dòng 10 số, sau đó viết chương trình đọc file SONGUYEN.INP,sắp xếp theo thứ tự tăng dần và lưu kết quả vào file SONGUYEN.OUT. Dùng ngắt để in ra kết quả có trong file SONGUYEN.OUT lên màn hình

12. Cho mảng các số nguyên , hãy sắp xếp mảng theo thứ tự tăng dần.Dữ liệu vào : tập tin văn bản ARRAY.INP gồm 2 dòng- Dòng 1 chứa số nguyên n ( n < = 100 ).- Dòng 2 chứa n số nguyên.Kết quả : Đưa ra tập tin văn bản ARRAY.OUT gồm hai dòng- Dòng 1 chứa n phần tử của mảng các số nguyên.- Dòng 2 chứa n số nguyên được xếp tăng dần.Dùng ngắt để in ra dãy số nguyên đã sắp xếp

13. Viết chương trình tạo một file chứa 10000 số nguyên ngẫu nhiên (dùng hàm random) đôi một khác nhau trong phạm vi từ 1 đến 32767 và đặt tên là “SONGUYEN.INP”. Dùng ngắt để tạo ra file SONGUYEN.INP rỗng, sau đó dùng C/C++ làm các chức năng còn lại

14. Viết chương trình tạo file văn bản có tên là “MATRIX.INP” có cấu trúc như sau:-Dòng đầu ghi hai số m, n.-Trong m dòng tiếp theo mỗi dòng ghi n số và các số các nhau một khoảng cách.Hãy kiểm tra xem trong file đó có bao nhiêu số nguyên tố.Kết quả cần ghi vào file “MATRIX.OUT” có nội dung là một số nguyên đó là số lượngcác số nguyên tố trong file “MATRIX.INP”.Dùng ngắt in ra nội dung trong file MATRIX.OUT

15. Hãy xây dựng một dãy gồm N số có giá trị từ 1 đến K cho trước, sao cho không có hai dãycon liên tiếp đứng kề nhau. Dùng ngắt để nhập vào n và kVí dụ: N = 6K = 32Kết quả: 121312

Page 3: Đồ Án Lập Trình Hệ Thống

16. Viết hàm cắt chuỗi họ tên thành chuỗi họ lót và chuỗi tên. Dùng ngắt để in ra chuỗi kết quảVí dụ: chuỗi họ tên là:”Nguyễn Văn A” cắt ra 2 chuỗi là chuỗi họ lót:”NguyễnVăn”,chuỗi tên là:”A”

17. Viết 1 chương trình xoá một từ nào đó trong chuỗi.Ví dụ: Chuỗi ban đầu: “Cau truc du lieu va giai thuat”Nhập: “va”, và kết quả xuất ra:”Cau truc du lieu giai thuat”Dùng ngắt để nhập vào chuổi cần xóa

18. Viết 1 chương trình C thực hiện các công việc sau: -Hãy đọc tệp nhị phân ”M1CINP.BIN” mà mẫu tin đầu tiên ghi n phần tử mảng 1 chiều int x[n], tiếp theo là n mẫu tin các phần tử của mảng.(khi ghi tệp dùng hàm random(1000) Tính s là tổng các phần tử nào của mảng x[n] có byte cao là 1 chữ số thập lục phân. -Viết 1 hàm in số nhị phân( dùng ngắt) để in s ở câu 1.

19. Viết chương trình tạo một file chứa các số nguyên có tên SONGUYEN.INP. Sau đó đọcfile SONGUYEN.INP và ghi các số chẵn vào file SOCHAN.OUT và những số lẻ vào fileSOLE.OUT. Dùng ngắt để tạo ra file số nguyên SONGUYEN.INP

20. Cho mảng các số nguyên, tìm phần tử lớn nhất của mảng.Dữ liệu vào: tập tin văn bản ARRAY.INP gồm hai dòng:- Dòng 1 chứa số nguyên n ( n < = 100 ).- Dòng 2 chứa n số nguyên.Kết quả: Đưa ra tập tin văn bản ARRAY.OUT gồm 1 dòng ghi 2 giá trị x, y trong đó x làgiá trị lớn nhất, y là vị trí của x trong mảng.Dùng ngắt để in ra giá trị lớn nhất và nhỏ nhất của trong file ARRAY.OUT