Bài thực hành 1
- Các giá trị giống nhau. Địa chỉ bộ nhớ liên tiếp.
- Khoảng cách bằng kích thước một hàng mảng. Kích thước này bằng số phần tử mỗi hàng nhân với kích thước kiểu dữ liệu.
Bài thực hành 2
- Tham số hàm:
int arr[], int len. Tham số truyền vào: arr, len.
- Hàm
input dùng để nhập dữ liệu cho mảng. Hàm compute tính trung bình các giá trị sau khi loại bỏ giá trị lớn nhất và nhỏ nhất.
Bài thực hành 3
- Tham số hàm:
int matrix[][N], int size. Tham số truyền vào: matrix, size.
- Không thể truyền mảng hai chiều không xác định kích thước.
- Hàm
output hiển thị ma trận theo dạng bảng. Hàm init sao chép giá trị từ biến value vào mảng.
Bài thực hành 4: Tính giá trị trung vị
#include <stdio.h>
#define MAX_SIZE 100
double tinhTrungVi(int arr[], int n);
void nhapMang(int arr[], int n);
int main() {
int arr[MAX_SIZE];
int n;
double ketQua;
while(printf("Nhập n: "), scanf("%d", &n) != EOF) {
nhapMang(arr, n);
ketQua = tinhTrungVi(arr, n);
printf("Kết quả = %g\n\n", ketQua);
}
return 0;
}
void nhapMang(int arr[MAX_SIZE], int n) {
for(int i=0; i<n; ++i)
scanf("%d", &arr[i]);
// Sắp xếp nổi bọt
for(int i=0; i<n-1; ++i)
for(int j=0; j<n-i-1; ++j)
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
double tinhTrungVi(int arr[MAX_SIZE], int n) {
return (n % 2) ? arr[n/2] : (arr[n/2-1] + arr[n/2])/2.0;
}
Bài thực hành 5: Xoay ma trận
#include <stdio.h>
#define MAX_SIZE 100
void nhapMaTran(int matrix[][MAX_SIZE], int n);
void xuatMaTran(int matrix[][MAX_SIZE], int n);
void xoayPhai(int matrix[][MAX_SIZE], int n);
int main() {
int matrix[MAX_SIZE][MAX_SIZE];
int n;
printf("Nhập kích thước ma trận: ");
scanf("%d", &n);
printf("Ma trận gốc:\n");
nhapMaTran(matrix, n);
xuatMaTran(matrix, n);
printf("Ma trận sau khi xoay:\n");
xoayPhai(matrix, n);
xuatMaTran(matrix, n);
return 0;
}
void nhapMaTran(int matrix[][MAX_SIZE], int n) {
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
scanf("%d", &matrix[i][j]);
}
void xuatMaTran(int matrix[][MAX_SIZE], int n) {
for(int i=0; i<n; ++i) {
for(int j=0; j<n; ++j)
printf("%4d", matrix[i][j]);
printf("\n");
}
}
void xoayPhai(int matrix[][MAX_SIZE], int n) {
for(int i=0; i<n; ++i) {
int temp = matrix[i][n-1];
for(int j=n-1; j>0; --j)
matrix[i][j] = matrix[i][j-1];
matrix[i][0] = temp;
}
}
Bài thực hành 6: Chuyển đổi hệ cơ số
#include <stdio.h>
#define MAX_LEN 100
void chuyenDoi(int n, int base);
int main() {
int n;
while(printf("Nhập số thập phân: "), scanf("%d", &n) != EOF) {
chuyenDoi(n, 2);
chuyenDoi(n, 8);
chuyenDoi(n, 16);
printf("\n");
}
return 0;
}
void chuyenDoi(int n, int base) {
int stack[MAX_LEN], top = 0;
if(n == 0) {
printf("0");
return;
}
while(n > 0) {
int rem = n % base;
stack[top++] = rem;
n /= base;
}
for(int i=top-1; i>=0; --i)
printf("%c", stack[i] < 10 ? '0'+stack[i] : 'A'+stack[i]-10);
}
Bài thực hành 7: Kiểm tra ma trận ma phương
#include <stdio.h>
#define MAX_SIZE 100
void nhap(int matrix[][MAX_SIZE], int n);
void xuat(int matrix[][MAX_SIZE], int n);
int laMaPhuong(int matrix[][MAX_SIZE], int n);
int main() {
int matrix[MAX_SIZE][MAX_SIZE];
int n;
while(printf("Nhập kích thước: "), scanf("%d", &n) != EOF) {
printf("Nhập ma trận:\n");
nhap(matrix, n);
printf("Kiểm tra ma phương:\n");
xuat(matrix, n);
printf("%s\n", laMaPhuong(matrix, n) ? "Là ma trận ma phương" : "Không phải ma trận ma phương");
}
return 0;
}
void nhap(int matrix[][MAX_SIZE], int n) {
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
scanf("%d", &matrix[i][j]);
}
void xuat(int matrix[][MAX_SIZE], int n) {
for(int i=0; i<n; ++i) {
for(int j=0; j<n; ++j)
printf("%4d", matrix[i][j]);
printf("\n");
}
}
int laMaPhuong(int matrix[][MAX_SIZE], int n) {
int sum = n*(n*n + 1)/2;
// Kiểm tra hàng
for(int i=0; i<n; ++i) {
int rowSum = 0;
for(int j=0; j<n; ++j)
rowSum += matrix[i][j];
if(rowSum != sum) return 0;
}
// Kiểm tra cột
for(int j=0; j<n; ++j) {
int colSum = 0;
for(int i=0; i<n; ++i)
colSum += matrix[i][j];
if(colSum != sum) return 0;
}
// Kiểm tra đường chéo chính
int diag1 = 0, diag2 = 0;
for(int i=0; i<n; ++i) {
diag1 += matrix[i][i];
diag2 += matrix[i][n-1-i];
}
return (diag1 == sum && diag2 == sum);
}