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;
}