Bài 1:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 100
a)
void hienThiMang(int a[], int n) {
printf("Mang da nhap: ");
printf("%d ", a[i]);
printf("\n");
}
b)
void tongMang(int a[], int n) {
int tong = 0;
tong += a[i];
printf("Tong cac phan tu: %d\n", tong);
}
c)
void maxMin(int a[], int n) {
int max = a[0], min = a[0], imax = 0, imin = 0;
for (int i = 1; i < n; i++) {
if (a[i] > max) {
max = a[i];
imax = i;
}
if (a[i] < min) {
min = a[i];
imin = i;
}
}
printf("Max: %d (chi so %d)\n", max, imax);
printf("Min: %d (chi so %d)\n", min, imin);
}
d)
void sapXepTangDan(int a[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (a[i] > a[j]) {
int tmp = a[i]; a[i] = a[j]; a[j] = tmp;
}
printf("Mang sau khi sap xep tang dan: ");
hienThiMang(a, n);
}
e)
void demKhacNhau(int a[], int n) {
int dem = 0;
for (int i = 0; i < n; i++) {
int khac = 1;
for (int j = 0; j < i; j++)
if (a[i] == a[j]) {
khac = 0;
break;
}
if (khac) dem++;
}
printf("So phan tu khac nhau: %d\n", dem);
}
f)
void tachChanLe(int a[], int n) {
int chan[MAX], le[MAX], c = 0, l = 0;
for (int i = 0; i < n; i++) {
if (a[i] % 2 == 0) chan[c++] = a[i];
else le[l++] = a[i];
}
printf("Mang chan: ");
hienThiMang(chan, c);
printf("Mang le: ");
hienThiMang(le, l);
}
g)
void themPhanTu(int a[], int *n) {
int x, pos;
if (*n >= MAX) {
printf("Mang da day!\n");
return;
}
printf("Nhap gia tri can them: ");
scanf("%d", &x);
printf("Nhap vi tri can chen (0 -> %d): ", *n);
scanf("%d", &pos);
for (int i = *n; i > pos; i--)
a[i] = a[i - 1];
a[pos] = x;
(*n)++;
printf("Mang sau khi chen: ");
hienThiMang(a, *n);
}
h)
void xoaPhanTu(int a[], int *n) {
int pos;
printf("Nhap vi tri can xoa (0 -> %d): ", *n - 1);
scanf("%d", &pos);
for (int i = pos; i < *n - 1; i++)
a[i] = a[i + 1];
(*n)--;
printf("Mang sau khi xoa: ");
hienThiMang(a, *n);
}
i)
void timGiaTriLonThuHai(int a[], int n) {
int max1 = -1e9, max2 = -1e9;
for (int i = 0; i < n; i++) {
if (a[i] > max1) {
max2 = max1;
max1 = a[i];
} else if (a[i] > max2 && a[i] < max1) {
max2 = a[i];
}
}
if (max2 == -1e9)
printf("Khong co gia tri lon thu hai.\n");
else
printf("Gia tri lon thu hai: %d\n", max2);
}
j)
void capGanTong0(int a[], int n) {
int x = a[0], y = a[1];
int minSum = abs(x + y);
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++) {
int sum = abs(a[i] + a[j]);
if (sum < minSum) {
minSum = sum;
x = a[i];
y = a[j];
}
}
printf("Cap co tong gan 0 nhat: (%d, %d), tong = %d\n", x, y, x + y);
}
int main() {
int a[MAX], n, chon;
do {
printf("Nhap so phan tu cua mang (1-100): ");
scanf("%d", &n);
} while (n < 1 || n > MAX);
for (int i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
do {
printf("\n= MENU =\n");
printf("a) Hien thi mang\n");
printf("b) Tinh tong mang\n");
printf("c) Tim max, min va chi so\n");
printf("d) Sap xep tang dan\n");
printf("e) Dem phan tu khac nhau\n");
printf("f) Tach chan le\n");
printf("g) Them 1 phan tu\n");
printf("h) Xoa 1 phan tu\n");
printf("i) Tim gia tri lon thu hai\n");
printf("j) Tim cap co tong gan 0\n");
printf("0) Thoat\n");
printf("Chon (a-j, 0): ");
char choice;
scanf(" %c", &choice);
switch (choice) {
case 'a': hienThiMang(a, n); break;
case 'b': tongMang(a, n); break;
case 'c': maxMin(a, n); break;
case 'd': sapXepTangDan(a, n); break;
case 'e': demKhacNhau(a, n); break;
case 'f': tachChanLe(a, n); break;
case 'g': themPhanTu(a, &n); break;
case 'h': xoaPhanTu(a, &n); break;
case 'i': timGiaTriLonThuHai(a, n); break;
case 'j': capGanTong0(a, n); break;
case '0': printf("Tam biet!\n"); break;
default: printf("Lua chon sai!\n");
}
} while (chon != 0);
return 0;
}
Bài 2:
#include <stdio.h>
#include <limits.h>
#define MAX 100
a) Hiển thị mảng đã nhập
void hienThiMang(int A[][MAX], int n, int m) {
printf("Ma tran A:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
printf("%4d", A[i][j]);
printf("\n");
}
}
b) Hiển thị tổng các phần tử trong mảng
void tongTatCa(int A[][MAX], int n, int m) {
int sum = 0;
for (int j = 0; j < m; j++)
sum += A[i][j];
printf("Tong tat ca phan tu: %d\n", sum);
}
c) Hiển thị giá trị lớn nhất nhỏ nhất của mảng
void minMax(int A[][MAX], int n, int m) {
int min = A[0][0], max = A[0][0];
for (int j = 0; j < m; j++) {
if (A[i][j] < min) min = A[i][j];
if (A[i][j] > max) max = A[i][j];
}
printf("Gia tri nho nhat: %d\n", min);
printf("Gia tri lon nhat: %d\n", max);
}
d) Tính tổng theo từng cột
void tongCot(int A[][MAX], int n, int m) {
for (int j = 0; j < m; j++) {
int sum = 0;
for (int i = 0; i < n; i++)
sum += A[i][j];
printf("Tong cot %d = %d\n", j, sum);
}
}
e) Tính tổng theo từng hàng
void tongHang(int A[][MAX], int n, int m) {
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < m; j++)
sum += A[i][j];
printf("Tong hang %d = %d\n", i, sum);
}
}
f) Sắp xếp từng dòng tăng dần lưu vào B
void sapXepDongTang(int A[][MAX], int B[][MAX], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
B[i][j] = A[i][j];
for (int j = 0; j < m - 1; j++)
for (int k = j + 1; k < m; k++)
if (B[i][j] > B[i][k]) {
int tmp = B[i][j];
B[i][j] = B[i][k];
B[i][k] = tmp;
}
}
printf("Mang B (sap xep dong tang dan):\n");
hienThiMang(B, n, m);
}
g) Sắp xếp từng cột tăng dần lưu vào C
void sapXepCotTang(int A[][MAX], int C[][MAX], int n, int m) {
for (int j = 0; j < m; j++) {
for (int i = 0; i < n; i++)
C[i][j] = A[i][j];
for (int i = 0; i < n - 1; i++)
for (int k = i + 1; k < n; k++)
if (C[i][j] > C[k][j]) {
int tmp = C[i][j];
C[i][j] = C[k][j];
C[k][j] = tmp;
}
}
printf("Mang C (sap xep cot tang dan):\n");
hienThiMang(C, n, m);
}
h) Cộng hai mảng B C
void congHaiMaTran(int B[][MAX], int C[][MAX], int n, int m) {
int tong[MAX][MAX];
for (int j = 0; j < m; j++)
tong[i][j] = B[i][j] + C[i][j];
printf("Ma tran tong B + C:\n");
hienThiMang(tong, n, m);
}
Hàm main
int main() {
int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];
int n, m;
do {
printf("Nhap so hang (1-100): ");
scanf("%d", &n);
} while (n < 1 || n > 100);
do {
printf("Nhap so cot (1-100): ");
scanf("%d", &m);
} while (m < 1 || m > 100);
printf("Nhap cac phan tu cua ma tran A:\n");
for (int j = 0; j < m; j++) {
printf("A[%d][%d] = ", i, j);
scanf("%d", &A[i][j]);
}
printf("\n--- a) Hien thi mang A ---\n");
hienThiMang(A, n, m);
printf("\n--- b) Tong tat ca phan tu ---\n");
tongTatCa(A, n, m);
printf("\n--- c) Gia tri lon nhat & nho nhat ---\n");
minMax(A, n, m);
printf("\n--- d) Tong theo tung cot ---\n");
tongCot(A, n, m);
printf("\n--- e) Tong theo tung hang ---\n");
tongHang(A, n, m);
printf("\n--- f) Sap xep dong tang, luu B ---\n");
sapXepDongTang(A, B, n, m);
printf("\n--- g) Sap xep cot tang, luu C ---\n");
sapXepCotTang(A, C, n, m);
printf("\n--- h) Cong hai ma tran B + C ---\n");
congHaiMaTran(B, C, n, m);
return 0;
}

Preview text:

Bài 1: #include #include #include #define MAX 100 a)
void hienThiMang(int a[], int n) { printf("Mang da nhap: ");
for (int i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); } b)
void tongMang(int a[], int n) { int tong = 0;
for (int i = 0; i < n; i++) tong += a[i];
printf("Tong cac phan tu: %d\n", tong); } c) void maxMin(int a[], int n) {
int max = a[0], min = a[0], imax = 0, imin = 0;
for (int i = 1; i < n; i++) { if (a[i] > max) { max = a[i]; imax = i; } if (a[i] < min) { min = a[i]; imin = i; } }
printf("Max: %d (chi so %d)\n", max, imax);
printf("Min: %d (chi so %d)\n", min, imin); } d)
void sapXepTangDan(int a[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++) if (a[i] > a[j]) {
int tmp = a[i]; a[i] = a[j]; a[j] = tmp; }
printf("Mang sau khi sap xep tang dan: "); hienThiMang(a, n); } e)
void demKhacNhau(int a[], int n) { int dem = 0;
for (int i = 0; i < n; i++) { int khac = 1;
for (int j = 0; j < i; j++) if (a[i] == a[j]) { khac = 0; break; } if (khac) dem++; }
printf("So phan tu khac nhau: %d\n", dem); } f)
void tachChanLe(int a[], int n) {
int chan[MAX], le[MAX], c = 0, l = 0;
for (int i = 0; i < n; i++) {
if (a[i] % 2 == 0) chan[c++] = a[i]; else le[l++] = a[i]; } printf("Mang chan: "); hienThiMang(chan, c); printf("Mang le: "); hienThiMang(le, l); } g)
void themPhanTu(int a[], int *n) { int x, pos; if (*n >= MAX) { printf("Mang da day!\n"); return; }
printf("Nhap gia tri can them: "); scanf("%d", &x);
printf("Nhap vi tri can chen (0 -> %d): ", *n); scanf("%d", &pos);
for (int i = *n; i > pos; i--) a[i] = a[i - 1]; a[pos] = x; (*n)++;
printf("Mang sau khi chen: "); hienThiMang(a, *n); } h)
void xoaPhanTu(int a[], int *n) { int pos;
printf("Nhap vi tri can xoa (0 -> %d): ", *n - 1); scanf("%d", &pos);
for (int i = pos; i < *n - 1; i++) a[i] = a[i + 1]; (*n)--; printf("Mang sau khi xoa: "); hienThiMang(a, *n); } i)
void timGiaTriLonThuHai(int a[], int n) { int max1 = -1e9, max2 = -1e9;
for (int i = 0; i < n; i++) { if (a[i] > max1) { max2 = max1; max1 = a[i];
} else if (a[i] > max2 && a[i] < max1) { max2 = a[i]; } } if (max2 == -1e9)
printf("Khong co gia tri lon thu hai.\n"); else
printf("Gia tri lon thu hai: %d\n", max2); } j)
void capGanTong0(int a[], int n) { int x = a[0], y = a[1]; int minSum = abs(x + y);
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++) { int sum = abs(a[i] + a[j]); if (sum < minSum) { minSum = sum; x = a[i]; y = a[j]; } }
printf("Cap co tong gan 0 nhat: (%d, %d), tong = %d\n", x, y, x + y); } int main() { int a[MAX], n, chon; do {
printf("Nhap so phan tu cua mang (1-100): "); scanf("%d", &n);
} while (n < 1 || n > MAX);
for (int i = 0; i < n; i++) { printf("a[%d] = ", i); scanf("%d", &a[i]); } do { printf("\n= MENU =\n"); printf("a) Hien thi mang\n");
printf("b) Tinh tong mang\n");
printf("c) Tim max, min va chi so\n");
printf("d) Sap xep tang dan\n");
printf("e) Dem phan tu khac nhau\n"); printf("f) Tach chan le\n");
printf("g) Them 1 phan tu\n"); printf("h) Xoa 1 phan tu\n");
printf("i) Tim gia tri lon thu hai\n");
printf("j) Tim cap co tong gan 0\n"); printf("0) Thoat\n"); printf("Chon (a-j, 0): "); char choice; scanf(" %c", &choice); switch (choice) {
case 'a': hienThiMang(a, n); break;
case 'b': tongMang(a, n); break;
case 'c': maxMin(a, n); break;
case 'd': sapXepTangDan(a, n); break;
case 'e': demKhacNhau(a, n); break;
case 'f': tachChanLe(a, n); break;
case 'g': themPhanTu(a, &n); break;
case 'h': xoaPhanTu(a, &n); break;
case 'i': timGiaTriLonThuHai(a, n); break;
case 'j': capGanTong0(a, n); break;
case '0': printf("Tam biet!\n"); break;
default: printf("Lua chon sai!\n"); } } while (chon != 0); return 0; } Bài 2: #include #include #define MAX 100
a) Hiển thị mảng đã nhập
void hienThiMang(int A[][MAX], int n, int m) { printf("Ma tran A:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) printf("%4d", A[i][j]); printf("\n"); } }
b) Hiển thị tổng các phần tử trong mảng
void tongTatCa(int A[][MAX], int n, int m) { int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) sum += A[i][j];
printf("Tong tat ca phan tu: %d\n", sum); }
c) Hiển thị giá trị lớn nhất và nhỏ nhất của mảng
void minMax(int A[][MAX], int n, int m) {
int min = A[0][0], max = A[0][0];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
if (A[i][j] < min) min = A[i][j];
if (A[i][j] > max) max = A[i][j]; }
printf("Gia tri nho nhat: %d\n", min);
printf("Gia tri lon nhat: %d\n", max); }
d) Tính tổng theo từng cột
void tongCot(int A[][MAX], int n, int m) {
for (int j = 0; j < m; j++) { int sum = 0;
for (int i = 0; i < n; i++) sum += A[i][j];
printf("Tong cot %d = %d\n", j, sum); } }
e) Tính tổng theo từng hàng
void tongHang(int A[][MAX], int n, int m) {
for (int i = 0; i < n; i++) { int sum = 0;
for (int j = 0; j < m; j++) sum += A[i][j];
printf("Tong hang %d = %d\n", i, sum); } }
f) Sắp xếp từng dòng tăng dần và lưu vào B
void sapXepDongTang(int A[][MAX], int B[][MAX], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) B[i][j] = A[i][j];
for (int j = 0; j < m - 1; j++)
for (int k = j + 1; k < m; k++) if (B[i][j] > B[i][k]) { int tmp = B[i][j]; B[i][j] = B[i][k]; B[i][k] = tmp; } }
printf("Mang B (sap xep dong tang dan):\n"); hienThiMang(B, n, m); }
g) Sắp xếp từng cột tăng dần và lưu vào C
void sapXepCotTang(int A[][MAX], int C[][MAX], int n, int m) {
for (int j = 0; j < m; j++) {
for (int i = 0; i < n; i++) C[i][j] = A[i][j];
for (int i = 0; i < n - 1; i++)
for (int k = i + 1; k < n; k++) if (C[i][j] > C[k][j]) { int tmp = C[i][j]; C[i][j] = C[k][j]; C[k][j] = tmp; } }
printf("Mang C (sap xep cot tang dan):\n"); hienThiMang(C, n, m); } h) Cộng hai mảng B và C
void congHaiMaTran(int B[][MAX], int C[][MAX], int n, int m) { int tong[MAX][MAX];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
tong[i][j] = B[i][j] + C[i][j];
printf("Ma tran tong B + C:\n"); hienThiMang(tong, n, m); } Hàm main int main() {
int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX]; int n, m; do {
printf("Nhap so hang (1-100): "); scanf("%d", &n);
} while (n < 1 || n > 100); do {
printf("Nhap so cot (1-100): "); scanf("%d", &m);
} while (m < 1 || m > 100);
printf("Nhap cac phan tu cua ma tran A:\n");
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) { printf("A[%d][%d] = ", i, j); scanf("%d", &A[i][j]); }
printf("\n--- a) Hien thi mang A ---\n"); hienThiMang(A, n, m);
printf("\n--- b) Tong tat ca phan tu ---\n"); tongTatCa(A, n, m);
printf("\n--- c) Gia tri lon nhat & nho nhat ---\n"); minMax(A, n, m);
printf("\n--- d) Tong theo tung cot ---\n"); tongCot(A, n, m);
printf("\n--- e) Tong theo tung hang ---\n"); tongHang(A, n, m);
printf("\n--- f) Sap xep dong tang, luu B ---\n"); sapXepDongTang(A, B, n, m);
printf("\n--- g) Sap xep cot tang, luu C ---\n"); sapXepCotTang(A, C, n, m);
printf("\n--- h) Cong hai ma tran B + C ---\n"); congHaiMaTran(B, C, n, m); return 0; }