đề cương tin

68
Page 1

Transcript of đề cương tin

Page 1: đề cương tin

Page 1

Page 2: đề cương tin

Mục LụcCâu 1. Nhập tháng năm đưa ra số ngày trong thánga) Nhập vào từ bàn phím hai số M, N thể hiện tháng và năm?b) Xuất ra màn hình số ngày trong tháng thứ M của năm N?

Câu 2. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím 3 số thực a, b, c?b) Xuất ra màn hình các nghiệm của phương trình bậc hai: ax2 + bx + c = 0 (có phân biệt trường hợp nghiệm thực và nghiệm phức)?

Câu 3. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương N và K, trong đó N là dòng thứ N và K là số dòng trong một trang của quyển sách nào đó?b) Xuất ra màn hình các kết quả sau:

Dòng 1: Số thứ tự p của trang chứa dòng N. Dòng 2: Số thứ tự dòng d của dòng N trong trang p.

Câu 4. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương m và n, trong đó m là số lượng các bạn nữ và n là số lượng các bạn nam trong một nhóm sinh viên?b) Xuất ra ra màn hình một cách sắp xếp các bạn sinh viên thành một hàng sao cho mỗi bạn nữ đứng cạnh ít nhất 1 bạn nam và mỗi bạn nam đứng cạnh ít nhất một bạn nữ theo quy cách sau:

Nếu không có cách sắp xếp thỏa mãn thì in thông báo NO.

Nếu có cách sắp xếp thì in xau gồm các ký tự T và G, trong đó T chỉ bạn nam và G chỉ bạn nữ.

Ví dụ: Với m = 5, n = 3 thì in ra: GTGGTGTG.

Câu 5. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M và N?b) Xuất ra màn hình biểu diễn thập phân của phân số M/N?

Page 1

Page 3: đề cương tin

Câu 6. Xét bài toán Tháp Hà Nội:Có N tầng tháp khác nhau đặt tại cọc a nào đó trong các cọc 1, 2, 3 theo thứ tự

trên nhỏ dưới lớn. Cần chuyển N tầng tháp sang cọc b khác a theo yêu cầu sau:- Mỗi lần chỉ được chuyển một tầng tháp;- Được sử dụng cọc trung gian còn lại c;

- Không được đặt tầng tháp lớn lên trên tầng tháp nhỏ.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím 3 số nguyên dương N, a và b, với 1 ≤ a, b ≤ 3?b) Xuất ra màn hình dãy các thao tác di chuyển tháp dạng x -> y với ý nghĩa tầng tháp từ cọc x được chuyển sang cọc y?Câu 7. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị lớn nhất?.- Dòng 2: Số thứ tự trong dãy của các số hạng có giá trị lớn nhất?Câu 8. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị nhỏ nhất của N số đã cho.- Dòng 2: Số thứ tự trong dãy của các số hạng có giá trị nhỏ nhất?Câu 9. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Ước chung lớn nhất của N số đã cho?.- Dòng 2: Bội chung nhỏ nhất của N số đã cho?Câu 10. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Số K là số lượng các số hạng của dãy là nguyên tố?

Page 2

Page 4: đề cương tin

- Dòng 2: Trong trường hợp K > 0, K số thứ tự trong dãy của K số trong dãy là số nguyên tố.Câu 11. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số thực bất kỳ a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Dãy số đã cho sau khi sắp xếp theo chiều tăng?- Dòng 2: Dãy số đã cho sau khi sắp xếp theo chiều giảm của bình phương mỗi số hạng?Câu 12. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Số K là số lượng các ước nguyên tố của N?- K dòng tiếp theo, mối dòng một số nguyên tố p và số a với ý nghĩa a là số lớn nhất sao cho pa là ước của N?Câu 13. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương N và B, với B≤ 36?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Tổng các chữ số của số N trong hệ thập phân- Dòng 2: Biểu diễn N trong hệ cơ số B?Câu 14. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M, N và các phần tử của ma trận A cấp MxN?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Giá trị lớn nhất của các tổng các số trên mỗi hàng?- Dòng 2: Giá trị nhỏ nhất của tổng các số trên mỗi cột?Câu 15. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M, N và các phần tử của ma trận A cấp MxN?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Số K là số lượng các giá trị các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?- Dòng 2: Trong trường hợp K> 0, K giá trị các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?

Page 3

Page 5: đề cương tin

Câu 16. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và các phần tử của ma trận vuông A cấp N. b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Giá trị định thức A?- Dòng 2: Nếu A có ma trận nghịch đảo thì xuất thông báo YES, ngược lại xuất thông báo NO?Câu 17. Ta định nghĩa một từ là một số ký tự viết liền nhau không chứa dấu cách. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím xâu kí tự S có không quá 1000 ký tự?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Số K là số lượng các từ có trong xâu S?- Trong trường hợp K > 0, K dòng tiếp theo, mỗi dòng ghi 1 từ và số lần xuất hiện của mỗi từ đó trong S?Câu 18. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số thực bất kỳ a1, ..., aN?. b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị lớn nhất của biểu thức E = a1x1 + ... + aNxN, với xi chỉ nhận các giá trị 0 hoặc 1?- Dòng 2: Giá trị nhỏ nhất của E?Câu 19. Thông tin của mỗi sinh viên bao gồm:- Mã sinh viên: xâu gồm 10 ký tự- Họ tên: xâu có không quá 30 ký tự- Tuổi: số nguyên- Điểm trung bình: số thực có 1 chữ số sau dấu phẩy.- Xếp loại: Giỏi (G) nếu điểm trung bình ≥ 8, Khá (K) nếu điểm trung bình ≥ 6,5, Đạt (TB) nếu điểm trung bình ≥ 5, yếu (Y) nếu điểm trung bình < 5.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số N và danh sách thông tin của N sinh viên?b) Ghi vào file văn bản SV.TXT danh sách N sinh viên đã nhập?c) Xuất ra màn hình thông tin của N sinh viên đọc từ file văn bản SV.TXT theo thứ tự giảm của điểm trung bình?Câu 20. Thông tin của mỗi sinh viên bao gồm:- Mã sinh viên: xâu gồm 10 ký tự- Họ tên: xâu có không quá 30 ký tự- Tuổi: số nguyên

Page 4

Page 6: đề cương tin

- Điểm trung bình: số thực có 1 chữ số sau dấu phẩy.- Xếp loại: Giỏi (G) nếu điểm trung bình ≥ 8, Khá (K) nếu điểm trung bình ≥ 6,5, Đạt (TB) nếu điểm trung bình ≥ 5, yếu (Y) nếu điểm trung bình < 5.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số N và danh sách thông tin của N sinh viên?b) Ghi vào file nhị phân SV.DAT danh sách N sinh viên đã nhập?c) Xuất ra màn hình thông tin của N sinh viên đọc từ file nhị phân SV.DAT theo thứ tự giảm của điểm trung bình?Câu 21. Nhập vào từ bàn số nguyên dương N và N số nguyên a1, a2, …, an. Xuất ra màn hình ước chung lớn nhất của N số đó?Câu 22. Viết thuật toán Euclid tìm ước chung lớn nhất của hai số nguyên a và b đã cho?Câu 23. Viết thuật toán cộng hai phân số đã cho?Câu 24. Viết thuật toán tính tổng S của một dãy số a1 , a2 ,…,an?Câu 25. Viết thuật toán tìm giá trị lớn nhất và nhỏ nhất của một dãy số a1 , a2 ,…,an?Câu 26. Cho một dãy số a1 , a2 ,…,an và một phần tử x. Hãy viết thuật toán đếm số lần xuất hiện của x trong dãy số đã cho?Câu 27. Viết thuật tóan liệt kê ra các giá trị khác nhau của một dãy số cho trước, ứng với mỗi giá trị thì cho biết số lần xuất hiện của giá trị đó trong dãy?Câu 28. Viết thuật toán sắp xếp tăng một dãy số a1 , a2 ,…,an?Câu 29. Cho một ma trận có m dòng, n cột. Viết một thuật toán tìm cột có tổng lớn nhất?Câu 30. Cho một ma trận có m dòng, n cột. Viết thuật toán liệt kê ra tất cả các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?Câu 31. Viết thuật toán sắp xếp n2 số nguyên từ 1 đến n2 thành một bảng gồm n dòng và n cột sao cho đi theo vòng xoáy trôn ốc từ trái sang phải, từ trên xuống dưới, từ phải sang trái, từ dưới lên trên ta nhận được dãy tăng các số? Câu 32. Nhập vào 2 số thực từ bàn phím. Viết chương trình dùng lệnh if else tìm và hiển thị giá trịnhỏ nhất ra màn hình.Câu 33. Viết chương trình nhập vào số nguyên từ bàn phím. Nếu đó là số chẵn thì hiển thị "Banvua nhap so chan", nếu là số lẻ thì hiển thị "Ban vua nhap so le".

Page 5

Page 7: đề cương tin

Câu 34. Nhập vào 3 số thực từ bàn phím, kiểm tra xem nó có tạo thành 3 cạnh của một tam giáckhông. Nếu có thì hiện thông báo ra màn hình "La 3 canh cua tam giac", ngược lại hiển thị"Không phải la 3 canh cua tam giac".Câu 35. Đưa ra màn hình các số nguyên lẻ nhỏ trong khoảng từ 1 đến 100 (dùng vòng lặp for)Câu 36. Nhập vào một số N nguyên, N>1 từ bàn phím. Tính tổng các số nguyên từ 1 đến N (Dùngvòng lặp for, while, do while)Câu 37. Viết chương trình nhập vào số nguyên dương N từ bàn phím, sau đó tính giai thừa và hiểnthị ra màn hình (dùng for, while và do while).Câu 38. Viết chương trình kiểm tra một số nguyên nhập từ bàn phím có phải là số nguyên tố haykhông ?Câu 39. Lập trình tính và hiển thị tổng S = 1 + 1/2 + 1/3 + … + 1/n với n nhập vào từ bàn phím.Câu 40. Viết chương trình nhập vào 2 số nguyên dương từ bàn phím và đưa ra ước số chung lớn nhất của chúng.Câu 41. Viết chương trình nhập vào 2 số nguyên từ bàn phím và đưa ra bội số chung nhỏ nhất của chúng.Câu 42. Nhập vào một mảng số thực gồm 10 phần tử. Tìm và hiển thị giá trị và chỉ số của phần tửlớn nhất.Câu 43. Nhập vào một mảng n số nguyên (tối đa 20 phần tử) với n nhập vào từ bàn phím. Sắp xếp lại mảng theo sự tăng dần của các giá trị phần tử.Câu 44. Nhập một xâu kí tự từ bàn phím gồm các từ, ví dụ "Thu do Ha Noi". Lập chương trìnhđể bỏ bớt các dấu trống giữa các từ sao cho các từ chỉ cách nhau ít nhất một dấu trống.Câu 45. Viết chương trình nhập vào từ bàn phím họ và tên của một người, sau đó in phần tên ramàn hình. Ví dụ: "Tran Hung Dao" thì in ra "Dao".Câu 46. Nhập vào một câu, kết thúc bằng dấu chấm. In ra câu đó có bao nhiêu từ.Câu 47. Yêu cầu người dùng nhập vào một số nguyên dương n với 5 ≤ n ≤ 20 (có kiểm tra tínhhợp lệ của giá trị được nhập vào, nếu giá trị n nhập vào không thỏa mãn điều kiện thì yêucầu nhập lại)

Page 6

Page 8: đề cương tin

Câu 48. Viết hàm tìm ước số chung lớn nhất uscln(int x, int y) và bội số chung nhỏ nhất bscnn(int x, int y) của hai số.Câu 49. Lập hàm giải phương trình bậc 2 ptb2(float a, float b, float c, float *x1, float *x2), trongđó a,b,c là các hệ số của phương trình. Hàm nhận giá trị 0 nếu phương trình vô nghiệm,giá trị 1 nếu phương trình có nghiệm kép (chứa trong *x1), giá trị 2 nếu phương trình có 2nghiệm (chứa trong *x1 và *x2), giá trị 3 nếu phương trình có vô số nghiệm.Câu 50. Đa thức cấp n được tính theo công thức:f(x) = an*xn+ an-1*xn-1 +... + a1*x1 + a0*x0

Lập hàm đa thức f(float a[], int n, float x) để tính giá trị của đa thức.

BÀI LÀM1. Nhập tháng năm đưa ra số ngày trong thánga) Nhập vào từ bàn phím hai số M, N thể hiện tháng và năm?b) Xuất ra màn hình số ngày trong tháng thứ M của năm N?#include<conio.h>#include<stdio.h>int a,b;main(){

nhap:printf("Nhap a = ");scanf("%d",&a);if(a<=0||a>12) {printf("Nhap sai !\n");goto nhap;};switch(a){

case 1:case 3:case 5:case 7:printf("Thang %d co 31 ngay !.",a);break;

case 4:case 6:case 9:case 11:printf("Thang %d co 30 ngay !",a);break;

case 2:printf("Nhap so nam = ");scanf("%d",&b);

Page 7

Page 9: đề cương tin

if(b%4) {printf("Thang %d cua nam %d co 28 ngay !.",a,b);break;}

else {printf("Thang %d cua nam %d co 29 ngay !.",a,b);break;}

}getch();

}

2. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím 3 số thực a, b, c?b) Xuất ra màn hình các nghiệm của phương trình bậc hai: ax2 + bx + c = 0 (có phân biệt trường hợp nghiệm thực và nghiệm phức)?#include<conio.h>#include<stdio.h>#include<math.h>#include<stdlib.h>float a,b,c,d;main(){

nhap:printf("Nhap a = ");scanf("%f",&a);if(a==0) {printf("Co loi !") goto nhap;};printf("Nhap b = ");scanf("%f",&b);printf("Nhap c = ");scanf("%f",&c);d=b*b-4*a*c;if(d<0) printf("Pt co 2 nghiem phuc \nx = (-%0.2f+

%0.2f*i)/%0.2f \nva \nx = (-%0.2f-%0.2f*i)/%0.2f",b,sqrt(abs(int(d))),2*a,b,sqrt(abs(int(d))),2*a);

if(d==0) printf("Pt co nghiem kep x = %0.2f",-b/(2*a));

if(d>0) printf("Pt co 2 nghiem phan biet \nx = %0.2f \nva \nx = %0.2f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));

getch();}3. Hãy viết chương trình trên C thực hiện các yêu cầu sau:

Page 8

Page 10: đề cương tin

a) Nhập vào từ bàn phím hai số nguyên dương N và K, trong đó N là dòng thứ N và K là số dòng trong một trang của quyển sách nào đó?b) Xuất ra màn hình các kết quả sau:

Dòng 1: Số thứ tự p của trang chứa dòng N. Dòng 2: Số thứ tự dòng d của dòng N trong trang p.

#include<conio.h>#include<stdio.h>int n,k,p;main(){

nhap:printf("Nhap vao N = ");scanf("%d",&n);printf("Nhap vao K = ");scanf("%d",&k);if(n<k||k<0||n<0) {printf("Nhap lai !");goto

nhap;};p=n/k;if(n%k==0) {printf("%d",p);printf("\n%d",k);};if(n%k!=0) {printf("%d",p+1);printf("\n%d",n-

p*k);};getch();

}

4. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương m và n, trong đó m là số lượng các bạn nữ và n là số lượng các bạn nam trong một nhóm sinh viên?b) Xuất ra ra màn hình một cách sắp xếp các bạn sinh viên thành một hàng sao cho mỗi bạn nữ đứng cạnh ít nhất 1 bạn nam và mỗi bạn nam đứng cạnh ít nhất một bạn nữ theo quy cách sau:

Nếu không có cách sắp xếp thỏa mãn thì in thông báo NO.

Nếu có cách sắp xếp thì in xau gồm các ký tự T và G, trong đó T chỉ bạn nam và G chỉ bạn nữ.

Ví dụ: Với m = 5, n = 3 thì in ra: GTGGTGTG.#include<stdio.h>#include<conio.h>

Page 9

Page 11: đề cương tin

main(){char nam='T', nu='G';int nNam, nNu;int n1, n2, nd;char T1, T2;printf("Nhap so nam va so nu: ");scanf("%d%d",&nNam,&nNu);if (nNam <= nNu){ n1 = nNam; n2 = nNu; T1 = nam; T2 = nu;}else{ n1 = nNu; n2 = nNam; T1 = nu; T2 = nam;};

if (n2 > n1*2 || n1 <= 0 || n2 <= 0) printf("Khong sap xep duoc");else for (nd = n2-n1; n1 > 0; n1--, nd--){ if (nd > 0) printf("%c", T2); printf("%c%c", T1, T2);};getch();}5. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M và N?b) Xuất ra màn hình biểu diễn thập phân của phân số M/N?#include<conio.h>#include<stdio.h>main(){

int m,n;printf("Nhap so M = ");scanf("%d",&m);

Page 10

Page 12: đề cương tin

printf("Nhap so N = ");scanf("%d",&n);printf("Phan so M/N = %d/%d =

%0.4f",m,n,float(m)/float(n));getch();

}6. Xét bài toán Tháp Hà Nội:

Có N tầng tháp khác nhau đặt tại cọc a nào đó trong các cọc 1, 2, 3 theo thứ tự trên nhỏ dưới lớn. Cần chuyển N tầng tháp sang cọc b khác a theo yêu cầu sau:

- Mỗi lần chỉ được chuyển một tầng tháp;- Được sử dụng cọc trung gian còn lại c;

- Không được đặt tầng tháp lớn lên trên tầng tháp nhỏ.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím 3 số nguyên dương N, a và b, với 1 ≤ a, b ≤ 3?b) Xuất ra màn hình dãy các thao tác di chuyển tháp dạng x -> y với ý nghĩa tầng tháp từ cọc x được chuyển sang cọc y?#include <stdio.h>#include <conio.h>void dichchuyen(int N,int c1, int c2, int c3) { if (N==1) printf(" coc%d -> coc%d \n",c1,c2); else { dichchuyen(N-1,c1,c3,c2); dichchuyen(1,c1,c2,c3); dichchuyen(N-1,c3,c2,c1); };}main (){ int N,a,b,c; printf("Nhap N= "); scanf("%d",&N); printf("Nhap a= "); scanf("%d",&a); printf("Nhap b= "); scanf("%d",&b); c=6-(a+b); printf("Cach di chuyen: \n"); dichchuyen(N,a,b,c); getch();}7. Hãy viết chương trình trên C thực hiện các yêu cầu sau:

Page 11

Page 13: đề cương tin

a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị lớn nhất?.- Dòng 2: Số thứ tự trong dãy của các số hạng có giá trị lớn nhất?

#include<conio.h>#include<stdio.h>main(){

int i,n,c,a[100],max;printf("Nhap so N = ");scanf("%d",&n);for(i=0;i<n;i++){

printf("Nhap so thu %d : ",i+1);scanf("%d",&a[i]);

};max=a[0];c=1;for(i=1;i<n;i++)

if(a[i]>max) {max=a[i];c=i+1;};printf("GTLN = %d",max);printf("\nSTT = %d",c);getch();

}

8. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị nhỏ nhất của N số đã cho.- Dòng 2: Số thứ tự trong dãy của các số hạng có giá trị nhỏ nhất?

#include<conio.h>#include<stdio.h>main(){

Page 12

Page 14: đề cương tin

int i,n,c,a[100],min;printf("Nhap so N = ");scanf("%d",&n);for(i=0;i<n;i++){

printf("Nhap so thu %d : ",i+1);scanf("%d",&a[i]);

};min=a[0];c=1;for(i=1;i<n;i++)

if(a[i]<min) {min=a[i];c=i+1;};printf("GTNN = %d",min);printf("\nSTT = %d",c);getch();

}

9. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Ước chung lớn nhất của N số đã cho?.- Dòng 2: Bội chung nhỏ nhất của N số đã cho?#include<conio.h>#include<stdio.h>int m,n,r;main(){

nhap:printf("Nhap N = ");scanf("%d",&n);printf("Nhap M = ");scanf("%d",&m);if(m<0||n<0) {printf("Nhap sai !\n\n");goto nhap;}r=m*n;while(m!=n){

if(m>n) m=m-n;if(n>m) n=n-m;

}printf("UCLN = %d\n",n);

Page 13

Page 15: đề cương tin

printf("BCNN = %d",r/n);getch();

}10. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số nguyên dương a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Số K là số lượng các số hạng của dãy là nguyên tố? - Dòng 2: Trong trường hợp K > 0, K số thứ tự trong dãy của K số trong dãy là số nguyên tố.#include<conio.h>#include<stdio.h>int i,a[100],k=0,n,b[100];int nto(int a){

int dem=0,j;for(j=1;j<=a;j++){

if(a%j==0) dem++;};if(dem==2) return 1;else return 0;

}main(){

nhap:printf("Nhap N = ");scanf("%d",&n);if(n<=0) {printf("Nhap sai !\n");goto nhap;}for(i=1;i<=n;i++){

printf("Nhap so thu %d : = ",i);scanf("%d",&a[i]);

if(nto(a[i])==1) {k++;b[k]=i;}};printf("K = %d\n",k);if(k>0)

Page 14

Page 16: đề cương tin

{for(i=1;i<=k;i++){

printf("%d ",b[i]);};

};getch();

}11. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số thực bất kỳ a1, ..., aN?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Dãy số đã cho sau khi sắp xếp theo chiều tăng?- Dòng 2: Dãy số đã cho sau khi sắp xếp theo chiều giảm của bình phương mỗi số hạng?#include<conio.h>#include<stdio.h>#include<math.h>int i,j,a[100],n,r;main(){

nhap:printf("Nhap N = ");scanf("%d",&n);if(n<=0) {printf("Nhap sai !\n");goto nhap;}for(i=1;i<=n;i++){

printf("Nhap so thu %d : = ",i);scanf("%d",&a[i]);

};for(i=1;i<n;i++){

for(j=i+1;j<=n;j++) if(a[i]>a[j]) {r=a[i];a[i]=a[j];a[j]=r;};// doi cho a[i] va a[j]

};for(i=1;i<=n;i++) printf("%d ",a[i]);printf("\n\n");for(i=n;i>=1;i--) printf("%0.0f ",pow(a[i],2));

Page 15

Page 17: đề cương tin

getch();}12. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Số K là số lượng các ước nguyên tố của N?- K dòng tiếp theo, mối dòng một số nguyên tố p và số a với ý nghĩa a là số lớn nhất sao cho pa là ước của N? #include<conio.h>#include<stdio.h>int i,n,a[100],b=0,c,d,k=0;int nto(int a){

int dem=0,j;for(j=1;j<=a;j++){

if(a%j==0) dem++;};if(dem==2) return 1;else return 0;

}main(){

nhap:printf("Nhap N = ");scanf("%d",&n);if(n<=0) {printf("Nhap sai !\n");goto nhap;};for(i=1;i<=n;i++) if(nto(i)==1) {b++;a[b]=i;};//tao

1 day so nguyen to nho hon nfor(i=1;i<=b;i++){

if(n%a[i]==0) k++;};printf("k = %d\n\n",k);for(i=1;i<=b;i++){

c=n;d=0;

Page 16

Page 18: đề cương tin

while(c%a[i]==0){

d++;c/=a[i];};if(d>0) printf("p = %d \t\t a = %d\n",a[i],d);

};getch();

}13. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương N và B, với B≤ 36?b) Xuất ra màn hình các kết quả sau:- Dòng 1: Tổng các chữ số của số N trong hệ thập phân- Dòng 2: Biểu diễn N trong hệ cơ số B?#include <stdio.h>#include <conio.h>char cs[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";void chuyendoi(int so,int he) { if (so>=he) chuyendoi(so/he,he); printf("%c",cs[so%he]); }main() { int n,b,m,tong; printf("Nhap vao so N: "); scanf("%d",&n); printf("Nhap vao so B (B<=36): "); scanf("%d",&b); tong=0; m=n; while (m> 0) { tong = tong + m%10; m=m/10; } printf ("Tong cac chu so cua so N la: %d\n",tong);

Page 17

Page 19: đề cương tin

printf("Bieu dien N trong he co so %d: ",b); chuyendoi(n,b); getch(); } 14. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M, N và các phần tử của ma trận A cấp MxN?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Giá trị lớn nhất của các tổng các số trên mỗi hàng?- Dòng 2: Giá trị nhỏ nhất của tổng các số trên mỗi cột?#include<conio.h>#include<stdio.h>int i,j,a[100][100],m,n,tong[100],mm;main(){

nhap:printf("Nhap m = ");scanf("%d",&m);printf("Nhap n = ");scanf("%d",&n);if(n<=0||m<=0) {printf("Nhap sai !\n");goto

nhap;};for(i=1;i<=m;i++)

for(j=1;j<=n;j++) {printf("Nhap a[%dx%d] = ",i,j);scanf("%d",&a[i][j]);};//tim tong lon nhat trong cac hang

for(i=1;i<=m;i++){

tong[i]=0;for(j=1;j<=n;j++){

tong[i]+=a[i][j];};if(i==1) {mm=tong[1];continue;};if(tong[i]>mm) mm=tong[i];

};printf("Max = %d\n",mm);

Page 18

Page 20: đề cương tin

//tim tong nho nhat trong cac cotfor(j=1;j<=n;j++){

tong[j]=0;for(i=1;i<=m;i++){

tong[j]+=a[i][j];};if(j==1) {mm=tong[1];continue;};if(tong[j]<mm) mm=tong[j];

};printf("Min = %d",mm);getch();

}15. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím hai số nguyên dương M, N và các phần tử của ma trận A cấp MxN?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Số K là số lượng các giá trị các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?- Dòng 2: Trong trường hợp K> 0, K giá trị các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?#include <stdio.h>#include <conio.h>main(){ int m,n,i,j,k; float a[100][100],max[100],min[100],b[100]; printf ("Nhap so hang m= "); scanf ("%d",&m); printf ("Nhap so cot n= "); scanf ("%d",&n); printf ("Nhap cac phan tu cua ma tran: \n"); for (i=1;i<=m;i++) for (j=1;j<=n;j++) {printf ("a[%d][%d]= ",i,j); scanf ("%f",&a[i][j]);

Page 19

Page 21: đề cương tin

} printf("Ma tran vua nhap la: \n"); for (i=1;i<=m;i++) max[i]=a[i][1]; for (j=1;j<=n;j++) min[j]=a[1][j]; for (i=1;i<=m;i++) { for (j=1;j<=n;j++) { if (max[i]<a[i][j]) max[i]=a[i][j]; if (min[j]>a[i][j]) min[j]=a[i][j]; printf (" %5.3f ",a[i][j]); } printf ("\n"); } k=0; for (i=1;i<=m;i++) for (j=1;j<=n;j++) if (max[i]==min[j]) {k++; b[k]=max[i];} printf("So luong cac phan tu vua la gia tri lon nhat \nmoi hang vua la gia tri nho nhat moi cot la: K= %d",k); if (k>0) {printf ("\nGia tri cac phan tu do la: "); for (i=1;i<=k;i++) printf("%5.3f ",b[i]); } getch();}

16. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và các phần tử của ma trận vuông A cấp N. b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Giá trị định thức A?- Dòng 2: Nếu A có ma trận nghịch đảo thì xuất thông báo YES, ngược lại xuất thông báo NO?#include<conio.h>#include<stdio.h>struct matran

Page 20

Page 22: đề cương tin

{ int n; float phantu[10][10];};void nhap(matran &A) { printf ("Nhap so nguyen duong N: "); scanf ("%d",&A.n); printf ("Nhap cac phan tu cua ma tran: \n"); for (int i=0;i<A.n;i++) for (int j=0;j<A.n;j++) {printf ("a[%d][%d]= ",i,j); scanf ("%f",&A.phantu[i][j]);}}void xem(matran A){ for(int i=0; i<A.n; i++) { for(int j=0; j<A.n; j++) printf ("%5.3f ",A.phantu[i][j]); printf ("\n"); }}matran matrancon(matran A, int i, int j){ matran C; C.n = A.n - 1; int i1, j1, i2, j2; for(int i1 = 0, i2 = 0; i1 < C.n; i1++, i2++) { if(i2 == i)i2++; for(int j1 = 0, j2 = 0; j1 < C.n; j1++, j2++) { if(j2 == j)j2++; C.phantu[i1][j1] = A.phantu[i2][j2]; } }

Page 21

Page 23: đề cương tin

return C;}float dinhthuc(matran A){ if(A.n == 1) return A.phantu[0][0]; float det = 0; int dau = 1; for(int j = 0; j < A.n; j++) { det += A.phantu[0][j] * dau * dinhthuc(matrancon(A, 0, j)); dau *= -1; } return det;}main(){ matran A; nhap(A); printf ("Ma tran vua nhap la: \n"); xem(A); printf ("\ndet(A) = %5.3f\n",dinhthuc(A)); if (dinhthuc(A)!=0) printf ("YES"); else printf ("NO"); getch();}17. Ta định nghĩa một từ là một số ký tự viết liền nhau không chứa dấu cách. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím xâu kí tự S có không quá 1000 ký tự?b) Xuất ra màn hình các kết quả sau đây:- Dòng 1: Số K là số lượng các từ có trong xâu S?- Trong trường hợp K > 0, K dòng tiếp theo, mỗi dòng ghi 1 từ và số lần xuất hiện của mỗi từ đó trong S?

#include<conio.h>#include<stdio.h>#include<string.h>char a[1001],i,j,n,giong=0,x,dem[1000];

Page 22

Page 24: đề cương tin

main(){

printf("Nhap 1 xau ki tu : ");scanf("%s",&a);n=strlen(a);for(i=0;i<n-1;i++){

for(j=i+1;j<n;j++){

if(a[i]<a[j]) {x=a[i];a[i]=a[j];a[j]=x;};};

};for(i=1;i<n;i++) if(a[i]==a[i-1]) giong++;printf("So ki tu = %d\n",n-giong);

for(i=0;i<n;i++) dem[i]=0;for(i=0;i<n;i++){

for(j=0;j<n;j++){

if(a[i]==a[j]) dem[i]++;};

};printf("\nki tu %c(%d)",a[0],dem[0]);for(i=1;i<n;i++){

if(a[i]!=a[i-1]) printf("\nki tu %c(%d)",a[i],dem[i]);}getch();

}

18. Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số nguyên dương N và dãy N số thực bất kỳ a1, ..., aN?. b) Xuất ra màn hình các kết quả sau:- Dòng 1: Giá trị lớn nhất của biểu thức E = a1x1 + ... + aNxN, với xi chỉ nhận các giá trị 0 hoặc 1?- Dòng 2: Giá trị nhỏ nhất của E?

Page 23

Page 25: đề cương tin

#include<conio.h>#include<stdio.h>int a[100],i,n,max=0,min=0;main(){

nhap:printf("Nhap N = ");scanf("%d",&n);if(n<=0) {printf("Nhap sai !\n");goto nhap;};for(i=1;i<=n;i++){

printf("Nhap so thu %d : ",i);scanf("%d",&a[i]);if(a[i]>=0) max+=a[i];if(a[i]<0) min+=a[i];

};printf("GTLN cua E = %d\n",max);printf("GTNN cua E = %d",min);getch();

}19. Thông tin của mỗi sinh viên bao gồm:- Mã sinh viên: xâu gồm 10 ký tự- Họ tên: xâu có không quá 30 ký tự- Tuổi: số nguyên- Điểm trung bình: số thực có 1 chữ số sau dấu phẩy.- Xếp loại: Giỏi (G) nếu điểm trung bình ≥ 8, Khá (K) nếu điểm trung bình ≥ 6,5, Đạt (TB) nếu điểm trung bình ≥ 5, yếu (Y) nếu điểm trung bình < 5.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số N và danh sách thông tin của N sinh viên?b) Ghi vào file văn bản SV.TXT danh sách N sinh viên đã nhập?c) Xuất ra màn hình thông tin của N sinh viên đọc từ file văn bản SV.TXT theo thứ tự giảm của điểm trung bình?#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>main(){

Page 24

Page 26: đề cương tin

int n,i;FILE *f;printf("============= Nhap thong tin cac

SV ! =============");printf("\nNhap so sinh vien : ");scanf("%d",&n);struct sinhvien{

int tuoi;char hten[30],msvien[10];float diemtb;char xloai[5];

};sinhvien ssv[n];

if((f = fopen("SV.txt", "wb")) == NULL) //mo file { printf("Khong the mo file!\n"); exit(0); } fwrite(&n,sizeof(int),1,f); //ghi file

for(i=0;i<n;i++){

printf("\nNhap thong tin sinh vien thu %d !\n",i+1);

printf("- MA SV : ");fflush(stdin);gets(ssv[i].msvien);

printf("- HO TEN : ");fflush(stdin);gets(ssv[i].hten);

printf("- TUOI : ");scanf("%d",&ssv[i].tuoi);printf("- DIEM TB :

");scanf("%f",&ssv[i].diemtb);strcpy(ssv[i].xloai,ssv[i].diemtb>=8?"Gioi":

(ssv[i].diemtb>=6.5?"Kha":(ssv[i].diemtb>=5?"TB":"Yeu")));

fwrite(&ssv[i],sizeof(sinhvien),1,f);}fclose(f);

Page 25

Page 27: đề cương tin

f=fopen("SV.txt","rb");int j;//sap xep theo thu tu giam dan cua diem tbfor(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)if(ssv[i].diemtb<ssv[j].diemtb)

{ssv[n]=ssv[i];ssv[i]=ssv[j];ssv[j]=ssv[n];};//doi cho 2 sinh vien cho nhau

printf("\n\n\n============= Danh sach cac SV ! =============\n")

for(i=0;i<n;i++){

printf("\nThong tin sinh vien thu %d !\n",i+1);printf("- MA SV : %s\n",ssv[i].msvien);printf("- HO TEN : %s\n",ssv[i].hten);printf("- TUOI : %d\n",ssv[i].tuoi);printf("- DIEM TB : %0.1f\n",ssv[i].diemtb);printf("- XEP LOAI: %s\n",ssv[i].xloai);

}fclose(f);getch();

}20. Thông tin của mỗi sinh viên bao gồm:- Mã sinh viên: xâu gồm 10 ký tự- Họ tên: xâu có không quá 30 ký tự- Tuổi: số nguyên- Điểm trung bình: số thực có 1 chữ số sau dấu phẩy.- Xếp loại: Giỏi (G) nếu điểm trung bình ≥ 8, Khá (K) nếu điểm trung bình ≥ 6,5, Đạt (TB) nếu điểm trung bình ≥ 5, yếu (Y) nếu điểm trung bình < 5.Hãy viết chương trình trên C thực hiện các yêu cầu sau:a) Nhập vào từ bàn phím số N và danh sách thông tin của N sinh viên?b) Ghi vào file nhị phân SV.DAT danh sách N sinh viên đã nhập?c) Xuất ra màn hình thông tin của N sinh viên đọc từ file nhị phân SV.DAT theo thứ tự giảm của điểm trung bình?#include<conio.h>#include<stdio.h>#include<stdlib.h>

Page 26

Page 28: đề cương tin

#include<string.h>main(){

int n,i;FILE *f;printf("============= Nhap thong tin cac

SV ! =============");printf("\nNhap so sinh vien : ");scanf("%d",&n);struct sinhvien{

int tuoi;char hten[30],msvien[10];float diemtb;char xloai[5];

};sinhvien ssv[n];

if((f = fopen("SV.DAT", "wb")) == NULL) //mo file { printf("Khong the mo file!\n"); exit(0); } fwrite(&n,sizeof(int),1,f); //ghi file

for(i=0;i<n;i++){

printf("\nNhap thong tin sinh vien thu %d !\n",i+1);

printf("- MA SV : ");fflush(stdin);gets(ssv[i].msvien);

printf("- HO TEN : ");fflush(stdin);gets(ssv[i].hten);

printf("- TUOI : ");scanf("%d",&ssv[i].tuoi);printf("- DIEM TB :

");scanf("%f",&ssv[i].diemtb);strcpy(ssv[i].xloai,ssv[i].diemtb>=8?"Gioi":

(ssv[i].diemtb>=6.5?"Kha":(ssv[i].diemtb>=5?"TB":"Yeu")));

Page 27

Page 29: đề cương tin

fwrite(&ssv[i],sizeof(sinhvien),1,f);}fclose(f);f=fopen("SV.DAT","rb");int j;//sap xep theo thu tu giam dan cua diem tbfor(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)if(ssv[i].diemtb<ssv[j].diemtb)

{ssv[n]=ssv[i];ssv[i]=ssv[j];ssv[j]=ssv[n];};//doi cho 2 sinh vien cho nhau

printf("\n\n\n============= Danh sach cac SV ! =============\n")

for(i=0;i<n;i++){

printf("\nThong tin sinh vien thu %d !\n",i+1);printf("- MA SV : %s\n",ssv[i].msvien);printf("- HO TEN : %s\n",ssv[i].hten);printf("- TUOI : %d\n",ssv[i].tuoi);printf("- DIEM TB : %0.1f\n",ssv[i].diemtb);printf("- XEP LOAI: %s\n",ssv[i].xloai);

}fclose(f);getch();

}21. Nhập vào từ bàn số nguyên dương N và N số nguyên a1, a2, …, an. Xuất ra màn hình ước chung lớn nhất của N số đó?#include<conio.h>#include<stdio.h>int i,j,n,a[100],min,x,max;void Nhap(){

do{

printf("Nhap so luong N = ");scanf("%d",&n);if(n<=0) printf("Error !");

}while(n<=0);

Page 28

Page 30: đề cương tin

for(i=0;i<n;i++) {printf("\nNhap so thu %d :",i+1);scanf("%d",&a[i]);};}void Min(){

for(i=0;i<n;i++){

if(i==0) min=a[i];if(i>0&&a[i]<min) min=a[i];

};}void Giam(){

for(i=0;i<n;i++){

if(a[i]>min) a[i]=a[i]-min;};

}void Xuli(){

for(i=0;i<n;i++){

if(i==0) max=a[i];if(i>0&&a[i]>max) max=a[i];

};for(j=0;j<max;j++){

Min();Giam();

};}void Xuat(){

printf("\nUcln = %d",a[0]);}main(){

Page 29

Page 31: đề cương tin

Nhap();Xuli();Xuat();getch();

}22. Viết thuật toán Euclid tìm ước chung lớn nhất của hai số nguyên a và b đã cho?#include<conio.h>#include<stdio.h>#include<stdlib.h>int c,d,r,a,b;int max(int a,int b){

if(a>b) {c=a;d=b;}else {c=b;d=a;};

}void Nhap(){

do{

printf("\n\nNhap a = ");scanf("%d",&a);printf("Nhap b = ");scanf("%d",&b);if(a<=0||b<=0) printf("Error !");

}while(a<=0||b<=0);

}

void Xuli(){

max(a,b);do{

r=c%d;c=d;d=r;}while(r!=0);

}

void Xuat()

Page 30

Page 32: đề cương tin

{printf("Ucnl cua %d va %d la : %d",a,b,c);

}

main(){

Nhap();Xuli();Xuat();getch();}23. Viết thuật toán cộng hai phân số đã cho?#include<conio.h>#include<stdio.h>#include<stdlib.h>int a,b,c,d,e,f,uc,i,x,y;void Nhap(){

do{

printf("\n\nNhap a: ");scanf("%d",&a);printf("Nhap b: ");scanf("%d",&b);printf("Nhap c: ");scanf("%d",&c);printf("Nhap d: ");scanf("%d",&d);if(b==0||d==0) printf("Error !");

}while(b==0||d==0);

}

void Xuli(){

e=a*d+b*c;f=b*d;if(e>f) {x=f;y=e;} else {x=e;y=f;};for (i=1;i<=x;i++)

if (x%i==0 && y%i==0 ) uc=i; e=e/uc;f=f/uc;

}

Page 31

Page 33: đề cương tin

void Xuat(){

printf("ket qua: %d/%d+%d/%d = %d/%d",a,b,c,d,e,f);}

main(){

Nhap();Xuli();Xuat();getch();}24. Viết thuật toán tính tổng S của một dãy số a1 , a2 ,…,an?#include<conio.h>#include<stdio.h>main(){

int x,a=0;int i,n;printf("Nhap so n = ");scanf("%d",&n);for(i=1;i<=n;i++)

{printf("Nhap so thu %d : ",i);scanf("%d",&x);a=a+x;

};printf("Tong cua n so tren = %d",a);getch();

}25. Viết thuật toán tìm giá trị lớn nhất và nhỏ nhất của một dãy số a1 , a2 ,…,an?#include<conio.h>#include<stdio.h>#include<stdlib.h>int x,n,i,min,max;char a[100];void Nhap(){

printf("Nhap n = ");scanf("%d",&n);for(i=1;i<=n;i++){

Page 32

Page 34: đề cương tin

printf("Nhap so thu %d : ",i);scanf("%d",&a[i]);};

}

void Xuli(){

max=a[1];min=a[1];for(i=2;i<=n;i++) {

if(a[i]>a[i-1]) max=a[i];if(a[i]<a[i-1]) min=a[i];

};}

void Xuat(){

printf("\n\nMax=%d \nMin=%d",max,min);}

main(){

Nhap();Xuli();Xuat();getch();}26. Cho một dãy số a1 , a2 ,…,an và một phần tử x. Hãy viết thuật toán đếm số lần xuất hiện của x trong dãy số đã cho?#include<conio.h>#include<stdio.h>#include<stdlib.h>

int n,i,dem=0,x;char a[100];

void Nhap(){

printf("Nhap n = ");scanf("%d",&n);for(i=1;i<=n;i++){

Page 33

Page 35: đề cương tin

printf("Nhap so thu %d : ",i);scanf("%d",&a[i]);};printf("\nNhap x = ");scanf("%d",&x);

}

void Xuli(){

for(i=1;i<=n;i++){

if(a[i]==x) dem++;};

}

void Xuat(){

printf("phan tu %d xuat hien %d lan trong day n !",x,dem);}

main(){

Nhap();Xuli();Xuat();getch();}

27. Viết thuật tóan liệt kê ra các giá trị khác nhau của một dãy số cho trước, ứng với mỗi giá trị thì cho biết số lần xuất hiện của giá trị đó trong dãy?#include<conio.h>#include<stdio.h>#include<stdlib.h>

int n,i,j,x;char a[100], dem[100];

void Nhap(){

printf("Nhap n = ");scanf("%d",&n);

Page 34

Page 36: đề cương tin

for(i=1;i<=n;i++){

printf("Nhap so thu %d : ",i);scanf("%d",&a[i]);};

}

void Xuli(){

for(i=1;i<=n;i++){

dem[i]=0;for(j=1;j<=n;j++) if(a[i]==a[j]) dem[i]++;

};}

void Xuat(){

printf("\n%d(%d)\n",a[1],dem[1]);for(i=2;i<=n;i++){

for(j=1;j<i;j++) {

if(a[i]==a[j]) break;if(j==i-1)

printf("%d(%d)\n",a[i],dem[i]);};

};}

main(){

Nhap();Xuli();Xuat();getch();}28. Viết thuật toán sắp xếp tăng một dãy số a1 , a2 ,…,an?#include<conio.h>#include<stdio.h>

Page 35

Page 37: đề cương tin

#include<stdlib.h>

int n,i,j,x,c;char a[100];void Nhap(){

printf("Nhap n = ");scanf("%d",&n);for(i=1;i<=n;i++){

printf("Nhap so thu %d : ",i);scanf("%d",&a[i]);};

}

void Xuli(){

for(i=1;i<=n;i++){

for(j=i+1;j<=n;j++) if(a[i]>a[j]) {

c=a[i];a[i]=a[j];a[j]=c;

};

};}

void Xuat(){

printf("Sap Xep : ");for(i=1;i<=n;i++) {if(i==1) printf("%d",a[i]);

else printf(" <-- %d",a[i]);}}

main(){

Nhap();Xuli();Xuat();getch();

Page 36

Page 38: đề cương tin

}29. Cho một ma trận có m dòng, n cột. Viết một thuật toán tìm cột có tổng lớn nhất?

#include<conio.h>#include<stdio.h>#include<stdlib.h>

int n,m,i,j,max,c;char a[100][100],b[100];

void Nhap(){

printf("Nhap so hang m = ");scanf("%d",&m);printf("Nhap so cot n = ");scanf("%d",&n);for(i=1;i<=m;i++){

for(j=1;j<=n;j++) {printf("Nhap vi tri %dx%d = ",i,j);scanf("%d",&a[i][j]);};

};}

void Xuli(){

for(j=1;j<=n;j++){

b[j]=0;for(i=1;i<=m;i++) {

b[j]=b[j]+a[i][j]; };

};max=b[1];for(j=2;j<=n;j++) if(b[j]>max) {max=b[j];c=j;};

Page 37

Page 39: đề cương tin

}

void Xuat(){

printf("\nCot %d co tong lon nhat = %d",c,b[c]);

}

main(){

Nhap();Xuli();Xuat();getch();}30. Cho một ma trận có m dòng, n cột. Viết thuật toán liệt kê ra tất cả các phần tử là giá trị lớn nhất trong mỗi dòng và đồng thời là giá trị nhỏ nhất trong mỗi cột chứa chúng?#include<conio.h>#include<stdio.h>#include<stdlib.h>

int n,m,i,j,max,min,g;//a chua ma tran , e chua max , f chua vi tri cot , h chua minchar a[100][100],b[100],e[100],f[100],h[100];

void Nhap(){

printf("Nhap so hang m = ");scanf("%d",&m);printf("Nhap so cot n = ");scanf("%d",&n);for(i=1;i<=m;i++){

for(j=1;j<=n;j++) {printf("Nhap vi tri %dx%d = ",i,j);scanf("%d",&a[i][j]);};

};}

Page 38

Page 40: đề cương tin

void Xuli(){

for(i=1;i<=m;i++){

for(j=1;j<=n;j++) {

if(j==1) max=a[i][j];if(a[i][j]>max) {max=a[i][j];e[i]=max;f[i]=j;};

};

};for(g=1;g<=m;g++){

j=f[g];for(i=1;i<=m;i++) {

if(i==1) min=a[i][j];if(a[i][j]<min) {min=a[i][j];h[g]=min;};if(i==m) h[g]=min;

}; };

}

void Xuat(){

for(i=1;i<=m;i++) printf("\n%d la gtln trong dong %d va dong thoi %d la gtnn trong cot %d",e[i],i,h[i],f[i]);

}

main(){

Nhap();Xuli();Xuat();getch();}

Page 39

Page 41: đề cương tin

31. Viết thuật toán sắp xếp n2 số nguyên từ 1 đến n2 thành một bảng gồm n dòng và n cột sao cho đi theo vòng xoáy trôn ốc từ trái sang phải, từ trên xuống dưới, từ phải sang trái, từ dưới lên trên ta nhận được dãy tăng các số? #include<conio.h>#include<stdio.h>#include<stdlib.h>int n,i,j,v,v0,c=1;unsigned char a[16][16],b[256];void Nhap(){

printf("Nhap so n = ");scanf("%d",&n);}void Xuli(){

for(i=1;i<=n*n;i++) b[i]=i;v0=n/2;for(v=1;v<=v0;v++){

i=v;for(j=v;j<n-v+1;j++){

a[i][j]=b[c];c++;

};j=n-v+1;for(i=v;i<n-v+1;i++){

a[i][j]=b[c];c++;

};i=n-v+1;for(j=n-v+1;j>v;j--){

a[i][j]=b[c];c++;

};j=v;

Page 40

Page 42: đề cương tin

for(i=n-v+1;i>v;i--){

a[i][j]=b[c];c++;

};};if(n%2!=0) a[n/2+1][n/2+1]=n*n;

}void Xuat(){

for(i=1;i<=n;i++){

for(j=1;j<=n;j++){

printf("%d ",a[i][j]);if(a[i][j]<10&&a[i][j]>=0) printf(" ");if(a[i][j]<100&&a[i][j]>=10) printf(" ");if(j==n) printf("\n\n");

};};

}main(){

Nhap();Xuli();Xuat();getch();}

32. Nhập vào 2 số thực từ bàn phím. Viết chương trình dùng lệnh if else tìm và hiển thị giá trịnhỏ nhất ra màn hình.#include<conio.h>#include<stdio.h>int a,b;int min(int a,int b){

if(a>=b) return b;

Page 41

Page 43: đề cương tin

else return a;}

main(){

printf("Nhap a = ");scanf("%d",&a);printf("Nhap b = ");scanf("%d",&b);printf("So nho nhat : %d",min(a,b));getch();

}33. Viết chương trình nhập vào số nguyên từ bàn phím. Nếu đó là số chẵn thì hiển thị "Banvua nhap so chan", nếu là số lẻ thì hiển thị "Ban vua nhap so le".#include<conio.h>#include<stdio.h>int a;main(){

printf("Nhap a = ");scanf("%d",&a);if(a%2) printf("Ban vua nhap so le !");else printf("Ban vua nhap so chan !");getch();

}34. Nhập vào 3 số thực từ bàn phím, kiểm tra xem nó có tạo thành 3 cạnh của một tam giáckhông. Nếu có thì hiện thông báo ra màn hình "La 3 canh cua tam giac", ngược lại hiển thị"Không phải la 3 canh cua tam giac".#include<conio.h>#include<stdio.h>int a,b,c;main(){

printf("Nhap a = ");scanf("%d",&a);printf("Nhap b = ");scanf("%d",&b);printf("Nhap c = ");scanf("%d",&c);

Page 42

Page 44: đề cương tin

if(a+b>c&&a+c>b&&b+c>a) printf("La 3 canh cua tam giac !");

else printf("Khong phai la 3 canh cua tam giac !");getch();

}35. Đưa ra màn hình các số nguyên lẻ nhỏ trong khoảng từ 1 đến 100 (dùng vòng lặp for)#include<conio.h>#include<stdio.h>int i;main(){

for(i=1;i<=99;i+=2) printf("%d ",i);getch();

}36. Nhập vào một số N nguyên, N>1 từ bàn phím. Tính tổng các số nguyên từ 1 đến N (Dùngvòng lặp for, while, do while)

vòng for#include<conio.h>#include<stdio.h>int i,a=0,n;main(){

printf("Nhap so N = ");scanf("%d",&n);for(i=1;i<=n;i++) a+=i;printf("Tong cac so nguyen tu 1 den N la : %d",a);getch();

}vòng while#include<conio.h>#include<stdio.h>int i=1,a=0,n;main(){

printf("Nhap so N = ");scanf("%d",&n);while(i<=n)

Page 43

Page 45: đề cương tin

{a+=i;i++;

};printf("Tong cac so nguyen tu 1 den N la : %d",a);getch();

}vòng do while#include<conio.h>#include<stdio.h>int i=1,a=0,n;main(){

printf("Nhap so N = ");scanf("%d",&n);do{

a+=i;i++;

}while(i<=n);printf("Tong cac so nguyen tu 1 den N la : %d",a);getch();

}37. Viết chương trình nhập vào số nguyên dương N từ bàn phím, sau đó tính giai thừa và hiểnthị ra màn hình (dùng for, while và do while).vòng for#include<conio.h>#include<stdio.h>int i=1,a=1,n;main(){

printf("Nhap so N = ");scanf("%d",&n);if(n==0) {printf("0! = 1");goto ketthuc;};

for(i=1;i<=n;i++) a*=i;printf("%d! = %d.",n,a);

Page 44

Page 46: đề cương tin

ketthuc:getch();

}vòng do while#include<conio.h>#include<stdio.h>int i=1,a=1,n;main(){

printf("Nhap so N = ");scanf("%d",&n);if(n==0) {printf("0! = 1");goto ketthuc;};do{

a*=i;i++;

}while(i<=n);printf("%d! = %d.",n,a);ketthuc:getch();

}vòng while#include<conio.h>#include<stdio.h>int i=1,a=1,n;main(){

printf("Nhap so N = ");scanf("%d",&n);if(n==0) {printf("0! = 1");goto ketthuc;};

while(i<=n){

a*=i;i++;

};printf("%d! = %d.",n,a);ketthuc:

Page 45

Page 47: đề cương tin

getch();}

38. Viết chương trình kiểm tra một số nguyên nhập từ bàn phím có phải là số nguyên tố haykhông ?#include<conio.h>#include<stdio.h>int a,dem=0,i;main(){

printf("Nhap a = ");scanf("%d",&a);if(a<1) {printf("Nhap sai !.");goto ketthuc;};for(i=1;i<=a;i++) if(a%i==0) dem++;if(dem==2) printf("%d la so nguyen to !.",a);else printf("%d khong phai so nguyen to !.",a);ketthuc:getch();

}39. Lập trình tính và hiển thị tổng S = 1 + 1/2 + 1/3 + … + 1/n với n nhập vào từ bàn phím.#include<conio.h>#include<stdio.h>float tong=0;int i,a;main(){

printf("Nhap a = ");scanf("%d",&a);if(a<1) {printf("Nhap sai !.");goto ketthuc;};for(i=1;i<=a;i++) tong+=1/float(i);printf("Ket qua : %f",tong);ketthuc:getch();

}40. Viết chương trình nhập vào 2 số nguyên dương từ bàn phím và đưa ra ước số chung lớn nhất của chúng.#include<conio.h>#include<stdio.h>

Page 46

Page 48: đề cương tin

int r,a,b,c;

main(){

printf("Nhap a = ");scanf("%d",&a);printf("Nhap b = ");scanf("%d",&b);if(a<b) {c=a;a=b;b=c;};r=a%b;while(b!=0){

r=a%b;a=b;b=r;

};printf("Ucln : %d",a);getch();

}41. Viết chương trình nhập vào 2 số nguyên từ bàn phím và đưa ra bội số chung nhỏ nhất của chúng.#include<conio.h>#include<stdio.h>int dem,a,b,c,i;

main(){

printf("Nhap a = ");scanf("%d",&a);printf("Nhap b = ");scanf("%d",&b);if(a<b) {c=a;a=b;b=c;};if(a==0||b==0) {printf("Bscnn : 0");goto ketthuc;}for(i=b;i<=a*b;i++)

if(i%a==0&&i%b==0) {printf("Bscnn : %d",i);goto ketthuc;};

ketthuc:getch();

}

Page 47

Page 49: đề cương tin

42. Nhập vào một mảng số thực gồm 10 phần tử. Tìm và hiển thị giá trị và chỉ số của phần tửlớn nhất.#include<conio.h>#include<stdio.h>int a[100],i,max,n,c;main(){

printf("Nhap n = ");scanf("%d",&n);for(i=0;i<n;i++){

printf("Nhap so thu %d : ",i+1);scanf("%d",&a[i]);

if(i==0) max=a[i];if(a[i]>=max) {max=a[i];c=i;};

};printf("Phan tu lon nhat :\n\tGia tri: %d\n\tChi so:

%d",a[c],c+1);getch();

}43. Nhập vào một mảng n số nguyên (tối đa 20 phần tử) với n nhập vào từ bàn phím. Sắp xếp lại mảng theo sự tăng dần của các giá trị phần tử.#include<conio.h>#include<stdio.h>#include<stdlib.h>int a[20],i,n,j,c;

main(){

nhap:system("cls");printf("Nhap n = ");scanf("%d",&n);if(n>20) goto nhap;for(i=0;i<n;i++) {printf("Nhap so thu %d :

",i+1);scanf("%d",&a[i]);};for(i=0;i<n-1;i++)

Page 48

Page 50: đề cương tin

{for(j=i+1;j<n;j++)

{if(a[i]>a[j]) {c=a[i];a[i]=a[j];a[j]=c;};

};};printf("\n%d",a[0]);for(i=1;i<n;i++) printf("->%d",a[i]);getch();

}44. Nhập một xâu kí tự từ bàn phím gồm các từ, ví dụ "Thu do Ha Noi". Lập chương trìnhđể bỏ bớt các dấu trống giữa các từ sao cho các từ chỉ cách nhau ít nhất một dấu trống.#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>main(){

char a[100];int i,j=0;gets(a);for(i=0;i<strlen(a);i++){

if(a[i]==32) continue;printf("%c",a[i]);

};getch();

}45. Viết chương trình nhập vào từ bàn phím họ và tên của một người, sau đó in phần tên ramàn hình. Ví dụ: "Tran Hung Dao" thì in ra "Dao".#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>main()

Page 49

Page 51: đề cương tin

{char a[100];int i,j=0,c;gets(a);for(i=strlen(a)-1;i>=0;i--){

if(a[i]==32) break;c=i;

};for(i=c;i<strlen(a);i++) printf("%c",a[i]);getch();

}46. Nhập vào một câu, kết thúc bằng dấu chấm. In ra câu đó có bao nhiêu từ.#include<conio.h>#include<stdio.h>#include<string.h>main(){

char a[100];int i,j=0,c=0;fflush(stdin);gets(a);for(i=0;i<strlen(a);i++){

if(a[i]==32) c++;if(a[i]==42) break;

};printf("%d",c+1);getch();

}47. Yêu cầu người dùng nhập vào một số nguyên dương n với 5 ≤ n ≤ 20 (có kiểm tra tínhhợp lệ của giá trị được nhập vào, nếu giá trị n nhập vào không thỏa mãn điều kiện thì yêucầu nhập lại)#include<conio.h>#include<stdio.h>

Page 50

Page 52: đề cương tin

#include<windows.h>#include<stdlib.h>main(){

int n;nhap:system("cls");printf("Nhap so nguyen n ( voi 5 <= n <= 20 ) :

");scanf("%d",&n);if(n<5||n>20) {printf("Nhap sai !");Sleep(3000);goto

nhap;};getch();

}48. Viết hàm tìm ước số chung lớn nhất uscln(int x, int y) và bội số chung nhỏ nhất bscnn(int x, int y) của hai số.#include<conio.h>#include<stdio.h>#include<math.h>int a,b;int ucln(int a,int b){

while(a!=b){

if(a>b) a=a-b;else b=b-a;

};return a;

}int bcnn(int a,int b){

return a*b/ucln(a,b);};main(){

printf("Nhap a : ");scanf("%d",&a);printf("Nhap b : ");scanf("%d",&b);printf("Ket qua !\nUcln = %d\n",ucln(a,b));

Page 51

Page 53: đề cương tin

printf("Bcnn = %d",bcnn(a,b));getch();

}49. Lập hàm giải phương trình bậc 2 ptb2(float a, float b, float c, float *x1, float *x2), trongđó a,b,c là các hệ số của phương trình. Hàm nhận giá trị 0 nếu phương trình vô nghiệm,giá trị 1 nếu phương trình có nghiệm kép (chứa trong *x1), giá trị 2 nếu phương trình có 2nghiệm (chứa trong *x1 và *x2), giá trị 3 nếu phương trình có vô số nghiệm.#include<conio.h>#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<math.h>float a,b,c,x1,x2;int ptb2(float a,float b,float c,float x1,float x2){

if(b*b-4*a*c<0) return 0;if(b*b-4*a*c==0) {x1=-b/(2*a); return 1;};if(b*b-4*a*c>0) {x1=(-b+float(sqrt(double(b*b-

4*a*c))))/(2*a);x2=(-b-float(sqrt(double(b*b-4*a*c))))/(2*a); return 2;};}main(){

nhap:system("cls");printf("Nhap a : ");scanf("%f",&a);if(a==0)

{printf("Nhap sai !"); Sleep(2000);goto nhap;};

printf("Nhap b : ");scanf("%f",&b);printf("Nhap c : ");scanf("%f",&c);

Page 52

Page 54: đề cương tin

printf("Ket qua : %d",ptb2(a,b,c,x1,x2));getch();

}50. Đa thức cấp n được tính theo công thức:f(x) = an*xn+ an-1*xn-1 +... + a1*x1 + a0*x0

Lập hàm đa thức f(float a[], int n, float x) để tính giá trị của đa thức.#include<conio.h>#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<math.h>int i,n,x;float gt=0,a[100];float giatri(float m[],int n,float p){

for(i=0;i<=n;i++){

gt+=a[i]*float(pow(double(x),double(i)));}return gt;

}main(){

nhap:system("cls");printf("Nhap N : ");scanf("%d",&n);if(n<1)

{printf("Nhap sai !"); Sleep(2000);goto nhap;};

printf("Nhap x : ");scanf("%d",&x);for(i=0;i<=n;i++){

printf("Nhap a[%d] : ",i);scanf("%f",&a[i]);

Page 53

Page 55: đề cương tin

};printf("Ket qua :f(x)= %0.3f",giatri(a,n,x));getch();

}

Page 54