Bài tập cho 1 ma trận số lập trình c năm 2024



Bài tập

Viết một chương trình C để nhập hai ma trận và tính tích của hai ma trận đó.

Chương trình C để nhập và tính tích hai ma trận

include<stdio.h>

include<conio.h>

main() { int a[10][10],b[10][10],matrantich[10][10],hang,cot,i,j,k; printf("Nhap so hang = "); scanf("%d",&hang); printf("\nNhap so cot = "); scanf("%d",&cot); printf("\nNhap cac phan tu cua ma tran thu nhat\n"); for(i=0;i<hang;i++) { for(j=0;j<cot;j++) { scanf("%d",&a[i][j]); } } printf("\nNhap cac phan tu cua ma tran thu hai\n"); for(i=0;i<hang;i++) { for(j=0;j<cot;j++) { scanf("%d",&b[i][j]); } } printf("\nTich cua hai ma tran la:\n"); for(i=0;i<hang;i++) { for(j=0;j<cot;j++) { matrantich[i][j]=0; for(k=0;k<cot;k++) { matrantich[i][j]+=a[i][k]*b[k][j]; } } } // hien thi ket qua for(i=0;i<hang;i++) { for(j=0;j<cot;j++) { printf("%d\t",matrantich[i][j]); } printf("\n"); } printf("\n\n===========================\n"); printf("VietJack chuc cac ban hoc tot!"); getch(); }

Quảng cáo

Biên dịch và chạy chương trình C trên sẽ cho kết quả:



Bài viết liên quan

  • 160 bài học ngữ pháp tiếng Anh hay nhất
  • 155 bài học Java tiếng Việt hay nhất
  • 100 bài học Android tiếng Việt hay nhất
  • 247 bài học CSS tiếng Việt hay nhất
  • 197 thẻ HTML cơ bản
  • 297 bài học PHP
  • 101 bài học C++ hay nhất
  • 97 bài tập C++ có giải hay nhất
  • 208 bài học Javascript có giải hay nhất

Bài tập cho 1 ma trận số lập trình c năm 2024

Chào các bạn, hôm này Lập trình không khó sẽ mang tới các bạn một loạt bài tập c/c++ có lời giải. Đây là các bài tập lập trình C/C++ có lời giải từ cơ bản tới nâng cao. Bao gồm các phần:

  1. Bài tập về cấu trúc điều khiển, rẽ nhánh
  2. Bài tập về vòng lặp
  3. Bài tập mảng một chiều
  4. Bài tập mảng 2 chiều

Ngoài 20 bài tập lập trình C/C++ này ra, bạn cũng có thể tham khảo các series bài tập khác của Lập Trình Không Khó có lời giải dưới đây:

Như vậy, ICANTECH đã giới thiệu bạn các dạng bài tập C++ từ cơ bản đến nâng cao theo từng trình độ khác nhau. Hi vọng các kiến thức trên sẽ giúp bạn trau dồi và cải thiện kỹ năng lập trình C++. Chúc các bạn thành công!

Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình dưới đây tại ICANTECH nhé

Bài tập 15: Để mã hóa một văn bản gồm toàn chữ cái tiếng Anh người ta có thể làm như sau: Thay mỗi kí tự bằng kí tự đứng sau nó trong bảng chữ cái, riêng z thay bằng a. Ví dụ 'anh' được mã hóa thành 'boi'. Bạn hãy lập trình để

Dạng bài này thường yêu cầu bạn đếm hoặc liệt kê các phần tử trong mảng 2 chiều thỏa mãn tính chất cho trước như : số nguyên tố, thuận nghịch, hoàn hảo, fibonacci...

Đối với dạng bài tập này bạn chỉ cần biết duyệt mảng 2 chiều là có thể làm được.

Ví dụ 1 : Tìm phần tử nhỏ nhất, lớn nhất trong mảng 2 chiều

include "stdio.h"

include "math.h"

int main(){

int n = 4, m = 4;  
int a[4][4] = {  
    {3, 1, 0, 7},  
    {2, 5, 10, 3},  
    {3, 7, 4, 1},  
    {10, 2, 0, 3}  
};  
int min_val = 1000000000, max_val = -1000000000;  
for(int i = 0; i < n; i++){  
    for(int j = 0; j < m; j++){  
        if(a[i][j] > max_val){  
            max_val = a[i][j];  
        }  
        if(a[i][j] < min_val){  
            min_val = a[i][j];  
        }  
    }  
}  
printf("Gia tri nho nhat : %d\n", min_val);  
printf("Gia tri lon nhat : %d\n", max_val);  
return 0;  
}

Output :

Gia tri nho nhat : 0 Gia tri lon nhat : 10

Ví dụ 2 : Liệt kê các số Fibonacci trong mảng 2 chiều

include "stdio.h"

include "math.h"

int fibo(long long n){

long long F[100];  
F[0] = 0; F[1] = 1;  
for(int i = 2; i <= 92; i++){  
    F[i] = F[i - 1] + F[i - 2];  
}  
for(int i = 0; i <= 92; i++){  
    if(n == F[i]) return 1;  
}  
return 0;  
} int main(){
int n = 4, m = 4;  
int a[4][4] = {  
    {3, 1, 0, 7},  
    {2, 5, 10, 3},  
    {3, 7, 4, 1},  
    {10, 2, 0, 3}  
};  
printf("Cac so fibonacci : ");  
for(int i = 0; i < n; i++){  
    for(int j = 0; j < m; j++){  
        if(fibo(a[i][j])){  
            printf("%d ", a[i][j]);  
        }  
    }  
}  
return 0;  
}

Output :

Cac so fibonacci : 3 1 0 2 5 3 3 1 2 0 3


2. Bài Toán Xét Hàng, Cột

Dạng bài tập này thường yêu cầu các bạn xét từng hàng hoặc từng cột của mảng 2 chiều.

Đối với bài toán xét theo hàng bạn duyệt như bình thường còn đối với bài toán duyệt theo cột thì bạn cần để vòng for ngoài duyệt theo cột và vòng for con bên trong duyệt theo hàng.

Ví dụ 1 : Tính tổng từng hàng, từng cột của mảng 2 chiều

include "stdio.h"

include "math.h"

int main(){

int n = 4, m = 4;  
int a[4][4] = {  
    {3, 1, 0, 7},  
    {2, 5, 10, 3},  
    {3, 7, 4, 1},  
    {10, 2, 0, 3}  
};  
for(int i = 0; i < n; i++){  
    int tong = 0;  
    for(int j = 0; j < m; j++){  
        tong += a[i][j];  
    }  
    printf("Tong hang %d : %d\n", i, tong);  
}  
for(int i = 0; i < m; i++){  
    int tong = 0;  
    for(int j = 0; j < n; j++){  
        tong += a[j][i];  
    }  
    printf("Tong cot %d : %d\n", i, tong);  
}  
return 0;  
}

Output :

Tong hang 0 : 11 Tong hang 1 : 20 Tong hang 2 : 15 Tong hang 3 : 15 Tong cot 0 : 18 Tong cot 1 : 15 Tong cot 2 : 14 Tong cot 3 : 14

Ví dụ 2 : Tìm hàng có nhiều số nguyên tố nhất

include "stdio.h"

include "math.h"

int prime(int n){

for(int i = 2; i <= sqrt(n); i++){  
    if(n % i == 0) return false;  
}  
return n > 1;  
} int main(){
int n = 4, m = 4;  
int a[4][4] = {  
    {3, 1, 0, 7},  
    {2, 5, 10, 3},  
    {3, 7, 4, 1},  
    {10, 2, 0, 3}  
};  
int res = 0, hang = -1;  
for(int i = 0; i < n; i++){  
    int dem = 0;  
    for(int j = 0; j < m; j++){  
        if(prime(a[i][j])){  
            ++dem;  
        }  
    }  
    if(dem > res){  
        res = dem; hang = i;  
    }  
}  
printf("Hang %d co nhieu so nguyen to nhat\n", hang);  
printf("So luong so nguyen to o hang %d : %d\n", hang, res);  
return 0;  
}

Output :

Hang 1 co nhieu so nguyen to nhat So luong so nguyen to o hang 1 : 3

Ví dụ 3 : Tìm cột có nhiều số nguyên tố nhất, nếu có nhiều cột có cùng số nguyên tố thì chọn cột có số thứ tự lớn hơn

include "stdio.h"

include "math.h"

int prime(int n){

for(int i = 2; i <= sqrt(n); i++){  
    if(n % i == 0) return false;  
}  
return n > 1;  
} int main(){
int n = 4, m = 4;  
int a[4][4] = {  
    {3, 1, 0, 7},  
    {2, 5, 10, 3},  
    {3, 7, 4, 1},  
    {10, 2, 0, 3}  
};  
int res = 0, cot = -1;  
for(int i = 0; i < m; i++){  
    int dem = 0;  
    for(int j = 0; j < n; j++){  
        if(prime(a[j][i])){  
            ++dem;  
        }  
    }  
    if(dem >= res){  
        res = dem; cot = i;  
    }  
}  
printf("Cot %d co nhieu so nguyen to nhat\n", cot);  
printf("So luong so nguyen to o cot %d : %d\n", cot, res);  
return 0;  
}

Output :

Cot 3 co nhieu so nguyen to nhat So luong so nguyen to o cot 3 : 3


3. Hoán Vị Hàng, Cột

Để hoán vị 2 hàng của mảng 2 chiều thì bạn duyệt qua từng cột còn để hoán vị 2 cột thì bạn lại duyệt qua từng hàng.

Ví dụ 1 : Bài toán hoán vị 2 hàng

Gia tri nho nhat : 0 Gia tri lon nhat : 10

0

Output :

Gia tri nho nhat : 0 Gia tri lon nhat : 10

1

Ví dụ 2 : Bài toán hoán vị 2 cột

Gia tri nho nhat : 0 Gia tri lon nhat : 10

2

Output :

Gia tri nho nhat : 0 Gia tri lon nhat : 10

3


4. Sắp Xếp Ma Trận Theo Hàng, Cột

Sắp xếp theo hàng

Sắp xếp theo hàng trên ma trận thì bạn có thể tự code một hàm sắp xếp mảng 1 chiều sau đó áp dụng với từng hàng của mảng 2 chiều.

Như mình có nhắc ở phần lý thuyết mảng 2 chiều thì mảng 2 chiều thực chất chính là 1 mảng các mảng 1 chiều, mỗi dòng trên mảng 2 chiều chính là 1 mảng 1 chiều.