x9nd
05-23-2009, 04:37 PM
Bài 11: Mảng - Thực hành
1. Sự sắp xếp một mảng một chiều
- Về các thuật toán sắp xếp trong mảng các bạn có thể tham khảo trực tiếp nhiều bài viết trên diễn đàn này. Đây là một ví dụ về việc sắp xếp trong mảng.
Code:
#include <stdio.h>
#include <conio.h>
void main
{
int n;
int num[100];
int L;
int desnum[100], k;
int i, i, temp;
printf("\nEnter the total number of marks to be entered: ");
scanf("%d", &n);
clrscr();
for(L=0;L<n;L++)
{
printf("\n Enter the marks of student %d : ", L+1);
scanf("%d", &num[L]);
}
for(k=0;k<n;k++)
{
desnum[k] = num[k]
}
for(i=0;i<n-1;i++)
{
for (j = i+1; j<n; j++)
{
if (desnum[i]<desnum[j])
{
temp = desnum[i];
desnum[i] = desnum[j];
desnum[j] = temp;
}
}
}
for(i=0;i<n;i++)
printf("\nNumber at [%d] is %d", i, desnum[i]);
}
2. Cộng ma trận sử dụng mảng hai chiều
Code:
void main()
{
int A[10][10], B[10][10], C[10][10];
int row, col;
int i,j;
printf("\nEnter the dimension of the matrix: ");
scanf("%d %d", &row, &col);
printf("\nEnter the values of the matrix A and B: \n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("\n A[%d,%d], B[%d,%d]:", i, j, i, j);
scanf("%d%d", &A[i][j], &B[i][j]);
C[i][j] = A[i][j] + B[i][j];
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("\n A[%d,%d]=%d, B[%d,%d]=%d, C[%d,%d]=%d\n", i, j, A[i][j], i, j, B[i][j], i, j, C[i][j]);
}
}
}
Bài tập bắt buộc
1. Viêt một chương tŕnh C nhập một tập hợp số vào trong một mảng và đảo ngược mảng.
- Để thực hiện điều này:
+ Khai báo hai mảng
+ Nhập các giá trị vào một mảng.
+ Thực hiện ṿng lặp theo thứ tự ngược trên mảng này để sao chép các giá trị vào mảng thứ hai. Dùng một chỉ số khác cho mảng thứ hai, chỉ số này chạy từ 0.
Bài tập tự làm
1. Viết một chương tŕnh C để t́m giá trị nhỏ nhất và giá trị lớn nhất trong một mảng.
2. Viêt một chương tŕnh C để đếm số lượng nguyên âm và phụ âm trong một từ.
1. Sự sắp xếp một mảng một chiều
- Về các thuật toán sắp xếp trong mảng các bạn có thể tham khảo trực tiếp nhiều bài viết trên diễn đàn này. Đây là một ví dụ về việc sắp xếp trong mảng.
Code:
#include <stdio.h>
#include <conio.h>
void main
{
int n;
int num[100];
int L;
int desnum[100], k;
int i, i, temp;
printf("\nEnter the total number of marks to be entered: ");
scanf("%d", &n);
clrscr();
for(L=0;L<n;L++)
{
printf("\n Enter the marks of student %d : ", L+1);
scanf("%d", &num[L]);
}
for(k=0;k<n;k++)
{
desnum[k] = num[k]
}
for(i=0;i<n-1;i++)
{
for (j = i+1; j<n; j++)
{
if (desnum[i]<desnum[j])
{
temp = desnum[i];
desnum[i] = desnum[j];
desnum[j] = temp;
}
}
}
for(i=0;i<n;i++)
printf("\nNumber at [%d] is %d", i, desnum[i]);
}
2. Cộng ma trận sử dụng mảng hai chiều
Code:
void main()
{
int A[10][10], B[10][10], C[10][10];
int row, col;
int i,j;
printf("\nEnter the dimension of the matrix: ");
scanf("%d %d", &row, &col);
printf("\nEnter the values of the matrix A and B: \n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("\n A[%d,%d], B[%d,%d]:", i, j, i, j);
scanf("%d%d", &A[i][j], &B[i][j]);
C[i][j] = A[i][j] + B[i][j];
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("\n A[%d,%d]=%d, B[%d,%d]=%d, C[%d,%d]=%d\n", i, j, A[i][j], i, j, B[i][j], i, j, C[i][j]);
}
}
}
Bài tập bắt buộc
1. Viêt một chương tŕnh C nhập một tập hợp số vào trong một mảng và đảo ngược mảng.
- Để thực hiện điều này:
+ Khai báo hai mảng
+ Nhập các giá trị vào một mảng.
+ Thực hiện ṿng lặp theo thứ tự ngược trên mảng này để sao chép các giá trị vào mảng thứ hai. Dùng một chỉ số khác cho mảng thứ hai, chỉ số này chạy từ 0.
Bài tập tự làm
1. Viết một chương tŕnh C để t́m giá trị nhỏ nhất và giá trị lớn nhất trong một mảng.
2. Viêt một chương tŕnh C để đếm số lượng nguyên âm và phụ âm trong một từ.