Các bài tập về mảng hai chiều

Một phần của tài liệu giao trinh C(dttx) pot (Trang 84 - 88)

- Kết quả trả về của hàm là ký tự được ấn.

 Kiểu con trỏ và kiểu địa chỉ

9.2. Các bài tập về mảng hai chiều

Bài 9

/*Viết chương trình nhập vào mảng hai chiều và tìm phần tử âm đầu tiên trong mảng*/

#include<stdio.h> #include<conio.h> void main() { float a[3][4]={{4,2.5,6.2,-8},{3.2,25,7,0.5},{1.5,-3,0,5}}; int i,j;

clrscr();

for(i=0;i<3;i++) for(j=0;j<4;j++)

if (a[i][j]<0) goto ketqua;

printf("Mang khong co phan tu am"); goto ketthuc;

ketqua:printf("\n Phan tu am dau tien la a[%d][%d]=%.2f",i+1,j+1,a[i][j]); ketthuc:

getch(); return; }

Bài 10

/*Viết chương trình xoay một ma trận 5x5 một góc 90 độ theo chiều kim đồng hồ*/

#include<stdio.h> #include<conio.h> #define N 5 void main() { float a[N][N],tam; float b[N][N]; int i,j; clrscr();

printf("\n Nhap cac phan tu cua ma tran\n"); for(i=0;i<N;i++)

for(j=0;j<N;j++) {

printf("\n Phan tu a[%d][%d]=",i,j); scanf("%f",&tam);

a[i][j]=tam; }

printf("\n Hien thi ma tran vua nhap vao:\n"); for(i=0;i<N;i++)

{for(j=0;j<N;j++) printf("%.2f ",a[i][j]); printf("\n");

}

printf("\n Hien thi ma tran xoay 90 dotheo chieu thuan:\n"); for(i=0;i<N;i++) for(j=0;j<N;j++) { b[j][N-i-1]=a[i][j];/*dùng ma trận phụ b */ } for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%.2f ",b[i][j]);

printf("\n"); }

getch(); return; }

Chú ý: khi nhập mảng hai chiều các số nguyên>=0 với kích thước lớn, ta có thể dùng

hàm random() thuộc thư viên #include<stdlib.h>.

Ví dụ: #include<stdlib.h> ••• main() { •••

randomize();/*Khởi tạo dãy random*/ for(i=0;i<7;i++)

for(j=0;j<7;j++)

{

printf("\n Phan tu a[%d][%d]=",i,j);

a[i][j]=random(50);/*nhập các số nguyên dương trong khoảng [0..50]*/

} •••

}

10.CÁC BÀI TẬP TỰ LÀM

Bài 1: Viết chương trình nhập vào mảng, hãy xuất ra màn hình:

Dòng 1: Phần tử âm lớn nhất của mảng. Dòng 2: Phần tử dương nhỏ nhất của mảng. Dòng 3: Tổng các phần tử có căn bậc hai nguyên . Dòng 4: Gồm các số lẻ, tổng cộng có bao nhiêu số lẻ. Dòng 5: Gồm các số chẳn, tổng cộng có bao nhiêu số chẳn. Dòng 6: Gồm các số nguyên tố.

Dòng 7: Gồm các số không phải nguyên tố.

Bài 2: Viết chương trình nhập vào một số nhỏ hơn 1000. Trình bày dòng chữ cho biết giá

trị của số đó.

Bài 3: Viết chương trình cộng, trừ hai số nguyên có nhiều chữ số (dùng chuỗi).

Bài 4: Viết chương trình nhập vào một mảng hai chiều m*n. Hãy biến đổi dấu của tất cả các số của 1 hàng hoặc một cột sao cho số lần biến đổi là ít nhất để được một ma trân có tổng của mọi con số ở mọi hàng và mọi cột đều lớn hơn hoặc bằng 0.

Bài 5: Viết chương trình sắp xếp một mảng hai chiều n*n tăng dần theo cột và theo hàng. (a[0,0]<a[0,1]<a[0,2]… <a[0,n]<a[1,0]<…<a[1,n]<a[2,0]<…<a[n,n]).

Cách 1: Chuyển mảng hai chiều thành mảng một chiều, sau đó sắp xếp mảng một chiều và cuối cùng chuyển mảng một chiều thành hai chiều.

•••

void chuyen_2_l(int a[][n], int b[], int n) { int i,j; for(i=0;i<n;i++) for (j=0;j<n;j++) b[i*n+j]=a[i][j]; return; } ••• Cách 2: Không dùng mảng 1 chiều (sử dụng phép / và %). Bài 6

Viết chương trình xoay một ma trận 5x5 một góc 90 độ theo chiều kim đồng hồ, không dùng ma trận phụ b.

Bài 7

Viết chương trình xoay một ma trận 5x5 một góc 180 độ theo chiều kim đồng hồ, theo hai cách :

Dùng ma trận phụ. Không dùng ma trận phụ.

Bài 8

Nhập vào một mảng hai chiều nxn:

-Kiểm tra xem mảng này có đối xứng qua đường chéo chính không -Tính tổng bình phương các phần tử mà giá trị của nó là số nguyên tố -Tính tổng các phần tử trên dòng và trên cột.

- Hiển thị các phần tử vừa lớn nhất trên dòng vừa nhỏ nhất trên cột. - Chuyển các phầntử âm xuống dưới đường chéo chính, và các phần tử dương lên trên đường chéo chính (giả sử các phần tử âm bằng các phần tử dương) .

Bài 9

Sắp xếp một mảng hai chiều 5x5 tăng dần theo hình zic zắc ngang (a[0,0]<a[0,1<… <a[0,n]<

a[1,n]<a[1,n-1]<a[1,n-2]<…<a[1,0]< a[2,0]<a[2,1]<a[2,2] <a[2,3]<…<a[2,n]< a[3,n]<a[3,n-1]<a[3,n-2]<…<a[3,0]< a[4,0]<…<a[4,4].

Gợi ý: Xem cách 1 bài 5

Bài 10

Tương tự như bài trên, nhưng là zic zắc đứng.

Bài 11

Sắp xếp một mảng hai chiều 5x5 tăng dần theo hình xoắn ốc.

Bài 12

Viết chương trình thực hiện phép cộng và nhân hai ma trận kích thước 5x5.

BÀI 8

Một phần của tài liệu giao trinh C(dttx) pot (Trang 84 - 88)