Tuyển bài tập C

Biên soạn: Lê Văn Huỳnh

 

 

 

STT

Đầu bài

1.

Cho đoạn chương trình sau:

         #include <stdio.h>

         #include <math.h>

         main()

         {       int i = 4, j = 21, k, b, y;

                 float x = 94.55;

         Hãy xác định lần l­­ượt giá trị các phép gán sau:

 

         a) k = i*j;

         b) y = x + i;

         c) y = j+j;

         d) x = i;

         e) i = i+j;

         f) j = j--;

         g) B = (i > j) && (j = -j);

         h) B = (i < j) && (j == j);

         i) B = i-5;

         j) k = i++;

         k) k = --i;

         l) i += j;

Lời giải

2.

Lập trình nhập các cạnh a và b của hình chữ nhật, tính diện tích và chu vi của hình chữ nhật đó. 

Lời giải

3.

Cho 4 số a, b, c, d đọc từ bàn phím. Xác định Max là cực đại và Min là cực tiểu của 4 số đó.

Lời giải

4.

 Giải và biện luận hệ hai phương trình tuyến tính  hai ẩn với các hệ số a, b, c, d, m, n nhập từ bàn phím.

    image004

 

Lời giải

5.

 Viết chương trình xây dựng bảng cửu chương và in lên màn hình.

Lời giải   Giải bằng Pascal

6.

 Lập trình tính giai thừa của số N.

Lời giải

7.

Lập chương trình in lên màn hình các số từ 1 đến 6 thành hình sau:

 1

 12

 123

 1234

 12345

 123456

 

 123456

 12345

 1234

 123

 12

 1

 

1

121

12321

1234321

123454321

12345654321

 

Lời giải    Giải bằng Pascal

8.

Viết chương trình in lên màn hình các số từ 0 đến 9 thành hình sau: 

1

232

34543

4567654

567898765

67890109876

7890123210987

890123454321098

90123456765432109

0123456789876543210

Lời giải   Giải bằng Pascal

9.

Viết chương trình tính gần đúng y = ex, biết hàm  này có thể được triển khai dưới dạng chuỗi như sau:

ex =  1 + x/1! + x2/2! + ... + xi/i! + ...

Lời giải Giải bằng Pascal

10.

Viết chương trình tính hàm cos(x) và sin(x) theo chuỗi Taylor: 

         cos(x) = 1 - x2/2! + x4/4! - ... + (-1)i.x2i/(2i)! + ...

         sin(x) = x - x3/3!  + x5/5! ... + (-1)i.x2i+1/(2i+1)! + ..

 

Lời giải

11.

Viết chương trình tìm tất cả các số nguyên trong khoảng 1000 đến  9999 thoả mãn hệ thức sau:

       abcd = 1000a+100b+10c+d = a4+b4+c4+d4

 

Lời giải Giải bằng Pascal

12.

Lập trình tính  y = ax + by + cz với a, b, c và x, y, z là các số thực  nhập từ bàn phím.

 

Lời giải

13.

Lập trình tìm các cặp số "thân thiện" trong khoảng từ 1  đến 1000. Các cặp số thân thiện là các cặp số  trong đó tổng các ­ước của số này bằng số kia và ng­ược lại

 

Lời giải   Giải bằng Pascal

14.

Lập trình tính image006 với a và x nhập từ bàn phím. 

 

Lời giải

15.

Lập trình xây dựng bảng tra hàm sin(x) và cos(x) với các giá trị  của x từ 0 đến 900, thay đổi theo b­­ước 5o (0, 5, 10, 15, ..., 90). 

 

Lời giải

16.

Có 3 loại giấy bạc 5000đ, 2000đ, 1000đ. Có bao nhiêu tổ hợp 3  loại giấy bạc trên để có 200000 đ sao cho tổng số tờ giấy bạc không quá 50 tờ, trong đó mỗi loại giấy bạc phải có ít nhất 1 tờ? 

 

Lời giải    Giải bằng Pascal

17.

Lập trình in bảng mã ASCII lên màn hình. Chú ý: In cả các ký tự bình thường không in được. 

 

Lời giải

18.

Viết hàm tính an với a là số thực và n nguyên dương.

 

Lời giải

19.

Lập trình tạo bảng chọn để nhập dữ liệu và tính diện tích các hình vuông, tròn, chữ nhật, hình thang, tam giác theo nhu cầu.

 

Lời giải

20.

Lập hàm để tính giai thừa của một số tự nhiên. áp dụng hàm này để  tính biểu thức:

   image008

Lời giải   Giải bằng Pascal

21.

Tạo dãy 47 số Fibonacci. Dãy Fibonacci là dãy số có tính chất sau: 

     F1 = F2 = 1

     Fn = Fn-1 + Fn-2 vơi n >= 3 

 

Lời giải                 Giải bằng Pascal

22.

Viết chương trình đọc vào từ bàn phím và đảo ng­­ược một số nguyên, ví dụ 12345 thành 54321. 

 

Lời giải

23.

Cho hàm số 

         f(x,y) = |a-b|(a3 + b3)

     trong đó

         a = ln(x3 + sin2(x) + |tg(x)| + 5) 

         b = y - x, 

     Viết chương trình nhập các cặp giá trị x, y và tính hàm f(x,y).

 

 

Lời giải

24.

Bài toán ngư­­ời đưa thư­: Piter là ngư­ời đ­ưa thư­. Một hôm, để phá vỡ  sự nhàm chán của công việc th­­ường ngày, anh ta bắt đầu đi mở tất  cả các hộp thư­ có số chẵn. Sau đó bắt đầu từ hộp thư­ đánh số 3 anh ta đi tìm các hộp thư­ là bội số của 3, đóng lại nếu nó đang mở và mở ra nếu nó đang đóng. Tiếp tục như­ thế cho các hộp thư­ có số thứ tự chia hết cho 4, cho 5 v.v... Cuối cùng, anh ta vô cùng ngạc nhiên trư­ớc kết quả công việc của mình.

 

Điều gì đã xảy ra vậy?  Hãy lập trình mô phỏng công việc của Piter, để xem kết quả cuối cùng là gì.

 

Lời giải   Giải bằng Pascal

25.

Lập trình tính dãy các số nguyên tố trong phạm vi 1 đến 10000

 

Lời giải

26.

Số gà là 5 con, số bò là 10 con. Tổng số chân là bao nhiêu?

 

Lời giải

27.

Cho chiều dài và chiều rộng hình chữ nhật là 50 và 10. Tính diện  tích, chu vi và in kết quả lên màn hình. 

 

Lời giải

28.

Nhập các cạnh cuả khối hộp chữ nhật từ bàn phím. Tính thể tích, diện tích xung quanh, diện tích toàn phần và in kết quả lên màn hình. 

 

Lời giải

29.

Nhập họ tên, số báo danh, điểm thi 3 môn Toán, Lý, Hoá. Nếu tổng  điểm 3 môn lớn hơn 19, không có môn nào dưới 5 thì thông báo trúng  tuyển. 

 

Lời giải

30.

Viết chương trình chứng minh sự chuyển đổi ngầm định từ một kiểu dữ liệu có kích th­ước lớn sang kiểu dữ liệu có kích th­ước nhỏ sẽ gây mất mát dữ liệu. 

 

Lời giải

31.

Cho một mảng số thực gồm n phần tử. Hãy sắp xếp mảng theo thứ tự tăng dần.

 

Lời giải

32.

Trong bài 31, hàm SapXep cần dùng hai vòng lặp lồng vào nhau. Viết lại chương trình đó với hàm SapXep chỉ có một vòng lặp.

 

Lời giải

33.

Hiển thị một xâu ký tự theo hàng ngang, hàng dọc và bậc thang (mỗi từ một dòng). Khi hiển thị theo hàng ngang thì in từng ký tự từ trái qua phải và lần ưl­ợt xoá từng ký tự đã in từ phải qua trái. 

 

Lời giải

34.

Lập trình cấp phát một mảng hai chiều A với các phần tử là số thực trong vùng Heap xa, hai mảng một chiều X, B với các phần tử là số thực trong vùng Heap gần.

Cho các phần tử của mảng A và mảng X các giá trị ngẫu nhiên. Tính B = AX và in cả 3 mảng lên màn hình

Lời giải

35.

Viết chương trình sử dụng vòng lặp for để nhập các ký tự từ bàn phím cho đến khi nào nhận  đư­ợc chữ ‘A’.

Lời giải

36.

Viết chương trình cho phép nhập một số nguyên trong khoảng từ 1 đến 3 và ứng với các số đã nhập vào để tính đạo hàm của các hàm  số y = x2, y = x3, y = x4. Việc tính các đạo hàm được thực hiện bằng một lời gọi tới một phần tử mảng của hàm lấy mục chọn làm chỉ số. Viết 3 hàm thành phần của mảng để tính đạo hàm cho từng trường hợp.

Lời giải

37.

 Lập trình in lên màn hình các số từ 0 đến 9 dưới dạng sau đây:

Lời giải

38.

Nhập 4 số nguyên a, b, c, d từ bàn phím. Tìm và in ra số lớn nhất và số nhỏ nhất trong 4 số đó.

Lời giải

39.

Giải và biện luận hệ hai phương trình tuyến tính hai ẩn với các hệ số a, b, c, d, m, n cho từ bàn phím.

Lời giải

40.

Lập trình tính giai thừa của các số từ 1 đến n với n nhập từ bàn phím.  n có thể nằm trong phạm vi từ 1 đến 13.

Lời giải

41.

Lập trình in lên màn hình các dấu ‘*’ thành các hình sau đây:

Þ

ÞÞ

ÞÞÞ

ÞÞÞÞ

ÞÞÞÞÞ

ÞÞÞÞÞÞ

 

ÞÞÞÞÞÞ

ÞÞÞÞÞ

ÞÞÞÞ

ÞÞÞ

ÞÞ

Þ

à

ààà

ààààà

ààààààà

ààààààààà

ààààààààààà

 

Lời giải

42.

Chị Mai đi chợ mua thức ăn. Chị phải trả 60 đồng tiền thức ăn. Có 3 loại tiền mệnh giá 5 đồng, 2 đồng, 1 đồng. Hỏi chị Mai có bao nhiêu phương án trả tiền.

Lời giải

43.

Viết chương trình đọc tệp AUTOEXEC.BAT trên thư­ mục gốc của ổ C: và in lên màn hình. Sau đó đọc màn hình và ghi vào bộ nhớ, xoá sạch màn hình và ghi lại nội dung cửa sổ trong bộ nhớ vào vùng cửa sổ nhỏ hơn trên màn hình. (Vùng cửa sổ mặc định ban đầu là (1, 1, 80, 25), vùng cửa sổ nhỏ hơn có toạ độ là (5, 5, 50, 20)).

Lời giải

44.

Vòng lặp while ... do khác với vòng lặp do ... while ở điểm nào? 

Lời giải

45.

Ghép hai xâu ký tự thành xâu mới

 

Lời giải

46.

Đếm số ký tự 'A' va 'N' trong xâu cho trước

 

Lời giải

47.

Xác định hiệu độ dài giữa hai xâu

Lời giải

48.

Viết chương trình nhập một xâu ký tự bất kỳ và in kết quả. Các ký tự khi nhập vào có thể là chữ in hay chữ thường nhưng phải được chuyển đổi ngay thành chữ in.

Lời giải

49.

Viết chương trình mô tả vùng nhớ màn hình như­­ một vùng dữ liệu kiểu cấu trúc gồm 3 thành phần: Ký tự kiểu char, màu chữ 4 bít, màu nền 3 bít và một bít nhấp nháy. Ghi vào tất cả các ô của màn hình các ký tự ngẫu nhiên với màu chữ và màu nền ngẫu nhiên. 

Lời giải

50.

Giải phương trình bậc hai 

Lời giải

51.

 Viết chương trình nhập Họ tên, ngày, tháng, năm sinh, điểm 3 môn Toán, Lý, Hoá của  một học sinh, tính điểm  trung bình 3 môn và in kết quả lên màn hình

 

Lời giải

52.

Viết chương trình mô phỏng cách làm việc của lệnh COPY CON của DOS:  Khi chạy, chương trình tự mở một tệp có tên là FileCopy.CPP trên đĩa và ghi lại tất cả những gì được gõ lên bàn phím sau đó. Khi nào phím CTRL-Z hoặc F6 được nhấn thì tệp được l­­ưu lại và  chương trình kết thúc.         

 

Lời giải

53.

Viết chương trình tạo trên đĩa một tệp có tên là JUNK.JNK, ghi vào tệp đó chữ junk, sau đó dùng lệnh kiểm tra xem tệp đó có thực sự tồn tại trên đĩa hay không. Nếu có thì dùng lệnh để xoá nó đi.                   

Lời giải

54.

Lập trình tính đa thức cấp n, biết n và mảng các hệ số a 

        y = anxn + an-1xn-1 + .... +a0

Lời giải

55.

Cho một dãy số, xác định cực đại và cực tiểu.

Lời giải

56.

Tính giá trị trung bình và độ lệch tiêu chuẩn của một đại lượng ngẫu nhiên theo công thức

image019

image021

                           

 

trong đó x1, ..., x­­­n là dãy các giá trị quan sát.

Lời giải

57.

Nhân ma trận A cấp mxn với véc tơ X cấp n. 

Lời giải

58.

*Giải hệ n phương trình tuyến tính n ẩn AX = B, trong đó A là ma  trận cấp nxn, B và X là các véc tơ cấp n.

Lời giải

59.

*Chuyển vị một ma trận chữ nhật A cho trước. 

Lời giải

60.

*Tìm nghịch đảo của ma trận vuông bằng phương pháp Gauss-Jordan. 

Lời giải

61.

*Tính tích phân của hàm f(x) =  sin(x) + cos(x)  trên đoạn [a,b] bằng phương pháp Simson.

Lời giải

62.

Cho các hàm f(x) = e-x.sin(x) và g(x) = x.cos(x) trên đoạn [a,b]. Xác định hàm h(x) có giá trị bằng 2g(x) nếu g(x) > 0, và bằng (f(x))2  nếu g(x) < 0.

Lời giải

63.

Giải phương trình trùng phương 

     ax4 + bx2 + c = 0

Lời giải

64.

*Tìm toạ độ giao điểm hai đường thẳng AB và CD khi biết toạ độ các điểm A, B, C, D. 

Lời giải

65.

Viết các hàm sau đây bằng phương pháp đệ qui 

     float f(float x,   int n)  để tính luỹ thừa  nguyên dương bậc n  của x  (xn); 

     long unsigned GT(int n) để tính giai thừa của n (n!) 

     long unsigned p(int n) để tính tổng lập phương của các số từ 1 đến  n (13 + 23 + ... + n3). 

     int USCLN(int a, int b) để tính ­­ước số chung lớn nhất của a và b.

Lời giải

66.

Cho một hàm số y = sin(x).(ax2 + bx + c)/(a+b), các giá trị a, b, c cho từ bàn phím. Nhập d và e. Tính giá trị lớn nhất và nhỏ nhất của hàm  trên đoạn [d, e].

Lời giải

67.

*Giả sử hàm y = sin(x).(ax2 + bx + c)/(a+b) liên tục trên đoạn [d,e].  Xác định các giao điểm của hàm với trục hoành trên đoạn [d, e] 

          * bằng phương pháp chia đôi 

          * bằng phương pháp tiếp tuyến 

Lời giải

68.

Có n ngư­ời và n việc. Biết rằng ng­­ười i làm việc j thì có hiệu quả A[i,j]. Hãy tìm phương  án phân  công công  việc sao  cho tổng  hiệu quả là cao nhất.

Lời giải

69.

*Cho x và  y là các  số phức. Khai báo  kiểu thích hợp để thể hiện số phức. Nhập x và y, tính z là tổng và t là hiệu của chúng và in kết quả lên màn hình dưới dạng z = Re + j.Im.

Lời giải

70.

Viết chương trình dùng để xoá tệp trên đĩa, khi làm việc chương trình sẽ yêu cầu nhập tên tệp cần xoá từ bàn phím, xoá tệp và thông báo kết quả. 

Lời giải

71.

Nhập ngày, tháng, năm. Cho biết số ngày tính từ ngày đầu tiên của năm đó. Cho biết từ ngày đó đến hết năm còn bao nhiêu ngày nữa.  Biết rằng số ngày của mỗi tháng trong năm như­­ sau: 

     Tháng    1  2  3  4  5  6  7  8  9  10  11  12 

     Số ngày 31 28 31 30 31  30 31 31 30  31 30  31 

     riêng tháng 2  năm nhuận có 29 ngày.

 

Năm nhuận là các năm mà số 2 tận cùng chia hết cho 4. Riêng  các năm chẵn  trăm thì phải  cả hai chữ  số hàng trăm cũng phải chia hết cho 4. Ví dụ: 1984 là năm nhuận, 2000 là năm nhuận, nhưng 1900 không phải là năm nhuận. 

 

Lời giải

72.

 Nhập hai mốc thời gian (ngày, tháng, năm). Cho biết giữa hai mốc thời gian đó có bao nhiêu ngày. Biết rằng số ngày của mỗi tháng trong năm như­­ sau: 

 

     Tháng    1  2  3  4  5  6  7  8  9  10  11  12 

     Số ngày 31 28 31 30 31  30 31 31 30  31 30  31 

     riêng tháng 2  năm nhuận có 29 ngày. 

 

     Năm nhuận là các năm mà số 2 tận cùng chia hết cho 4. Riêng  các năm chẵn  trăm thì phải  cả hai chữ  số hàng trăm cũng phải chia hết cho 4. Ví dụ: 1984 là năm nhuận, 2000 là năm nhuận, nhưng 1900 không phải là năm nhuận. 

Lời giải

73.

Viết chương trình quản lý một danh sách dưới dạng mảng tĩnh các bản ghi có cấu trúc như­ sau: 

     struct BanGhi {

        char *HoTen; 

        int SoDT;

     }; 

Chương trình có các hàm thực hiện các chức năng

     - NhapDanhSach      : để nhập danh sách mới, 

     - Thêm      : để thêm bản ghi vào danh sách

     - Xoa       : để xoá một bản ghi khỏi danh sách

     - SapXep    : để sắp xếp danh sách theo trường HoTen hoặc theo 

                   trường SoDT(tuỳ theo tham số lựa chọn đ­a vào hàm).

     - TimKiem   : để tìm kiếm một bản ghi theo họ tên hoặc theo số điện thoại (tuỳ theo tham số lựa chọn đ­a vào hàm. Giá trị tìm                   kiếm nhập từ bàn phím).

Lời giải

74.

*Viết lại chương trình 73 với một danh sách móc nối các bản ghi kiểu FIFO.             

Lời giải

75.

*Viết lại chương trình 73 với một danh sách móc nối các bản ghi kiểu LIFO. 

Lời giải

76.

*Viết lại chương trình 73 với một danh sách móc nối các bản ghi kiểu móc nối hai chiều.

Lời giải

77.

*Viết lại chương trình 73 với một danh sách các bản ghi nằm trên tệp.

Lời giải

78.

 *Viết chương trình chép nửa màn hình phía dưới ghi lên nửa phía trên và chép nửa màn hình phía trên ghi tiếp xuống dưới (không dùng các hàm có sẵn của Turbo C)..

Lời giải

79.

*Viết chương trình chép nửa màn hình bên trái sang bên phải và chép nửa màn hình bên phải sang bên trái (không dùng các hàm có sẵn của Turbo C). 

Lời giải

80.

Dùng thuật toán sàng Eratosthène để xác định dãy các số nguyên tố nhỏ hơn 1000. Thuật toán này xác định các số nguyên tố trong khoảng từ 1 đến N.  Xét dãy số i từ 2 đến SQRT(N) và dãy số từ 2 den N/i.       Bất kỳ số nào là tích của một số thuộc dãy này và một số thuộc dãy kia đều có giá trị nằm trong khoảng từ 2 đến N, và một khi đã là tích của 2 số thì không thể là số nguyên tố. Loại trừ các số này đi thì  còn lại là các số nguyên tố trong khoảng từ 1 đến N. 

Lời giải

81.

*Không dùng các tệp stdio.h và conio.h, Lập chương trình in từ cột 5 dòng 12 xâu ký tự "Truong KTTH Ha Noi".

Lời giải

82.

*Lập trình truy cập địa chỉ 0:046C lấy số liệu để tạo một đồng hồ hiện số,   biết rằng tai địa chỉ này,  hệ thống dành 4 byte để lư­u giữ nhịp đồng hồ hệ thống tính từ 0 giờ cùng ngày. Số liệu này được cập nhật khoảng 18.2 lần trong một giây,  có  nghĩa là nếu  lấy giá trị trong 4 byte này  chia cho  18.2 sẽ  được thời  gian kể  từ 0  giờ đến  thời điểm hiện tại tính bằng giây.

Lời giải

83.

*Tại địa chỉ F000:FFF5 có 8 byte dữ liệu ghi ngày xuất x­ởng của  ROM-BIOS dưới dạng một xâu ký tự. Lập trình lấy số liệu này và in  lên màn hình.

Lời giải

84.

*Tại địa chỉ 0:0400 có 8 byte dữ liệu ghi địa chỉ của 4 cổng nối tiếp của máy tính. Nếu một trong 4 giá trị ghi ở đây là không thì  có nghĩa là không tồn tại cổng t­ương ứng. Lập trình đọc dữ liệu tại địa chỉ này và cho biết trên máy có bao nhiêu cổng nối tiếp, và địa  chỉ của chúng là gì (ghi dưới dạng mã Hexa). 

Lời giải

85.

Lập trình ở chế độ văn bản vẽ một khung hình chữ nhật tại toạ độ (x1, y1) và x2, y2) trên màn hình, trong đó (x1, y1) là toạ độ góc trên bên trái và (x2, y2) là toạ độ góc dưới bên phải của khung.

Viết vào trong khung 5 dòng văn bản. 

Lời giải

86.

*Viết hàm nhận một số nguyên kiểu unsigned int và trả về xâu ký tự nhị phân biểu diễn giá trị nhị phân tương ứng, ví dụ: giá trị vào  là 123456, giá trị xâu trả về: "11110001001000000". Viết chương trình ứng dụng hàm trên.

Lời giải

87.

*Viết hàm nhận một số nguyên kiểu long unsigned int và trả về xâu ký tự biểu diễn giá trị tương ứng bằng mã Hexa, ví dụ: giá trị vào là 123456, giá trị xâu trả về: "0x1E240". Viết chương trình ứng dụng hàm trên.

Lời giải

88.

Cho xâu ký tự "asdfgh\njklzxcvb\nqwertyu\n". Mở một tệp ở mốt văn bản và ghi xâu đã cho vào đó. Mở lại tệp ở mốt nhị phân, đọc  từng byte trong tệp và in lên màn hình dưới dạng mã Hexa. Sau đó mở  lại tệp ở mốt văn bản và cũng làm như­­ trên. So sánh kết quả hai lần đọc và cho biết: Hai kết quả khác nhau ở điểm nào, giải thích lý do.

Lời giải

89.

Viết một chương trình C tự mở văn bản chương trình nguồn của chính nó,  đọc tệp đó và in lên màn hình. 

Lời giải

90.

Viết chương trình đọc dữ liệu từ tệp F1 và chép sang tệp F2, với F1 là tệp đã có sẵn và F2 là tệp mới tạo ra, tên của chúng được cho từ bàn phím. 

Lời giải

91.

Cho chương trình sau: 

 #include <stdio.h> 

 #include <string.h>

 #include <conio.h> 

     char  *s1 = "0123456789", 

           *s2 = "AB",

           *s3 = "mua thu Ha noi";

     void main(){ 

         strcpy(s1, "Ha noi mua thu");

         puts(s1);

         puts(s2);

         puts(s3);

         getch(); 

     }

     Cho biết kết quả in trên màn hình sẽ như thế nào, giải thích?

Lời giải

92.

Viết chương trình điều khiển chuyển động của một ký tự trên màn hình bằng các phím Up, Down, Left, Right. Khi không có phím nhấn hoặc nhấn các phím khác thì ký tự chuyển động ngẫu nhiên, nhưng không bao giờ v­ượt qua các đường biên của màn hình. Chương trình dừng khi nhấn Escape.

Lời giải

93.

*Viết chương trình nhập  một xâu ký  tự. In xâu  đó vào góc  trên  phía trái của màn hình. Lần lượt cắt từng ký tự từ cuối xâu và cho ký tự đó rơi thẳng từ từ xuống vị trí tương ứng trên dòng cuối cùng của màn hình cho đến hết xâu.

Lời giải

94.

*Viết chương trình nhập danh sách họ tên của một lớp học. Sắp xếp danh sách đó theo vần chữ cái ABC trước hết theo tên, sau đó theo họ và đệm. Biết rằng tên học sinh trong lớp có thể gồm ít nhất là 2 từ, có thể có nhiều hơn 3 từ.

Lời giải

95.

*Viết chương trình nhập từ bàn phím một xâu ký tự, đếm xem trong xâu có bao nhiêu ký tự 'a', bao nhiêu ký tự 'b', ..., bao nhiêu ký tự 'z' (không phân biệt chữ in hay chữ thường) và in kết quả lên màn hình.

Lời giải

96.

*Nhập một mảng N bản ghi có cấu trúc như sau: 

     struct BanGhi {

          char *HoTen; 

          int NamSinh; 

     }; 

     Viết hàm chuyển M bản ghi cuối cùng của danh sách lên đầu danh sách.

     Chú ý:    Sau khi chuyển xong, thứ tự trước sau của các bản ghi trong số M bản ghi trên và trong số N - M bản ghi còn lại không hề thay đổi).

Lời giải

97.

*Viết chương trình nhập một bài thơ từ tệp có tên tệp nhập từ bàn phím. In bài thơ đó trên màn hình trong một cửa sổ đủ rộng để mỗi câu  thơ in đủ trên một dòng và đủ cao để chứa hết bài thơ. Làm cho bài thơ cuộn lên cuộn xuống trong cửa sổ đó. 

Lời giải

98.

*Xây dựng một thư­­ viện chương trình con có tên là sx.lib và một tệp tiêu đề liên quan có tên là sx.h, trong đó cài đặt các thuật toán sắp xếp sau: 

     - Chọn trực tiếp (SelectionSort) 

     - Chèn trực tiếp (InsertionSort) 

     - Chèn nhị phân (BinaryInsertionSort)

     - Nổi bọt (BubbleSort) 

     - Sắp xếp nhanh (QuickSort)

     - Sắp xếp kiểu vun đống (HeapSort) 

     Viết chương trình ứng dụng thư­­ viện trên 

Lời giải

99.

 *Viết chương trình xắp xếp các đoạn thẳng có độ dài khác nhau theo thứ tự độ dài tăng dần trên nền màn hình đồ hoạ bằng các thuật toán SelectSort, QuickSort, HeapSort.

Lời giải

100.

Viết chương trình quản lý một danh sách học sinh với các dữ liệu cần quản lý là:

1.    Số thẻ

2.    Họ và Tên

3.    Điểm tổng kết

Chương trình có các chức năng nhập dữ liệu, Xuất dữ liệu lên màn hình, Ghi dữ liệu vào đĩa, Đọc dữ liệu từ đĩa. Chương trình cho phép xe dữ liệu dưới dạng từng bản ghi, chuyển từ bản ghi này sang bản ghi kế tiếp hay bản ghi trước đó. Có thể xem tức khắc bản ghi đầu tiên hoặc bản ghi cuối cùng. Tất cả các chức năng được hiển thị thành menu, người dùng có thể lựa chọn các chức năng bằng các phím mũi tên trên bàn phím.

 

Lời giải

101.

 Viết chương trình nhập tên các màu bằng tiếng Anh từ bàn phím và sau đó in  tên chính các màu đó lên màn hình với chính màu đã cho.

 

Lời giải

102.

 Viết chương trình gán trị cho một biến như một số nguyên không dấu. Sau đó in từng byte của biến đó ra như hai phần tử của mảng một chiều kiểu ký tự, và in các byte đó ra như hai thành phần của một cấu trúc gồm hai số nguyên một byte không dấu.

 

Lời giải

103.

Tại địa chỉ 0x0410 của bộ nhớ có một dãy bít mã hoá danh sách thiết bị trên máy của bạn. Hãy viết chương trình đọc và giải mã danh sách thiết bị đó.(tham khảo tài liệu về phần cứng máy tính). Cho biết các địa chỉ cổng nối tiếp, cổng song song (ghi tại địa chỉ 0x0400 và 0x0408  của  bộ nhớ. 

Tại địa chỉ 0xFFFE có ghi mã hiệu máy tính của bạn. Hãy đọc và giải mã địa chỉ.                 

Tại địa chỉ 0xFFF5 có ghi ngày xuất xưởng ROM-BIOS của máy tính của bạn. Đọc và  in ngày đó lên màn hình.   

 

Lời giải

104.

 CPU trên máy tính của bạn làm việc ổn định nhờ vào các chương trình ngắt. Đây là các chương trình xử lý các sự kiện khác nhau mà CPU nhận được. Địa chỉ của các chương trình này nằm trong 1 K đầu tiên của bộ nhớ RAM. Bạn có thể đặt vào đây địa chỉ các chương trình ngắt do bạn tạo ra để điều khiển máy tính làm việc theo cách của bạn, và cũng có thể xoá các địa chỉ này một cách vô tình hay cố ý. Nếu mất các địa chỉ này thì hệ thống của bạn sẽ sập (tức là bị treo). Bạn hãy thử viết chương trình làm treo máy của bạn.

 

Lời giải

105.

 Viết hàm đảo ngư­ợc một xâu ký tự và chương trình ứng dụng hàm đó.

 

Lời giải

106.

 Viết chương trình in ra các tham số dòng lệnh của chính nó, và các tham số môi trường

 

Lời giải

107

Lập trình liệt kê tất cả các hoán vị của tập hợp N số tự nhiên đầu tiên (mỗi số chỉ xuất hiện 1 lần trong mỗi hoán vị).

Lời giải

108

Lập trình liệt kê tất cả các chuỗi nhị phâ có độ dài N cho từ bàn phím.

Lời giải

109

Trò chơi Mariendbad: http://groups.google.com/group/ltc-estih/web/trch-on-phim?hl=en

 

Có 16 que diêm, xếp làm 4 hàng. Số que diê mỗi hàng lần lượt là 1, 3, 5, 7.

Hai người chơi thay nhau bốc diêm. Mỗi lần bốc chỉ được phép lấy trên một hàng, số que diêm tùy ý (nhỏ hơn hoặc bằng số que có trên hàn đó). Ai phải nhặt que diêm cuối cùng thì gười ấy thua.

Xem đoạn phim sau (trong một bộ phim nổi tiếng nhan đề : Last year in Mariendbad để hiểu rõ cách chơi. Trích đoạn phim

Lập trình đê hai người có thể chơi trò chơi đó trên máy tính.

 


 


 

 

 

Tuyển bài tập C