Bài tập ôn thi môn lập trình

19 669 1
Bài tập ôn thi môn lập trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài tập ôn thi môn lập trình

1. TÌM KẾT QUẢ THỰC HIỆN CHƯƠNG TRÌNH 2. CHUYỂN ĐỔI CHƯƠNG TRÌNH 1. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. #include <stdio.h> #include <conio.h> int A[] = {19, 12, 18, 13, 10, 14, 16, 11, 15, 17}, n=10, count=0; void Result(int *A, int n){ count++; printf("\n Buoc %d:",count); for(int i=0; i<n; i++) printf("%4d",A[i]); } void main(void){ int i, j; for(i=0; i<n-1; i++){ for(j=i+1; j<n; j++){ if(A[i]>A[j]){ A[i]=A[i] + A[j]; A[j]=A[i]-A[j]; A[i]=A[i] – A[j]; } } Result(A,n); } } #include <stdio.h> #include <conio.h> int A[] = {19, 12, 18, 13, 10, 14, 16, 11, 15, 17}, n=10, count=0; void Result(int *A, int n){ count++; printf("\n Buoc %d:",count); int i=0; while (i<n) { printf("%4d", A[i]); i++; } } void main(void){ int i=0, j=i+1; while (i<n-1) { while (j<n) { while(A[i]>A[j]) { A[i]=A[i] + A[j]; A[j]=A[i]-A[j]; A[i]=A[i]-A[j]; break; } j++; Result(A,n); } i++; } getch(); } 2. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. #include <stdio.h> #include <conio.h> int A[] = {19, 12, 18, 13, 10, 14, 16, 11, 15, 17}, n=10, count=0; void Result(int *A, int n){ count++; printf("\n Buoc %d:",count); for(int i=0; i<n; i++) printf("%4d",A[i]); } void main(void){ int i, j, temp; for(i=1; i<n; i++){ temp = A[i]; for(j=i-1; j>=0 && temp < A[j]; j--){ A[j+1]=A[j]; } A[j+1] = temp;Result(A,n); } getch(); } 3. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. 4. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây: #include <stdio.h> #include <conio.h> int A[] = {19, 12, 18, 13, 10, 14, 16, 11, 15, 17}, n=10, count=0; void Result(int *A, int n){ count++; printf("\n Ket qua buoc %d:",count); for(int i=0; i<n; i++) printf("%4d",A[i]); } void main(void){ int i, j, temp; for(i=1; i<n; i++){ for(j=n-1; j>=i; j--){ if (A[j-1] > A[j]){ temp = A[j-1]; A[j-1] = A[j]; A[j] = temp; } } Result(A,n); } getch(); } #include <stdio.h> #include <conio.h> int B[]={0,0,0,0,0}, n=5, OK=1, count=0; void Result(void){ printf("\n Ket qua buoc %3d:",++count); for (int i=0; i<n; i++) printf("%3d",B[i]); } void Function1(void){ for(int i=n-1; i>=0 && B[i]; i--) B[i] =0; if(i>=0) B[i]=1; else OK=0; } void main(void){ do { Result(); Function1(); } while(OK); } 5. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. 6. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. #include <stdio.h> #include <conio.h> int B[]={0,0,0,0,0}, n=5,k=3, OK=1, count=0; void Inketqua(void){ printf("\n Ket qua %3d:",++count); for(int i=0; i<n; i++) printf("%3d",B[i]); } void Result(void){ int i, s=0; for (i=0; i<n; i++) if(B[i]) s++; if(s==k) Inketqua(); } void Function1(void){ for(int i=n-1; i>=0 && B[i]; i--) B[i] =0; if(i>=0) B[i]=1; else OK=0; } void main(void){ do { Result(); Function1 (); } while(OK); } #include <stdio.h> #include <conio.h> int B[]={0,0,0,0,0,0,0}, n=7,k=80, OK=1, count=0; int A[]={5,10,15,20,25,30,35}; void Inketqua(void){ printf("\n Ket qua %3d:",++count); for(int i=0; i<n; i++) if(B[i]) printf("%3d",A[i]); } void Result(void){ int i, s=0; for (i=0; i<n; i++) s = s+A[i]*B[i]; if(s==k) Inketqua(); } void Function1(void){ for(int i=n-1; i>=0 && B[i]; i--) B[i] =0; if(i>=0) B[i]=1; else OK=0; } void main(void){ do { Result(); Function1(); } while(OK); } 7. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. 8. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. #include <stdio.h> #include <conio.h> int B[]={0,0,0,0,0,0,0}, n=7,k=80, OK=1, count=0; int A[]={5,10,15,20,25,30,35}; void Inketqua(void){ printf("\n Ket qua %3d:",++count); for(int i=0; i<n; i++) printf("%3d",B[i]); } void Result(void){ int i, s=0; for (i=0; i<n; i++) s = s+A[i]*B[i]; if(s==k) Inketqua(); } void Function1(void){ for(int i=n-1; i>=0 && B[i]; i--) B[i] =0; if(i>=0) B[i]=1; else OK=0; } void main(void){ do { Result(); Function1(); } while(OK); } #include <stdio.h> #include <conio.h> int B[]={0,0,0,0,0,0,0}, n=7,k=40, OK=1, count=0; int A[]={5,10,15,20,25,30,35}; void Inketqua(void){ printf("\n Ket qua %3d:",++count); for(int i=0; i<n; i++) printf("%3d",B[i]); } void Result(void){ int i, s=0; for (i=0; i<n; i++) s = s+A[i]*B[i]; if(s<=k) Inketqua(); } void Function1(void){ for(int i=n-1; i>=0 && B[i]; i--) B[i] =0; if(i>=0) B[i]=1; else OK=0; } void main(void){ do { Result(); Function1(); } while(OK); } 9. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. 10. Hãy cho biết kết quả thực hiện đoạn chương trình dưới đây. 11. a) Chứng minh rằng một chương trình được thể hiện bằng tất cả các cấu trúc lệnh (while, do while, for, if else, switch) đều có thể chuyển đổi thành một chương trình mới cho lại kết quả giống như chương trình cũ nhưng chỉ cần dùng tối thiểu cấu trúc lệnh lặp while và một số biến phụ. b) Áp dụng kết quả trên chuyển đổi các chương trình từ bài 1 đến bài 10 sử dụng tối thiểu cấu trúc lệnh lặp while và một số biến phụ. #include <stdio.h> #include <conio.h> #include <string.h> char str[255]="000 001 010 011 100 101 110 111 101 110"; void main(void){ clrscr(); int n, m=0, k=0;n = strlen(str);char s[32]; for(int i=0; i<=n; i++){ switch(str[i]){ case ' ' : case '\t': case '\n': case '\r': case '\0': if (k>0) { s[k]='\0';m++;k=0; printf("\n Kết quả bước %d: %s",m,s); } break; default: s[k++]=str[i]; break; } } } #include <stdio.h> #include <conio.h> #include <math.h> int nguyen_to(unsigned long int n){ unisened long int i, k=sqrt(n); for(i=2; i<=k; i++) if(n%i==0) return(0); return(1); } void main(void){ unsigned long int n =2868336900; int k=0,i=2, OK=1; do { if(nguyen_to(n)) { printf("\n Kết quả bước:%d:%ld",++k,n); OK=0;} else if (n%i==0){printf("\n Kết quả bước:%d: %d",++k,i); n = n/i;} else i++; } while(OK); } CHỦ ĐỀ 2-LẬP TRÌNH CHO CÁC BÀI TOÁN DƯỚI ĐÂY 1. Một xâu nhị phân được gọi là xâu thuận nghịch độc là xâu đọc từ trái sang phải hay từ phải sang trái ta vẫn nhận được chính xâu đó (ví dụ xâu: 1010.0101). Hãy duyệt tất cả các xâu nhị phân thuận nghịch độc độ dài n. 2. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n. 3. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ,n (k≤n). 4. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, , n. 5. Viết chương trình liệt kê tất cả các phần tử của tập { }{ } nixxxxD in ≤≤∈= 1,1,0:), ,,( 21 6. Viết chương trình liệt kê tất cả các phần tử của tập { }       ∈≤≤∈≤= + = ∑ ZbanixbxaxxxD iii n i in ,,1,1,0,:), ,,( 1 21 7. Viết chương trình liệt kê tất cả các phần tử của tập { }       ∈≤≤∈== + = ∑ ZbanixbxaxxxD iii n i in ,,1,1,0,:), ,,( 1 21 8. Cho số tự nhiên n. Hãy viết chương trình thực hiện những công việc sau: a. Phân tích n thành thừa số nguyên tố. b. Đổi số tự nhiên n thành số ở hệ cơ số b bất kì 1 <b≤36. c. Liệt kê tất cả các số nguyên tố có tổng các phần tử là S cho trước. d. Liệt kê tất cả các cặp số p, 4p + 1 là nguyên tố nhỏ hơn n. e. Liệt kê tất cả các cặp số p, 2 p +1 là nguyên tố nhỏ hơn n. f. Liệt kê tất cả các số Fibonacci là nguyên tố nhỏ hơn n. g. Liệt kê tất cả các số hoàn thiện nhỏ hơn n. h. Liệt kê tất cả các các cặp số hữu nghị (a, b) nhỏ hơn n. 9. Cho số tự nhiên n. Hãy viết chương trình thực hiện những thao tác sau: a. Liệt kê tất cả các xâu nhị phân độ dài n (sinh kế tiếp). b. Liệt kê tất cả các xâu nhị phân thuận nghịch độc độ dài n(sinh kế tiếp). c. Liệt kê tất cả các tập con k phần tử (k≤n) của 1, 2, 3, , n(sinh kế tiếp). d. Liệt kê tất cả các hoán vị của 1, 2, 3, , n. (sinh kế tiếp) e. Liệt kê tất cả các cách chia số n thành tổng các số tự nhiên nhỏ hơn n. (sinh kế tiếp) f. Liệt kê tất cả các xâu nhị phân độ dài n (quay lui). g. Liệt kê tất cả các xâu nhị phân thuận nghịch độc độ dài n(quay lui). h. Liệt kê tất cả các tập con k phần tử (k≤n) của 1, 2, 3, , n(quay lui). i. Liệt kê tất cả các hoán vị của 1, 2, 3, , n. (quay lui) j. Liệt kê tất cả các cách chia số n thành tổng các số tự nhiên nhỏ hơn n. (quay lui) k. Liệt kê tất cả các cách đặt n quân hậu trên bàn cờ kích cỡ n×n sao cho chúng không ăn được lẫn nhau. 10. Cho hai đa thức P n (x) và Q m (x). Hãy viết chương trình thực hiện những thao tác sau: a. Tạo lập hai đa thức (nhập hệ số cho đa thức từ bàn phím hoặc file) a. Tính P n (x0) và Q m (x0) b. Tìm đạo hàm cấp l ≤n của đa thức. c. Tìm P n (x) + Q m (x) d. Tìm P n (x) - Q m (x) e. Tìm P n (x) / Q m (x) và đa thức dư 11. Cho hai ma trận vuông A cấp n. Hãy viết chương trình thực hiện các thao tác sau: a. Tìm hàng, cột hoặc đường chéo có tổng các phần tử lớn nhất. b. Tìm ma trận chuyển vị của A c. Tìm định thức của A d. Tìm ma trận nghịch đảo của A e. Giải hệ Phương trình tuyến tính thuần nhất n ẩn AX = B bằng phương pháp Grame 12. Cho một buffer kí tự gồm n dòng. Hãy viết chương trình thực hiện các thao tác sau: a. Tạo lập n dòng văn bản cho buffer. b. Đếm số từ trong Buffer. c. Tìm tần xuất xuất hiện từ X bất kì trong buffer. d. Mã hóa buffer bằng kĩ thuật Parity Bits e. Giải mã buffer được mã hóa bằng kĩ thuật parity. f. Thay thế từ X bằng từ Y. 13. Hãy viết chương trình thực hiện những thao tác dưới đây: a. Liệt kê các phần tử của tập             === ∑ = n i jjn bxaxxxxD 1 21 :,,,  ; trong đó a 1 , a 2 , , a n , b là các số nguyên dương, x i ∈ {0, 1} j =1, 2, ,n. b. Liệt kê các phần tử của tập             === ∑ = k i jjk bxaxxxxD 1 21 :,,,  ; trong đó a 1 , a 2 , , a n , b là các số nguyên dương, x i ∈ {0, 1} j =1, 2, ,n. c. Tính giá trị nhỏ nhất của hàm mục tiêu ∑ = = n i iin xcxxxf 1 21 ), ,,( trong đó ( ) { }       ∈∈≤∈= ∑ = + n i iiiinn Zaxbxaxxxxxxx 1 2121 ,1,0;:, ,,, ,, d. Tính giá trị nhỏ nhất của hàm mục tiêu [ ] [ ] [ ] [ ] 11212121 ,, ,,), ,,( xxCxxCxxCxxCxxxxf nnnn ++++== − ; trong đó ( ) Π∈= n xxxx , ,,,1 211 là tập các hoán vị của 1, 2, , n. C[i,j] ∈ Z + (i, j =1, 2, ,n). 15 . Ma trận nhị phân là ma trận mà các phần tử của nó hoặc bằng 0 hoặc bằng 1. Cho A = [a ij ], B = [b ij ] là các ma trận nhị phân cấp m × n (i =1, 2, ,m. j= 1, 2, ,n). Ta định nghĩa các phép hợp, giao, nhân logic và phép lũy thừa cho A và B như sau: • Hợp của A và B, được kí hiệu là A∨B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i, j) là a ij ∨b ij . • Giao của A và B, được kí hiệu là A∧B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) là a ij ∧b ij . • Tích boolean của A và B, được kí hiệu là AΘB là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) là c ij = (a i1 ∧b 1j ) ∨ (a i2 ∧b 2j )∨ ∨( (a ik ∧b kj ). • Nếu A là một ma trận vuông nhị phân cấp n và r là một số nguyên dương. Lũy thừa Boolean bậc r của A được kí hiệu là AAAA r ΘΘΘ= (r lần).           =Θ⇒           =           = 011 110 011 110 011 ; 01 10 01 BABA Hãy viết chương trình thực hiện các thao tác sau: a. Cho A = [a ij ], B = [b ij ]. Tìm C = A∨B. b. Cho A = [a ij ], B = [b ij ]. Tìm C = A∧B. c. Cho A = [a ik ], B = [b kj ]. Tìm C = AΘB. d. Cho A = [a ij ] tìm A r . 16. Viết chương trình liệt kê các số tự nhiên k thỏa mãn những điều kiện dưới đây: a. k là số có từ 5-10 chữ số. b. k là số nguyên tố. c. k là số thuận nghịch (k là số thuận nghịch nếu đọc xuôi hay đọc ngược các chữ số của k ta đều nhận được một số như nhau. Ví dụ số: 30303). ; 010 000 ; 011 111 011 110 , 010 101       =∧       =∨⇒       =       = BABABA d. Biểu diễn của k ở hệ cơ số b cũng là một số thuận nghịch. Ví dụ số k=30303 có biểu diễn ở hệ cơ số 8 là 73137 cũng là một số thuận nghịch. 17. Hãy liệt kê tất cả các số tự nhiên K thỏa mãn đồng thời những điều kiện dưới đây: a. K là số có từ 5 đến 10 chữ số; b. K là số nguyên tố; c. Đảo ngược thứ tự các chữ số của K cũng là một số nguyên tố; d. Tổng các chữ số của K là một số chia hết cho b. Các số tự nhiên K tìm được ghi lại trong file ketqua.out theo khuôn dạng như sau: • Dòng đầu tiên ghi lại số tự nhiên P là số các số tự nhiên K thỏa mãn đồng thời các điều kiện (a), (b), (c), và (d) . • Những dòng kế tiếp mỗi dòng ghi lại 5 số thỏa mãn các điều kiện trên, hai số khác nhau được viết cách nhau bởi một vài ký tự trống. Ví dụ dưới đây sẽ minh họa cho file ketqua.out của bài toán. Ketqua.out 10 101141 101293 101383 101653 102409 102607 102643 102841 102913 102931 18. Số điện thoại di động của một hãng viễn thông là một số có 10 chữ số dạng: 091.M.XXX.XXX; trong đó N là các số từ 0 đến 9, M là các số từ 2 đến 9, X là các số từ 0 đến 9. Hãy viết chương trình liệt kê tất cả các số điện thoại thỏa mãn đồng thời những điều kiện dưới đây. a) Tổng của bảy chữ số cuối cùng của mỗi số điện thoại là một số chia cho 10 dư 9. Ví dụ số 091.9.104.401 có bảy số cuối cùng là 9.104.401 và tổng của bảy chữ số này là 19 (19%10 = 9). b) Sáu số cuối dùng của mỗi số điện thoại lập thành một số thuận nghịch có sáu chữ số(một số được gọi là thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái các chữ số của số đó ta vẫn nhận được chính nó). Ví dụ số: 091.3.104401 có sáu số cuối cùng 104401 là một số thuận nghịch. c) Sáu số cuối dùng của mỗi số điện thoại không chứa bất kỳ một số không nào. Ví dụ số 091.9.122.221 có sáu số cuối cùng là 122.221 không chứa số không nào 19. Cho số tự nhiên n. Hãy viết chương trình thực hiện những thao tác dưới đây: a. Biểu diễn n thành số ở hệ cơ số b (1< b <=16); b. Phân tích số n thành tích các thừa số nguyên tố; c. Liệt kê các số nguyên tố nhỏ hơn n; d. Liệt kê các số hoàn hảo nhỏ hơn n (một số được gọi là số hoàn hảo nếu tổng các ước số thực sự của nó kể cả số 1 bằng chính nó). 20. Cho dãy gồm n số tự nhiên phân biệt a 1 , a 2 , , a n và số tự nhiên B. Hãy liệt kê tất cả các phần tử của tập ( ) { }       =∈== ∑ = n i iiin nixBxaxxxD 1 21 , .,2,1,1,0,:,,,  ; Dữ liệu vào cho bởi file data.in theo khuôn dạng như sau: • Dòng đầu tiên ghi lại hai số tự nhiên n và B. Hai số được viết cách nhau bởi một vài khoảng trống. • Dòng kế tiếp ghi lại n số nguyên dương a 1 , a 2 , ,a n . Hai số khác nhau được viết cách nhau bởi một vài kí tự trống. Kết quả ra ghi lại trong file ketqua.out theo khuôn dạng sau:

Ngày đăng: 06/12/2013, 11:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan