Bài tập C 1.1. Viết chương trình in ra màn hình dòng chữ: “Chao ban! Moi ban lam quen voi ngon ngu lap trinh C”. 1.2. Viết chương trình in ra màn hình 2 dòng chữ như sau: “Chao ban!” “Ban ten la gi?” 1.3. Viết chương trình nhập tên mình từ bàn phím, sau đó in ra màn hình tên vừa nhập. 1.4. In ra màn hình 1 bài thơ theo đúng định dạng bài thơ đó. 1.5. Nhập 2 số a, b từ bàn phím. Tính tổng, hiệu, tích, thương hai số rồi in ra màn hình. 1.6. Viết chương trình tính chu vi, diện tích hình tròn bán kính r. r nhập vào từ bàn phím. 1.7. Nhập 2 số thực x, y từ bàn phím. In ra màn hình x, y, z. Với z = pow(x,y) – x lũy thừa y. 1.8. Nhập từ bàn phím 4 số thực a, b, c, d. Tính tổng 4 số, tính trung bình cộng 4 số đó. 1.9. Viết chương trình in lên màn hình một thiệp mời dự sinh nhật có dạng: ******************************************* THIEP MOI Thân mời bạn : Nguyễn Mạnh Hùng Tới dự lễ sinh nhật của mình Vào lúc 19h ngày 12/10/2005 Tại 05/42 Trần Phú - Cần Thơ Rất mong được đón tiếp ! Hồ Thu Hương ******************************************* 1.10. Viết chương trình nhập vào bán kính r của một hình tròn. Tính chu vi và diện tích của hình tròn theo công thức : Chu vi CV = 2*Pi*r Diện tích S = Pi*r*r In các kết quả lên màn hình 1.11. Viết chương trình nhập vào độ dài 3 cạnh a, b, c của một tam giác. Tính chu vi và diện tích của tam giác theo công thức: Chu vi CV = a+b+c Diện tích S = sqrt(p*(p-a)*(p-b)*(p-c)) Trong đó: p=CV/2 In các kết quả lên màn hình 1.12. Viết chương trình tính logax với a, x là các số thực nhập vào từ bàn phím, và x>0, a>0, a != 1.( dùng logax=lnx/lna) 1.13. Viết chương trình nhập vào tọa độ của hai điểm (x1, y1) và (x2, y2) a) Tính hệ số góc của đường thẳng đi qua hai điểm đó theo công thức: Hệ số góc = (y2 - y1) /(x2 - x1) b) Tính khoảng cách giữa hai điểm theo công thức khoảng cách. 1.14. Viết chương trình nhập vào các giá trị điện trở R1, R2, R3 của một mạch điện : Tính tổng trở theo công thức: 1R=1R1+1R2+1R31R=1R1+1R2+1R3 size 12{ { {1} over {R} } = { {1} over {R rSub { size 8{1} } } } + { {1} over {R rSub { size 8{2} } } } + { {1} over {R rSub { size 8{3} } } } } {} 1.15. Viết chương trình nhập vào điểm ba môn Toán, Lý, Hóa của một học sinh. In ra điểm trung bình của học sinh đó với hai số lẻ thập phân. Bài tập Mảng 1. Viết chương trình nhập vào một dãy n số thực a[0], a[1], , a[n-1], sắp xếp dãy số theo thứ tự từ lớn đến nhỏ. In dãy số sau khi sắp xếp. 2. Viết chương trình sắp xếp một mảng theo thứ tự tăng dần sau khi đã loại bỏ các phần tử trùng nhau. 3. Viết chương trình nhập vào một mảng, hãy xuất ra màn hình: - Phần tử lớn nhất của mảng. - Phần tử nhỏ nhất của mảng. - Tính tổng của các phần tử trong mảng . 4. Viết chương trình nhập vào một dãy các số theo thứ tự tăng, nếu nhập sai quy cách thì yêu cầu nhập lại. In dãy số sau khi đã nhập xong. Nhập thêm một số mới và chèn số đó vào dãy đã có sao cho dãy vẫn đảm bảo thứ tự tăng. In lại dãy số để kiểm tra. 5. Viết chương trình nhập vào một ma trận (mảng hai chiều) các số nguyên, gồm m hàng, n cột. In ma trận đó lên màn hình. Nhập một số nguyên khác vào và xét xem có phần tử nào của ma trận trùng với số này không ? Ở vị trí nào ? Có bao nhiêu phần tử ? 6. Viết chương trình để chuyển đổi vị trí từ dòng thành cột của một ma trận (ma trận chuyển vị) vuông 4 hàng 4 cột. Sau đó viết cho ma trận tổng quát cấp m*n. Ví dụ: 1 2 3 4 1 2 9 1 2 5 5 8 2 5 4 5 9 4 2 0 3 5 2 8 1 5 8 6 4 8 0 6 7. Viết chương trình nhập vào một mảng số tự nhiên. Hãy xuất ra màn hình: - Dòng 1 : gồm các số lẻ, tổng cộng có bao nhiêu số lẻ. - Dòng 2 : gồm các số chẵn, tổng cộng có bao nhiêu số chẵn. - Dòng 3 : gồm các số nguyên tố. - Dòng 4 : gồm các số không phải là số nguyên tố. 8. Viết chương trình tính tổng bình phương của các số âm trong một mảng các số nguyên. 9. Viết chương trình thực hiện việc đảo một mảng một chiều. Ví dụ : 1 2 3 4 5 7 9 10 đảo thành 10 9 7 5 4 3 2 1 . 10. Viết chương trình nhập vào hai ma trận A và B có cấp m, n. In hai ma trận lên màn hình. Tổng hai ma trận A và B là ma trận C được tính bởi công thức: cij= aij +bij ( i=0,1,2, m-1; j=0,1,2 n-1) Tính ma trận tổng C và in kết quả lên màn hình. 11. Viết chương trình nhập vào hai ma trận A có cấp m, k và B có cấp k, n. In hai ma trận lên màn hình. Tích hai ma trận A và B là ma trận C được tính bởi công thức: cij= ai1*b1j + ai2 *b2j + ai3 *b3j + + aik *bkj (i=0,1,2, m-1;j=0,1,2 n- 1) Tính ma trận tích C và in kết quả lên màn hình. 12. Xét ma trận A vuông cấp n, các phần tử a[i, i] ( i= 1 n ) được gọi là đường chéo chính của ma trận vuông A. Ma trận vuông A được gọi là ma trận tam giác nếu tất cả các phần tử dưới đường chéo chính đều bằng 0. Định thức của ma trận tam giác bằng tích các phần tử trên đường chéo chính. 13. Viết chương trình thực hiện việc trộn hai dãy có thứ tự thành một dãy có thứ tự. Yêu cầu không được trộn chung rồi mới sắp thứ tự. Khi trộn phải tận dụng được tính chất đã sắp của hai dãy con. BÀI TẬP VỀ XÂU KÝ TỰ Một số hàm chuẩn thao tác trên xâu kí tự được khai báo trong thư viện <string.h> Sao chép một xâu sang một xâu khác: strcpy(char XâuĐích, const char XâuNguồn); Nối một xâu vào xâu khác strcat(XâuĐích, XâuNguồn); So sánh hai xâu int strcmp(s1,s2); //kết quả trả về là vị trí đầu tiên của 2 kí tự khác nhau trong s1 và s2 Tính độ dài của xâu: int strlen(s); //kết quả trả về là tổng số kí tự có trong xâu s, không tính kí tự ‘\0’ Đảo ngược mọi kí tự trong xâu (trừ kí tự ‘\0’) char *strrev(s); //kết quả trả về là xâu s với các kí tự đã bị đảo ngược\ Hàm nhập xâu kí tự gets(char * s) //nhập xâu kí tự s từ bàn phím Hàm xuất xâu kí tự puts(char * s) //in xâu kí tự s ra màn hình …. 1. Nhập một xâu ký tự st và một kí tự c, đếm số lần xuất hiện của ký tự c trong xâu st. 2. Liệt kê các ký tự có mặt trong xâu cùng số lần xuất hiện của mỗi ký tự. 3. Nhập một xâu ký tự. a. Xét xem trong xâu có k ký tự kề nhau mà như nhau hay không. b. In ra xâu sau khi lược bớt các kí tự kề nhau mà như nhau chỉ để lại một. 4. Nhập một xâu ký tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không đối xứng hãy đảo xâu. 5. Nhập hai xâu ký tự, đếm số lần xuất hiện của xâu thứ hai trong xâu thứ nhất. 6. Viết chương trình xóa các ký tự chữ số trong một xâu ký tự được nhập vào từ bàn phím. 7. Bài toán với xâu ký tự kiểu họ tên: a. Chuẩn hóa xâu họ tên: Không có ký tự trống đầu và cuối xâu, các từ trong xâu được bắt đầu bằng một chữ cái viết hoa, tiếp theo là các chữ cái viết thường và cách nhau một ký tự trống. b. Sắp xếp danh sách kiểu họ tên theo a,b,c. Trước hết sắp theo tên, nếu trùng tên thì sắp theo họ. 8. (*) Dùng mảng hoặc xâu ký tự biểu diễn các số lớn (nhiều chữ số), thực hiện các phép toán cộng, trừ, nhân, chia các số đó. 9. Kiểm tra một chuỗi nhập vào có phải là chuỗi đối xứng hay không ? 10. Kiểm tra một chuỗi nhập vào có phải là chuỗi tuần hoàn hay không ? Ví dụ abcdabcdabcd là 1 chuỗi tuần hoàn 11. Nhập vào một số sau đó đổi ra chữ. Ví dụ 235: Hai Trăm Ba Mươi Lăm 12. Nhập vào một chuỗi, tìm và xóa các ký tự trùng nhau trong chuỗi BÀI TẬP CHƯƠNG TRÌNH CON 1. Xây dựng các hàm: Nhập, xuất ma trận, tính tổng 2 ma trận, tích 2 ma trận để thực hiện bài toán: Nhập các phần tử cho 2 ma trận vuông A, B cấp n*n. In ra màn hình ma trận A, B và ma trận tổng C, ma trận tích D của chúng. 2. Xây dựng các hàm kiểm tra số nguyên tố, số hoàn hảo, số chính phương, số Amstrong. Sử dụng các hàm đó để in ra màn hình các số nguyên tố, chính phương, hoàn hảo trong khoảng từ n đến m (n, m nhập từ bàn phím, n<m). Mỗi loại số in trên 1 dòng. 3. Sử dụng hàm đệ qui để in ra màn hình số Fibonaci thứ n. 4. Xây dựng hàm tính số Fibonaci thứ n. Sử dụng hàm này để in ra màn hình 30 số Fibonaci đầu tiên. 5. Xây dựng các hàm kiểm tra số nguyên tố, số hoàn hảo, số chính phương, số Amstrong. Xây dựng chương trình thực hiện các chức năng theo giá trị nhập từ bàn phím. Ví dụ: - Nhập số 1 để in ra các số nguyên tố nhỏ hơn 1000 - Nhập số 2 để in ra các số hoàn hảo nhỏ hơn 1000 - Nhập số 3 để in ra các số Amstrong nhỏ hơn 10000. Nhập ký tự khác thì báo sai và yêu cầu nhập lại. 6. Xây dựng hàm tính x!. Áp dụng để tính biểu thức: S = 1! +2! + 3! + … n! n – nhập từ bàn phím, n>10. 7. Xây dựng hàm hoán vị dãy số, in ra màn hình các hoán vị có thể có của dãy số a1, a2, an nhập từ bàn phím. 8. Nhập từ bàn 3 số a, b, c. Kiểm tra nếu 3 số vừa nhập không phải là số đo 3 cạnh của 1 tam giác thì yêu cầu nhập lại. Nếu là số đo 3 cạnh của 1 tam giác thì thông báo ra màn hình tam giác đó là tam giác vuông, tù, cân hay đều. 9. Viết một hàm tính tổng các chữ số của một số nguyên. Viết chương trình nhập vào một số nguyên, dùng hàm trên kiểm tra xem số đó có chia hết cho 3 không. Một số chia hết cho 3 khi tổng các chữ số của nó chia hết cho 3. 10. Tam giác Pascal là một bảng số, trong đó hàng thứ 0 bằng 1, mỗi một số hạng của hàng thứ n+1 là một tổ hợp chập k của n (C nk = k!(n−k)!) Tam giác Pascal có dạng sau: 1 ( hàng 0 ) 1 1 ( hàng 1 ) 1 2 1 ( hàng 2 ) 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 (hàng 6) Viết chương trình in lên màn hình tan giác Pascal có n hàng (n nhập vào khi chạy chương trình) bằng cách tạo hai hàm tính giai thừa và tính tổ hợp. 11. Yêu cầu như câu 5 nhưng dựa vào tính chất sau của tổ hợp: C nk =C n−1k−1 +C n−1k để hình thành thuật toán là: tạo một hàm tổ hợp có hai biến n, k mang tính đệ quy như sau: ToHop(n,k)=1 nếu k=0 hoặc k=n ToHop(n,k)= ToHop(n-1,k-1) + ToHop(n-1,k) nếu 1< k < n 12. Viết chương trình tính các tổng sau: • S= 1 + x +x2 + x3 + + xn • S= 1 - x +x2 - x3 + (-1)n xn • S= 1 + x/1! +x2/2! + x3/3! + + xn/n! Trong đó n là một số nguyên dương và x là một số bất kỳ được nhập từ bàn phím khi chạy chương trình. 13. Viết chương trình in dãy Fibonacci đã nêu trong bằng phương pháp dùng một hàm Fibonacci F có tính đệ quy. • F n = 1, nếu n=1 hoặc n = 2 • F n = F n-1 + F n−2 nếu n>2 14. Bài toán tháp Hà Nội: Có một cái tháp gồm n tầng, tầng trên nhỏ hơn tầng dưới. Hãy tìm cách chuyển cái tháp này từ vị trí thứ nhất sang vị trí thứ hai thông qua vị trí trung gian thứ ba. Biết rằng chỉ được chuyển mỗi lần một tầng và không được để tầng lớn trên tầng nhỏ. 15. Viết chương trình phân tích một số nguyên dương ra thừa số nguyên tố. BAI TAP CAU TRUC 1/ in danh sách vừa nhập gồm họ tên, phái , điểm c, điểm pascal, điểm TB , kết quả . 2/ Sắp xếp giảm dần theo điểm trung bình và in ra. 3/ Nhập vào tên cần tìm và tìm trong danh sách học viên nếu không tìm thấy thì in ra học viên có tên không tìm thấy. Nếu có nhiều học viên có cùng tên cần tìm thì hãy in ra người cuối cùng được tìm thấy. 4/ Giống câu 3 nhưng in ra 2 người tìm thấy đầu tiên ( nếu có nhiều người ). 5/ Giống câu 3 nhưng in ra người đầu tiên và người cuối cùng ( nếu có nhiều ngưòi). Nên viết theo từng hàm. 6. Viết hàm tìm số lớn nhất trong hai số. Áp dụng tìm số lớn nhất trong ba số a, b, c với a, b, c nhập từ bàn phím. 7. Viết hàm tìm UCLN của hai số a và b. Áp dụng: nhập vào tử và mẫu số của một phân số, kiểm tra xem phân số đó đã tối giản hay chưa. 8. Viết hàm in n ký tự c trên một dòng. Viết chương trình cho nhập 5 số nguyên cho biết số lượng hàng bán được của mặt hàng A ở 5 cửa hàng khác nhau. Dùng hàm trên vẽ biểu đồ so sánh 5 giá trị đó, mỗi trị dùng một ký tự riêng. . c của một tam gi c. Tính chu vi và diện tích c a tam gi c theo c ng th c: Chu vi CV = a+b +c Diện tích S = sqrt(p*(p-a)*(p-b)*(p -c) ) Trong đó: p=CV/2 In c c kết quả lên màn hình 1.12. Viết chương. đư c gọi là đường chéo chính c a ma trận vuông A. Ma trận vuông A đư c gọi là ma trận tam gi c nếu tất c c c phần tử dưới đường chéo chính đều bằng 0. Định th c của ma trận tam gi c bằng tích. hình: - Dòng 1 : gồm c c số lẻ, tổng c ng c bao nhiêu số lẻ. - Dòng 2 : gồm c c số chẵn, tổng c ng c bao nhiêu số chẵn. - Dòng 3 : gồm c c số nguyên tố. - Dòng 4 : gồm c c số không phải là số