Tổng hợp các bài tập về ma trận trong C
Bài 1: Nhập ma trận ngẫu nhiên từ 0 – 500, xuất ma trận.
void nhapdongvacot(int &m, int &n ){ do{ printf(“Nhap so dong va cot: “); scanf(“%d%d”,&m,&n); if(m<=0 && m>100 || n<=0 && n>100 ) printf(“Nhap sai, nhap lai”); }while(m<=0 && m>100 || n<=0 && n>100 ); } void nhapmatran(int a[][100], int m, int n){ int min=0; int max=500; srand(time(0)); for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ a[i][j]=min + rand()%(max + 1 – min); } }} void xuatmatran(int a[][100], int m, int n){ for(int i=0; i<m; i++){ for(int j=0; j<n;j++){ printf(“%4d”,a[i][j]); } printf(“\n”);}} |
Bài 2: Xuất đường chéo chính
void xuatcheochinh(int a[][100], int n){ printf(“Duong Cheo Chinh: “); for(int i = 0; i < n; i++) printf(“%4d”,a[i][i]); } |
Bài 3: Tính tổng tam giác dưới, tam giác trên từ phải qua trái của đường chéo phụ.
long tamgiacduoi(int a[][100], int n){ long s=0; for(int i=1; i<n; i++){ for(int j=n-i; j<n; j++){ s=s+a[i][j]; } } return s; }long tamgiactren(int a[][100], int n){ long s=0; for(int i=0; i<n-1; i++){ for(int j=0; j<n-1-i; j++){ s=s+a[i][j]; } } return s; } |
Bài 4: Tính giá trị trung bình của các phần tử trong ma trận.
long giatritb(int a[][100], int m, int n){ long s=0; long tb; for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ s=s+a[i][j]; } } tb = s/(m*n); return tb; } |
Bài 5: Tính tổng đường chéo chính trong ma trận vuông n.
Đường chéo chính: Chỉ số dòng = chỉ số cột.
long tongduongcheochinh(int a[][100], int n){ long s=0; for(int i=0; i<n; i++) s = s + a[i][i]; return s; } |
Bài 6: Tính tổng đường chéo phụ trong ma trận vuông n.
Đường chéo phụ: Chỉ số dòng + chỉ số cột = số dòng (hoặc số cột).
long tongduongcheophu(int a[][100], int n){ long s=0; for(int i=0; i<n; i++) s = s + a[i][n – 1 – i]; return s; } |
Bài 7: Tính tổng ma trận m dòng và n cột.
long tongmatran(int a[][100], int m, int n){ long s=0; for(int i=0; i<m; i++){ for(int j=0; j<n; j++) s = s + a[i][j]; } return s; } |
Bài 8: Tính tổng từng dòng trong ma trận
void tongdong(int a[][100], int m, int n){ for(int i=0; i<m; i++){ long s=0; for(int j=0; j<n; j++){ s=s + a[i][j]; } printf(“\nDong thu %d co tong la: %ld”,i,s); } } |
Bài 9: Tính tổng từng cột trong ma trận.
void tongcot(int a[][100], int m, int n){ for(int i=0; i<n; i++){ long s=0; for(int j=0; j<m; j++){ s=s + a[j][i]; } printf(“\nCot thu %d co tong la: %ld”,i,s); } } |
Bài 10: Tính tổng dòng k trong ma trận.
void tongdongk(int a[][100], int m, int n, int k=2){ for(int i=0; i<m; i++){ long s=0; if(i == k){ for(int j=0; j<n; j++){ s=s + a[i][j]; } printf(“\nDong thu %d co tong la: %ld”,i,s); } } } |
Bài 11: Tính tổng đường biên ma trận.
void tongduongbien(int a[][100], int m, int n){ long s=0; for(int i=0; i<m; i++) s=s+a[0][i]; for(int i=1; i <n; i++ ) s=s+a[i][0]; for(int i=1; i < m; i++) s=s+a[n-1][i]; for(int i=1; i<n-1 ; i++) s=s+a[i][m-1]; printf(“Tong duong bien la: %ld”,s); } |
Bài 12: Tổng tam giác dưới đường chéo chính
long Tongtamgiacduoi(int a[][100], int n) { long sum=0; for(int i=0;i<n-1;i++) for(int j=0;j<n-1;j++) if(i>=j) sum=sum+a[i][j]; return sum; } |
Bài 13: Tổng tam giác trên đường chéo chính
long tongtamgiactren(int a[][100], int n) { long tong = 0; for(int i = 0; i < n – 1; i++) { for(int j = i + 1; j < n; j++) { tong += a[i][j]; } } return tong; } |