Bài thực hành số 5 Tin học đại cương | Đại học Bách khoa Hà Nội

Bài thực hành số 5 Tin học đại cương của Đại học Bách Khoa Hà Nội với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!

[Tin học đại cương] Bài thực
hành số 5
Nằm trong chuỗi bài viết về thực hành tin học đại cương, đây là bài hướng dẫn thực hành cho bài
thực hành số 5 trong quyển Bài thực hành Tin học đại cương.
Đây là bài thực hành tập trung vào nội dung: Mảng, Xâu ký tự, Cấu trúc
B. BÀI TẬP Ở NHÀ
Bài 5.1
Lập chương trình thực hiện các công việc sau:
1. Nhập một dãy n số bất kỳ từ bàn phím, với n<10 nhập từ bàn phím.
2. Đưa dãy số vừa nhập ra màn hình.
3. Tính: Trung bình cộng các số âm, Tổng các số dương. Đếm các số 0 trong dãy.
4. Nhập một số x bất kì từ bàn phím. In ra vị trí các số trong dãy có giá trị bằng x.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
int main(){
int n;
printf("\n Nhap gia tri n (n<10): ");
scanf("%d",&n);
float A[n];
for(int i=0; i<n; i++){
o printf("\n Nhap phan tu thu %d la: ",i);
o scanf("%f",&A[i]);
}
printf("\n => Day so vua nhap la:");
int j=0, dem_am=0, dem_0=0;
float tongam=0, tongduong=0;
while(j<n){
o printf(" %f",A[j]);
o if(A[j]<0) {
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
tongam += A[j];
dem_am++;
o }else if(A[j]>0){
tongduong += A[j];
o }else{
dem_0++;
o }
o j++;
}
if(dem_am!=0){
o printf("\n Trung binh cong cac so am: %f",tongam/dem_am);
}else{
o printf("\n Day khong chua so am");
}
printf("\n Tong cac so duong: %f", tongduong);
printf("\n So luong so 0: %d",dem_0);
float x;
printf("\n Nhap gia tri muon tim x = ");
scanf("%f",&x);
printf("\n Vi tri cac so trong day co gia tri %f la:",x);
int flag = 1;
for(int k=0; k<n; k++){
o if(A[k]==x){
flag = 0;
printf(" %d",k);
o }
}
if(flag == 1){
o printf(" Khong co!",x);
}
getch();
return 0;
}
Bài 5.2
Lập chương trình thực hiện các công việc sau:
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
1. Nhập một dãy n số bất kỳ vào 1 mảng với n<=10 nhập từ bàn phím.
2. Sắp xếp dãy số đã nhập theo thứ tự tăng dần, đưa kết quả ra màn hình.
3. Sắp xếp dãy số đã nhập theo thứ tự giảm dần, đưa kết quả ra màn hình.
4. Sắp xếp dãy số giảm dần theo giá trị tuyệt đối, đưa kết quả ra màn hình.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(){
int n;
printf("\n Nhap gia tri (<= 10) cua n = ");
scanf("%d",&n);
float A[n];
for(int i=0; i<n; i++){
o printf("\n Nhap gia tri cho phan tu thu %d: ",i);
o scanf("%f",&A[i]);
}
//Thuat toan sap xep trong bai deu dung Selection-sort
//Sap xep tang dan
for(int i=0;i<n-1;i++){
o for(int j=i+1;j<n;j++){
if(A[i]>A[j]){
float temp = A[i];
A[i]=A[j];
A[j]=temp;
}
o }
}
printf("\n Day theo thu tu tang dan: ");
int k=0;
while(k<n){
o printf(" %f",A[k]);
o k++;
}
//Sap xep giam dan
for(int i=0;i<n-1;i++){
o for(int j=i+1;j<n;j++){
if(A[i]<A[j]){
float temp = A[i];
A[i]=A[j];
A[j]=temp;
}
o }
}
printf("\n Day theo thu tu giam dan: ");
int m=0;
while(m<n){
o printf(" %f",A[m]);
o m++;
}
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//Sap xep giam dan theo tri tuyet doi
for(int i=0;i<n-1;i++){
o for(int j=i+1;j<n;j++){
if(fabs(A[i])<fabs(A[j])){
float temp = A[i];
A[i]=A[j];
A[j]=temp;
}
o }
}
printf("\n Day theo thu tu tang dan: ");
int t=0;
while(t<n){
o printf(" %f",A[t]);
o t++;
}
getch();
return 0;
}
Bài 5.3
Lập chương trình thực hiện công việc sau:
1. Nhập một dãy n số bất kỳ từ bàn phím vào mảng a với n<=10 nhập từ bàn phím
2. Sao chép tất cả các số dương trong mảng a sang mảng b, tất cả các số âm sang mảng c
3. Đưa các mảng b, c ra màn hình
1
2
3
4
5
6
7
#include <stdio.h>
#include <conio.h>
void in_ket_qua(float A[], int length_A);
int main(){
int n;
printf("\n Nhap gia tri (<=10) cua n = ");
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
scanf("%d",&n);
float a[n], b[n], c[n];
for(int i=0;i<n;i++){
o printf("\n Nhap gia tri phan tu %d: ",i);
o scanf("%f",&a[i]);
}
int dem_duong=0, dem_am=0;
for(int i=0; i<n; i++){
o if(a[i]>0){
b[dem_duong]=a[i];
dem_duong++;
o }else if(a[i]<0){
c[dem_am]=a[i];
dem_am++;
o }
}
printf("\n Mang cac so duong: ");
in_ket_qua(b,dem_duong);
printf("\n Mang cac so am: ");
in_ket_qua(c,dem_am);
getch();
return 0;
}
void in_ket_qua(float A[], int length_A){
if(length_A<=0){
o printf("Mang la rong");
}else{
o for(int i=0; i<length_A; i++){
printf(" %f",A[i]);
o }
}
}
Bài 5.4
Dùng mảng các xâu. Khai báo char dslop[10][30]. Không dùng cấu trúc – Structure
Lập chương trình thực hiện các công việc sau:
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
1. Nhập vào danh sách tên các học sinh của một lớp, với số học sinh n<=10 nhập từ bàn
phím.
2. Sắp xếp danh sách lớp theo tứ tự ABC
3. Đưa danh sách đã xếp ra màn hình.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
char dslop[10][30];
int n;
printf("\n Nhap vao so luong hoc sinh trong lop (<= 10) n = ");
scanf("%d", &n);
int i=0;
while(i<n){
o printf("\n Nhap ten cho hoc sinh thu %d: ",i);
o fflush(stdin);
o gets(dslop[i]);
o i++;
}
for(int j=0;j<n-1;j++){
o for(int k=j+1;k<n;k++){
if(strcmp(dslop[j],dslop[k])>0){
char s[30];
strcpy(s,dslop[j]);
strcpy(dslop[j],dslop[k]);
strcpy(dslop[k], s);
}
o }
}
printf("\n Danh sach lop hoc sau sap xep theo thu tu ABC \n");
for(int i=0;i<n;i++){
o printf("%d. ",i+1);
o puts(dslop[i]);
}
getch();
return 0;
}
Bài 5.5
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
Hãy định nghĩa kiểu:
struct Hoso{
char HoTen[40];
float Diem;
char Loai[10];
};
Viết chương trình nhập vào họ-tên, điểm của n học sinh. Xếp loại văn hóa theo cách sau:
Điểm Xếp loại
9, 10 Gioi
7, 8 Kha
5, 6 Trung binh
dưới 5 Khong Dat
Sau đó, in danh sách theo định dạng cho trước.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct hoso_struct{
char HoTen[40];
float Diem;
char Loai[10];
} Hoso;
int main(){
int n;
printf("\n Nhap so luong hoc sinh trong lop n = ");
scanf("%d",&n);
Hoso hoso[n];
for(int i=0;i<n;i++){
o float diem;
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
o printf("%d. ",i);
o printf("\n Nhap ten cua hoc sinh: ",i+1);
o fflush(stdin); gets(hoso[i].HoTen);
o printf("\n Nhap diem: ");
o scanf("%f",&diem);
o hoso[i].Diem = diem;
o if(diem>=9 && diem<=10){
strcpy(hoso[i].Loai,"Gioi");
o }else if(diem>=7 && diem<9){
strcpy(hoso[i].Loai,"Kha");
o }else if(diem>=5 && diem<7){
strcpy(hoso[i].Loai,"Trung binh");
o }else{
strcpy(hoso[i].Loai,"Khong dat");
o }
}
printf("%-40s %-5s %-15s\n","HO VA TEN","DIEM","XEP LOAI");
for(int i=0;i<n;i++){
o printf("%-40s %-2.2f %-15s\n",hoso[i].HoTen, hoso[i].Diem, hoso[i].Loai);
}
getch();
return 0;
}
C. BÀI TẬP TẠI
PHÒNG MÁY
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
Bài 5.6
Viết chương trình nhập vào hai ma trận A và B có cấp m, n. In ra hai ma trận ra màn hình. Tính
ma trận tổng C = A+B và in kết quả ra màn hình.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <conio.h>
int main(){
int m, n;
printf("\n Nhap kich thuoc cua ma tran:");
printf("\n So hang m = "); scanf("%d",&m);
printf("\n So cot n = "); scanf("%d",&n);
float A[m][n], B[m][n];
printf("\n Nhap cac phan tu cua ma tran A\n");
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
o }
}
printf("\n Nhap cac phan tu cua ma tran B\n");
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("B[%d][%d] = ",i,j);
scanf("%f",&B[i][j]);
o }
}
//tinh tong C = A+B
float C[m][n];
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
C[i][j]=A[i][j]+B[i][j];
o }
}
//in ket qua
printf("Ma tran A:\n");
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("%f ", A[i][j]);
o }
o printf("\n");
}
printf("Ma tran B:\n");
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("%f ", B[i][j]);
o }
o printf("\n");
}
printf("Ma tran C = A+B:\n");
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("%f ", C[i][j]);
o }
o printf("\n");
}
getch();
return 0;
}
Bài 5.7
Viết chương trình nhập vào hai ma trận A có cấp m, k và ma trận B có cấp k, n. In hai ma trận ra
màn hình. Tính ma trận tích C = A*B và in kết quả ra màn hình.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
int main(){
int m, k, n;
printf("\n Nhap kich thuoc cua ma tran A, B:");
printf("\n So hang m = "); scanf("%d",&m);
printf("\n So cot (cot A = hang B) k = "); scanf("%d",&k);
printf("\n So cot n= "); scanf("%d",&n);
float A[m][k], B[k][n];
printf("\n Nhap cac phan tu cua ma tran A\n");
for(int i=0;i<m;i++){
o for(int j=0;j<k;j++){
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
o }
}
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
printf("\n Nhap cac phan tu cua ma tran B\n");
for(int i=0;i<k;i++){
o for(int j=0;j<n;j++){
printf("B[%d][%d] = ",i,j);
scanf("%f",&B[i][j]);
o }
}
//tinh tong C = A*B
float C[m][n];
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
float temp=0;
for(int t=0;t<k;t++){
temp +=A[i][t]*B[t][j];
}
C[i][j]=temp;
o }
}
//in ket qua
printf("Ma tran A:\n");
for(int i=0;i<m;i++){
o for(int j=0;j<k;j++){
printf("%f ", A[i][j]);
o }
o printf("\n");
}
printf("Ma tran B:\n");
for(int i=0;i<k;i++){
o for(int j=0;j<n;j++){
printf("%f ", B[i][j]);
o }
o printf("\n");
}
printf("Ma tran C = A*B:\n");
for(int i=0;i<m;i++){
o for(int j=0;j<n;j++){
printf("%f ", C[i][j]);
o }
o printf("\n");
}
getch();
return 0;
}
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
63
64
65
66
Bài 5.8
Xem một phân số là cấu trúc có 2 trường là tử số và mẫu số. Hãy viết chương trình thực hiện các
phép tính cộng, trừ, nhân, chi hai phân số. (Các kết quả phải tối giản)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <conio.h>
#include <math.h>
typedef struct phanso_struct{
int TuSo;
int MauSo;
} PhanSo;
// Khai bao ham
int bcnn(int a, int b); // Ham tim BCNN
int ucln(int a, int b); // Ham tim UCLN
PhanSo toi_gian(int tuso, int mauso); // Ham toi gian phan so
void in_ket_qua(PhanSo p); // Ham in ket qua ra man hinh
int main(){
PhanSo ps1, ps2;
printf("\n Nhap gia tri cho phan so thu nhat:");
printf("\n Tu so: "); scanf("%d",&ps1.TuSo);
printf("\n Mau so: "); scanf("%d",&ps1.MauSo);
printf("\n Nhap gia tri cho phan so thu hai:");
printf("\n Tu so: "); scanf("%d",&ps2.TuSo);
printf("\n Mau so: "); scanf("%d",&ps2.MauSo);
in_ket_qua(ps1);
in_ket_qua(ps2);
//Phep tinh cong 2 phan so
int mTong = bcnn(ps1.MauSo, ps2.MauSo);
int tTong = ps1.TuSo*(mTong/ps1.MauSo)+ps2.TuSo*(mTong/ps2.MauSo);
PhanSo psTong = toi_gian(tTong, mTong);
//Phep tinh hieu 2 phan so
int mHieu = bcnn(ps1.MauSo, ps2.MauSo);
int tHieu = ps1.TuSo*(mHieu/ps1.MauSo)-ps2.TuSo*(mHieu/ps2.MauSo);
PhanSo psHieu = toi_gian(tHieu, mHieu);
//Phep tinh tich 2 phan so
int mTich = ps1.MauSo * ps2.MauSo;
int tTich = ps1.TuSo * ps2.TuSo;
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
PhanSo psTich = toi_gian(tTich, mTich);
//Phep tinhs thuong 2 phan so
int mThuong = ps1.MauSo * ps2.TuSo;
int tThuong = ps1.TuSo * ps2.MauSo;
PhanSo psThuong = toi_gian(tThuong, mThuong);
printf("Tong: "); in_ket_qua(psTong);
printf("Hieu: "); in_ket_qua(psHieu);
printf("Tich: "); in_ket_qua(psTich);
printf("Thuong: "); in_ket_qua(psThuong);
getch();
return 0;
}
int ucln(int a, int b){
int abs_a = abs(a);
int abs_b = abs(b);
if(abs_a==0 || abs_b==0){
o return a+b;
}
while(abs_a!=abs_b){
o if(abs_a<abs_b){
abs_b=abs_b-abs_a;
o }else{
abs_a=abs_a-abs_b;
o }
}
return abs_a;
}
int bcnn(int a, int b){
return (a*b)/(ucln(a,b));
}
PhanSo toi_gian(int tuso, int mauso){
PhanSo ps;
int uc = ucln(tuso, mauso);
int t = tuso/uc;
int m = mauso/uc;
ps.TuSo = t;
ps.MauSo = m;
return ps;
}
void in_ket_qua(PhanSo p){
printf("\nTu so: %-d",p.TuSo);
printf("\nMau so: %-d\n\n",p.MauSo);
}
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
81
82
83
84
85
86
87
88
89
90
Bài 5.9
Lập chương trình thực hiện các công việc sau:
1. Nhập các xâu s1, s2.
2. Đưa ra màn hình giá trị strlen(s1), strlen(s2).
3. Thực hiện lệnh strcpy(s1, s2) sau đó đưa s1, s2 ra màn hình.
4. Đưa giá trị strcmp(s1, s2), strcmp(s2, s1) ra màn hình. Giải thích ý nghĩa của 2 giá trị
5. Thực hiện các lệnh strcat(s1, s2) sau đó đưa s1, s2 ra màn hình
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
char s1[20], s2[20];
char s11[20], s21[20];
char s12[20], s22[20];
printf("Nhap chuoi s1 = "); fflush(stdin);
gets(s1); strcpy(s11, s1); strcpy(s12, s1);
printf("Nhap chuoi s2 = "); fflush(stdin);
gets(s2); strcpy(s21, s2); strcpy(s22, s2);
printf("Do dai cua s1: %d\n",strlen(s1));
printf("Do dai cua s2: %d\n",strlen(s2));
strcpy(s11, s21);
printf("Sau khi thuc hien strcpy(s1, s2) co: s1 = %s, s2 = %s\n", s11, s21);
printf("strcmp(s1, s2) = %d, strcmp(s2, s1) = %d\n",strcmp(s1, s2), strcmp(s2, s1));
strcat(s12, s22);
printf("Sau khi thuc hien strcat(s1, s2) co: s1 = %s, s2 = %s", s12, s22);
getch();
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
24
25
26
27
28
return 0;
}
Bài 5.10
Viết chương trình nhập vào họ-tên của một người, cắt bỏ khoảng trắng bên phải, trái và khoảng
trắng không có nghĩa trong chuỗi. In ra màn hình họ-tên dưới dạng chữ thường và chữ hoa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
int main(){
char ho_ten[30];
printf("Nhap vao ho va ten: ");fflush(stdin);
gets(ho_ten);
// Bo khoang trang ben phai
while(1){
o if(ho_ten[0]==' '){
strcpy(ho_ten, ho_ten+1);
o }else{
break;
o }
}
// Bo khoang trang ben trai
while(1){
o int l = strlen(ho_ten)-1;
o if(ho_ten[l]==' '){
ho_ten[l]='\0';
o }else{
break;
o }
}
// Bo khoang trang khong co nghia o giua
int k=0, l = strlen(ho_ten);
while(k<l-1){
o if((ho_ten[k]==' ') && (ho_ten[k+1] == ' ')){
strcpy(ho_ten+k, ho_ten+k+1);
o }else{
k++;
o }
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
}
for(int m = 0; m<strlen(ho_ten);m++){
o ho_ten[m] = toupper(ho_ten[m]);
}
printf("Ho va ten:%s\n",ho_ten);
for(int m = 0; m<strlen(ho_ten);m++){
o ho_ten[m] = tolower(ho_ten[m]);
}
printf("Ho va ten:%s",ho_ten);
getch();
return 0;
}
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)
lOMoARcPSD|36442750
| 1/16

Preview text:

lOMoARcPSD|36442750
[Tin học đại cương] Bài thực hành số 5
Nằm trong chuỗi bài viết về thực hành tin học đại cương, đây là bài hướng dẫn thực hành cho bài
thực hành số 5 trong quyển Bài thực hành Tin học đại cương.
Đây là bài thực hành tập trung vào nội dung: Mảng, Xâu ký tự, Cấu trúc B. BÀI TẬP Ở NHÀ Bài 5.1
Lập chương trình thực hiện các công việc sau: 1.
Nhập một dãy n số bất kỳ từ bàn phím, với n<10 nhập từ bàn phím. 2.
Đưa dãy số vừa nhập ra màn hình. 3.
Tính: Trung bình cộng các số âm, Tổng các số dương. Đếm các số 0 trong dãy. 4.
Nhập một số x bất kì từ bàn phím. In ra vị trí các số trong dãy có giá trị bằng x. 1  #include 2  #include 3  int main(){  int n; 4 
printf("\n Nhap gia tri n (n<10): "); 5  scanf("%d",&n); 6  float A[n]; 7  for(int i=0; i8
o printf("\n Nhap phan tu thu %d la: ",i); 9 o scanf("%f",&A[i]);  } 10 11 
printf("\n => Day so vua nhap la:"); 12  int j=0, dem_am=0, dem_0=0; 13  float tongam=0, tongduong=0; 14  while(j15 o printf(" %f",A[j]); 16 17 o if(A[j]<0) {
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 18 19 20 21  tongam += A[j]; 22  dem_am++; 23 o }else if(A[j]>0){ 24  tongduong += A[j]; 25 o }else{ 26  dem_0++; o } 27 o j++; 28  } 29 30  if(dem_am!=0){ 31
o printf("\n Trung binh cong cac so am: %f",tongam/dem_am); 32  }else{ 33
o printf("\n Day khong chua so am"); 34  } 35 36 
printf("\n Tong cac so duong: %f", tongduong); 
printf("\n So luong so 0: %d",dem_0); 37 38  float x; 39 
printf("\n Nhap gia tri muon tim x = "); 40  scanf("%f",&x); 41 42 
printf("\n Vi tri cac so trong day co gia tri %f la:",x); 43  int flag = 1;  for(int k=0; k44 o if(A[k]==x){ 45  flag = 0; 46  printf(" %d",k); 47 o } 48  } 49  if(flag == 1){ 50 o printf(" Khong co!",x);  } 51 52  getch(); 53  return 0; 54  } 55 56 57 Bài 5.2
Lập chương trình thực hiện các công việc sau:
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 1.
Nhập một dãy n số bất kỳ vào 1 mảng với n<=10 nhập từ bàn phím. 2.
Sắp xếp dãy số đã nhập theo thứ tự tăng dần, đưa kết quả ra màn hình. 3.
Sắp xếp dãy số đã nhập theo thứ tự giảm dần, đưa kết quả ra màn hình. 4.
Sắp xếp dãy số giảm dần theo giá trị tuyệt đối, đưa kết quả ra màn hình. 1  #include 2  #include 3  #include  int main(){ 4  int n; 5 
printf("\n Nhap gia tri (<= 10) cua n = "); 6  scanf("%d",&n); 7 8  float A[n]; 9 
for(int i=0; io printf("\n Nhap gia tri cho phan tu thu %d: ",i); 10 o scanf("%f",&A[i]); 11  } 12 13 
//Thuat toan sap xep trong bai deu dung Selection-sort 14  //Sap xep tang dan 15  for(int i=0;i16 o for(int j=i+1;j17  if(A[i]>A[j]){  float temp = A[i]; 18  A[i]=A[j]; 19  A[j]=temp; 20  } 21 o } 22  } 
printf("\n Day theo thu tu tang dan: "); 23  int k=0; 24  while(k25 o printf(" %f",A[k]); 26 o k++; 27  } 28 29  //Sap xep giam dan 30  for(int i=0;io 31 for(int j=i+1;j if(A[i]32  float temp = A[i]; 33  A[i]=A[j]; 34  A[j]=temp; 35  } 36 o }  } 37 
printf("\n Day theo thu tu giam dan: "); 38  int m=0; 39  while(m40 o printf(" %f",A[m]); 41 o m++;  }
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 42 43 44 45 46 47 48 
//Sap xep giam dan theo tri tuyet doi 49  for(int i=0;i50 o for(int j=i+1;j if(fabs(A[i])51  float temp = A[i]; 52  A[i]=A[j]; 53  A[j]=temp; 54  } 55 o } 56  } 
printf("\n Day theo thu tu tang dan: "); 57  int t=0; 58  while(t59 o printf(" %f",A[t]); 60 o t++; 61  } 62 63  getch();  return 0; 64  } 65 66 67 68 69 Bài 5.3
Lập chương trình thực hiện công việc sau: 1.
Nhập một dãy n số bất kỳ từ bàn phím vào mảng a với n<=10 nhập từ bàn phím 2.
Sao chép tất cả các số dương trong mảng a sang mảng b, tất cả các số âm sang mảng c 3.
Đưa các mảng b, c ra màn hình 1  #include 2  #include 3  4 
void in_ket_qua(float A[], int length_A); 5  int main(){ 6  int n; 7 
printf("\n Nhap gia tri (<=10) cua n = ");
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 8 9 10 11  scanf("%d",&n);  float a[n], b[n], c[n]; 12 13  for(int i=0;i14
o printf("\n Nhap gia tri phan tu %d: ",i); 15 o scanf("%f",&a[i]); 16  } 17  int dem_duong=0, dem_am=0; 18  for(int i=0; i19 o if(a[i]>0){ 20  b[dem_duong]=a[i];  dem_duong++; 21 o }else if(a[i]<0){ 22  c[dem_am]=a[i]; 23  dem_am++; 24 o } 25  } 26 27 
printf("\n Mang cac so duong: ");  in_ket_qua(b,dem_duong); 28  printf("\n Mang cac so am: "); 29  in_ket_qua(c,dem_am); 30 31  getch(); 32  return 0; 33  } 34 
void in_ket_qua(float A[], int length_A){ 35  if(length_A<=0){ 36 o printf("Mang la rong"); 37  }else{ 38 o for(int i=0; i39  printf(" %f",A[i]); 40 o } 41  }  } 42 43 44 Bài 5.4
Dùng mảng các xâu. Khai báo char dslop[10][30]. Không dùng cấu trúc – Structure
Lập chương trình thực hiện các công việc sau:
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 1.
Nhập vào danh sách tên các học sinh của một lớp, với số học sinh n<=10 nhập từ bàn phím. 2.
Sắp xếp danh sách lớp theo tứ tự ABC 3.
Đưa danh sách đã xếp ra màn hình. 1 2 3  #include 4  #include 5  #include 6  int main(){  char dslop[10][30]; 7  int n; 8 
printf("\n Nhap vao so luong hoc sinh trong lop (<= 10) n = "); 9  scanf("%d", &n); 10  int i=0; 11  while(i12
o printf("\n Nhap ten cho hoc sinh thu %d: ",i); o 13 fflush(stdin); o 14 gets(dslop[i]); o i++; 15  } 16 17  for(int j=0;j18 o for(int k=j+1;k19 
if(strcmp(dslop[j],dslop[k])>0){ 20  char s[30]; 21  strcpy(s,dslop[j]);  strcpy(dslop[j],dslop[k]); 22  strcpy(dslop[k], s); 23  } 24 o } 25  } 26 27 
printf("\n Danh sach lop hoc sau sap xep theo thu tu ABC \n"); 28  for(int i=0;io 29 printf("%d. ",i+1); o puts(dslop[i]); 30  } 31 32  getch(); 33  return 0; 34  } 35 36 Bài 5.5
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 Hãy định nghĩa kiểu: struct Hoso{ char HoTen[40]; float Diem; char Loai[10]; };
Viết chương trình nhập vào họ-tên, điểm của n học sinh. Xếp loại văn hóa theo cách sau: Điểm Xếp loại 9, 10 Gioi 7, 8 Kha 5, 6 Trung binh dưới 5 Khong Dat
Sau đó, in danh sách theo định dạng cho trước. 1  #include 2  #include 3  #include 4   typedef struct hoso_struct{ 5  char HoTen[40]; 6  float Diem; 7  char Loai[10]; 8  } Hoso; 9 10  int main(){  int n; 11 
printf("\n Nhap so luong hoc sinh trong lop n = "); 12  scanf("%d",&n); 13 14  Hoso hoso[n]; 15  for(int i=0;io float diem;
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 16 17 18 19 o printf("%d. ",i); 20
o printf("\n Nhap ten cua hoc sinh: ",i+1); 21
o fflush(stdin); gets(hoso[i].HoTen); 22 o printf("\n Nhap diem: "); 23 o scanf("%f",&diem); 24 o hoso[i].Diem = diem; o 25
if(diem>=9 && diem<=10){  strcpy(hoso[i].Loai,"Gioi"); 26
o }else if(diem>=7 && diem<9){ 27  strcpy(hoso[i].Loai,"Kha"); 28
o }else if(diem>=5 && diem<7){ 29 
strcpy(hoso[i].Loai,"Trung binh"); 30 o }else{ 31 
strcpy(hoso[i].Loai,"Khong dat"); 32 o } 33  } 34 
printf("%-40s %-5s %-15s\n","HO VA TEN","DIEM","XEP LOAI"); 35  for(int i=0;i36
o printf("%-40s %-2.2f %-15s\n",hoso[i].HoTen, hoso[i].Diem, hoso[i].Loai); 37  } 38 39  getch(); 40  return 0; 41  } 42 43 C. BÀI TẬP TẠI PHÒNG MÁY
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 Bài 5.6
Viết chương trình nhập vào hai ma trận A và B có cấp m, n. In ra hai ma trận ra màn hình. Tính
ma trận tổng C = A+B và in kết quả ra màn hình. 1  #include 2  #include 3  4  int main(){  int m, n; 5 
printf("\n Nhap kich thuoc cua ma tran:"); 6 
printf("\n So hang m = "); scanf("%d",&m); 7 
printf("\n So cot n = "); scanf("%d",&n); 8 9  float A[m][n], B[m][n]; 10 
printf("\n Nhap cac phan tu cua ma tran A\n");  for(int i=0;i11 o for(int j=0;j12  printf("A[%d][%d] = ",i,j); 13  scanf("%f",&A[i][j]); 14 o } 15  } 16 17 
printf("\n Nhap cac phan tu cua ma tran B\n");  for(int i=0;i18 o for(int j=0;j19  printf("B[%d][%d] = ",i,j); 20  scanf("%f",&B[i][j]); 21 o } 22  } 23 24  //tinh tong C = A+B  float C[m][n]; 25  for(int i=0;i26 o for(int j=0;j27  C[i][j]=A[i][j]+B[i][j]; 28 o } 29  } 30 31  //in ket qua 32  printf("Ma tran A:\n");  for(int i=0;i33 o for(int j=0;j34  printf("%f ", A[i][j]); 35 o } 36 o printf("\n"); 37  } 38 39  printf("Ma tran B:\n");
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 40 41 42 43  for(int i=0;i44 o for(int j=0;j45  printf("%f ", B[i][j]); 46 o } 47 o printf("\n"); 48  } 49  printf("Ma tran C = A+B:\n"); 50  for(int i=0;i51 o for(int j=0;j printf("%f ", C[i][j]); 52 o } 53 o printf("\n"); 54  } 55 56  getch(); 57  return 0; 58  } 59 60 61 Bài 5.7
Viết chương trình nhập vào hai ma trận A có cấp m, k và ma trận B có cấp k, n. In hai ma trận ra
màn hình. Tính ma trận tích C = A*B và in kết quả ra màn hình. 1  #include 2  #include 3  4  int main(){  int m, k, n; 5 
printf("\n Nhap kich thuoc cua ma tran A, B:"); 6 
printf("\n So hang m = "); scanf("%d",&m); 7 
printf("\n So cot (cot A = hang B) k = "); scanf("%d",&k); 8 
printf("\n So cot n= "); scanf("%d",&n); 9 10  float A[m][k], B[k][n]; 
printf("\n Nhap cac phan tu cua ma tran A\n"); 11  for(int i=0;i12 o for(int j=0;j13  printf("A[%d][%d] = ",i,j); 14  scanf("%f",&A[i][j]); 15 o } 16  }
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 17 18 
printf("\n Nhap cac phan tu cua ma tran B\n"); 19  for(int i=0;i20 o for(int j=0;j21  printf("B[%d][%d] = ",i,j);  scanf("%f",&B[i][j]); 22 o } 23  } 24 25  //tinh tong C = A*B 26  float C[m][n]; 27  for(int i=0;i28 o for(int j=0;j float temp=0; 29  for(int t=0;t30  temp +=A[i][t]*B[t][j]; 31  } 32  C[i][j]=temp; 33 o } 34  } 35  //in ket qua 36  printf("Ma tran A:\n"); 37  for(int i=0;i38 o for(int j=0;j39  printf("%f ", A[i][j]); 40 o } 41 o printf("\n"); 42  } 43  printf("Ma tran B:\n"); 44  for(int i=0;i45 o for(int j=0;j46  printf("%f ", B[i][j]); 47 o } 48 o printf("\n"); 49  } 50  printf("Ma tran C = A*B:\n"); 51  for(int i=0;io for(int j=0;j52  printf("%f ", C[i][j]); 53 o } 54 o printf("\n"); 55  } 56 57  getch(); 58  return 0; 59  } 60 61 62
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 63 64 65 66 Bài 5.8
Xem một phân số là cấu trúc có 2 trường là tử số và mẫu số. Hãy viết chương trình thực hiện các
phép tính cộng, trừ, nhân, chi hai phân số. (Các kết quả phải tối giản) 1  #include 2  #include 3  #include 4   typedef struct phanso_struct{ 5  int TuSo; 6  int MauSo; 7  } PhanSo; 8 9  // Khai bao ham 10 
int bcnn(int a, int b); // Ham tim BCNN 
int ucln(int a, int b); // Ham tim UCLN 11 
PhanSo toi_gian(int tuso, int mauso); // Ham toi gian phan so 12 
void in_ket_qua(PhanSo p); // Ham in ket qua ra man hinh 13 14  int main(){ 15  PhanSo ps1, ps2; 
printf("\n Nhap gia tri cho phan so thu nhat:"); 16 
printf("\n Tu so: "); scanf("%d",&ps1.TuSo); 17 
printf("\n Mau so: "); scanf("%d",&ps1.MauSo); 18 
printf("\n Nhap gia tri cho phan so thu hai:"); 19 
printf("\n Tu so: "); scanf("%d",&ps2.TuSo); 20 
printf("\n Mau so: "); scanf("%d",&ps2.MauSo); 21  in_ket_qua(ps1); 22  in_ket_qua(ps2); 23 24  //Phep tinh cong 2 phan so 25 
int mTong = bcnn(ps1.MauSo, ps2.MauSo); 26 
int tTong = ps1.TuSo*(mTong/ps1.MauSo)+ps2.TuSo*(mTong/ps2.MauSo); 
PhanSo psTong = toi_gian(tTong, mTong); 27 28  //Phep tinh hieu 2 phan so 29 
int mHieu = bcnn(ps1.MauSo, ps2.MauSo); 30 
int tHieu = ps1.TuSo*(mHieu/ps1.MauSo)-ps2.TuSo*(mHieu/ps2.MauSo); 31 
PhanSo psHieu = toi_gian(tHieu, mHieu); 32 33  //Phep tinh tich 2 phan so 
int mTich = ps1.MauSo * ps2.MauSo; 34 
int tTich = ps1.TuSo * ps2.TuSo;
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 35 
PhanSo psTich = toi_gian(tTich, mTich); 36 37  //Phep tinhs thuong 2 phan so 38 
int mThuong = ps1.MauSo * ps2.TuSo; 
int tThuong = ps1.TuSo * ps2.MauSo; 39 
PhanSo psThuong = toi_gian(tThuong, mThuong); 40 41 
printf("Tong: "); in_ket_qua(psTong); 42 
printf("Hieu: "); in_ket_qua(psHieu); 43 
printf("Tich: "); in_ket_qua(psTich); 44 
printf("Thuong: "); in_ket_qua(psThuong); 45  getch(); 46  return 0; 47  } 48 49  int ucln(int a, int b){ 50  int abs_a = abs(a);  int abs_b = abs(b); 51  if(abs_a==0 || abs_b==0){ 52 o return a+b; 53  } 54  while(abs_a!=abs_b){ 55 o if(abs_a56  abs_b=abs_b-abs_a; 57 o }else{ 58  abs_a=abs_a-abs_b; o } 59  } 60  return abs_a; 61  } 62 63  int bcnn(int a, int b){ 64  return (a*b)/(ucln(a,b));  } 65 66 
PhanSo toi_gian(int tuso, int mauso){ 67  PhanSo ps; 68  int uc = ucln(tuso, mauso); 69  int t = tuso/uc; 70  int m = mauso/uc;  ps.TuSo = t; 71  ps.MauSo = m; 72  return ps; 73  } 74 75  void in_ket_qua(PhanSo p){  printf("\nTu so: %-d",p.TuSo); 76 
printf("\nMau so: %-d\n\n",p.MauSo); 77  } 78 79 80
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 81 82 83 84 85 86 87 88 89 90 Bài 5.9
Lập chương trình thực hiện các công việc sau: 1.
Nhập các xâu s1, s2. 2.
Đưa ra màn hình giá trị strlen(s1), strlen(s2). 3.
Thực hiện lệnh strcpy(s1, s2) sau đó đưa s1, s2 ra màn hình. 4.
Đưa giá trị strcmp(s1, s2), strcmp(s2, s1) ra màn hình. Giải thích ý nghĩa của 2 giá trị 5.
Thực hiện các lệnh strcat(s1, s2) sau đó đưa s1, s2 ra màn hình 1  #include 2  #include 3  #include 4   int main(){ 5  char s1[20], s2[20]; 6  char s11[20], s21[20]; 7  char s12[20], s22[20]; 8 9 
printf("Nhap chuoi s1 = "); fflush(stdin); 10 
gets(s1); strcpy(s11, s1); strcpy(s12, s1); 
printf("Nhap chuoi s2 = "); fflush(stdin); 11 
gets(s2); strcpy(s21, s2); strcpy(s22, s2); 12 13 
printf("Do dai cua s1: %d\n",strlen(s1)); 14 
printf("Do dai cua s2: %d\n",strlen(s2)); 15 16  strcpy(s11, s21); 
printf("Sau khi thuc hien strcpy(s1, s2) co: s1 = %s, s2 = %s\n", s11, s21); 17 18 
printf("strcmp(s1, s2) = %d, strcmp(s2, s1) = %d\n",strcmp(s1, s2), strcmp(s2, s1)); 19 20  strcat(s12, s22); 21 
printf("Sau khi thuc hien strcat(s1, s2) co: s1 = %s, s2 = %s", s12, s22); 22 23  getch();
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 24 25 26  return 0;  } 27 28 Bài 5.10
Viết chương trình nhập vào họ-tên của một người, cắt bỏ khoảng trắng bên phải, trái và khoảng
trắng không có nghĩa trong chuỗi. In ra màn hình họ-tên dưới dạng chữ thường và chữ hoa. 1  #include 2  #include 3  #include  #include 4  5  int main(){ 6  char ho_ten[30]; 7 8 
printf("Nhap vao ho va ten: ");fflush(stdin); 9  gets(ho_ten); 10 11  // Bo khoang trang ben phai  while(1){ 12 o if(ho_ten[0]==' '){ 13  strcpy(ho_ten, ho_ten+1); 14 o }else{ 15  break; 16 o } 17  } 18  // Bo khoang trang ben trai  while(1){ 19 o int l = strlen(ho_ten)-1; 20 o if(ho_ten[l]==' '){ 21  ho_ten[l]='\0'; 22 o }else{ 23  break; 24 o } 25  } 26 27 
// Bo khoang trang khong co nghia o giua  int k=0, l = strlen(ho_ten); 28  while(k29
o if((ho_ten[k]==' ') && (ho_ten[k+1] == ' ')){ 30  strcpy(ho_ten+k, ho_ten+k+1); 31 o }else{ 32  k++; 33 o }
Downloaded by v?n ti?n Lê (vantienle525@gmail.com) lOMoARcPSD|36442750 34 35 36 37  } 38 39  for(int m = 0; m40
o ho_ten[m] = toupper(ho_ten[m]);  } 41 
printf("Ho va ten:%s\n",ho_ten); 42 43  for(int m = 0; m44
o ho_ten[m] = tolower(ho_ten[m]); 45  } 46  printf("Ho va ten:%s",ho_ten); 47 48  getch();  return 0; 49  } 50 51 52
Downloaded by v?n ti?n Lê (vantienle525@gmail.com)