Kinh Nghiệm về Viết chương C Nhap vào mảng 1 chiều và in mảng theo chiều ngược lại sử dụng con trỏ 2022
Bạn đang tìm kiếm từ khóa Viết chương C Nhap vào mảng 1 chiều và in mảng theo chiều ngược lại sử dụng con trỏ được Update vào lúc : 2022-05-09 00:50:10 . Với phương châm chia sẻ Mẹo Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tìm hiểu thêm tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Mình lý giải và hướng dẫn lại nha.Đây là bài tập C minh họa cách duyệt một mảng và in mảng theo chiều hòn đảo ngược bằng phương pháp sử dụng con trỏ trong C. Bạn tìm hiểu chương trình C dưới đây để hiểu cách thao tác của con trỏ trên mảng.
Nội dung chính- 1. Lý thuyết về mảng 1 chiều
- 2. Khai báo mảng 1 chiều
- 3. Khởi tạo mảng 1 chiều
- 4. Các thao tác với mảng 1 chiều
- 4.1. Thao tác nhập mảng 1 chiều
- 4.2. Thao tác xuất mảng 1 chiều
- 4.3. Chức năng tìm kiếm trong mảng 1 chiều
- 5. Bài tập thực hành thực tiễn
Dưới đấy là chương trình C để giải bài tập duyệt và in mảng theo chiều hòn đảo ngược bởi sử dụng con trỏ trong C:
#include
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi trực tuyến, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên social facebook và youtube:
Các bạn hoàn toàn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp những bạn vượt qua những dự án công trình bất Động sản trên trường và đi thực tập Java. Khóa học có mức giá chỉ 300K, nhằm mục đích ưu đãi, tạo Đk cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu yếu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook thành viên Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi những loạt bài tiên tiến và phát triển nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... tiên tiến và phát triển nhất của chúng tôi.
bai-tap-con-tro-trong-c.jsp
Series lập trình C/C++, ngôn từ lập trình khối mạng lưới hệ thống mạnh mẽ và tự tin.
– Trong nội dung của nội dung bài viết này, mình sẽ trình diễn cách dùng con trỏ thao tác với mảng 1 chiều trong lập trình C.
Nội dung gồm những phần như sau:
– Vì nội dung bài viết có liên quan đến kiến thức và kỹ năng của những phần phía dưới nên những bạn hoàn toàn có thể xem lại nếu cần nhé:
– Ở nội dung bài viết những kỹ thuật trên mảng 1 chiều (không sử dụng con trỏ) đã lý giải rõ ràng những kỹ thuật thao tác với mảng một chiều rồi nên nội dung bài viết này tôi chỉ triệu tập vào cách sử dụng con trỏ thao tác với mảng một chiều thôi.
1. Nhập, xuất mảng những số nguyên
1. Nhập, xuất mảng những số nguyên
// Hàm nhập mảng void NhapMang(int *a, int n) for (int ii = 0; ii < n; ii++) printf("nNhap vao a[%d] = ", ii); scanf_s("%d", &a[ii]); // Hàm xuất mảng void XuatMang(int *a, int n) for (int ii = 0; ii < n; ii++) printf("%4d", a[ii]);
2. Thêm một thành phần vào mảng
2. Thêm một thành phần vào mảng
// Hàm thêm một thành phần vào 1 vị trí trong mảng void ThemPhanTu(int *a, int *n, int PhanTuThem, int ViTriThem) // Gia tăng bộ nhớ thêm một ô trước lúc thêm thành phần // (Khi dùng realloc thì truyền a, nó sẽ hiểu là truyền tham chiếu) realloc(a, ((*n) + 1) * sizeof(int *)); for (int ii = (*n); ii >= ViTriThem + 1; ii--) //SAU = TRƯỚC a[ii] = a[ii - 1]; // Tăng số lượng thành phần của mảng a (*n)++; a[ViTriThem] = PhanTuThem;
3. Xóa một thành phần khỏi mảng
3. Xóa một thành phần khỏi mảng
// Hàm xóa 1 thành phần tại 1 vị trí trong mảng void XoaPhanTu(int a[], int *n, int ViTriXoa) for (int ii = ViTriXoa + 1; ii <= (*n) - 1; ii++) //SAU = TRƯỚC a[ii - 1] = a[ii]; // Giảm số lượng thành phần của mảng a (*n)--; // Giảm bộ nhớ đi 1 ô (vì trên đã n-- rồi nên sẽ realloc với n) realloc(a, (*n) * sizeof(int *));
4. Hàm main thực thi chương trình
4. Hàm main thực thi chương trình
#include
This entry is part 39 of 69 in the series Học C Không Khó
90 / 100
Mảng 1 chiều là cấu trúc tài liệu thứ nhất và cũng là cấu trúc tài liệu đơn thuần và giản dị & phổ cập nhất. Mảng 1 chiều hay tiếng anh là One-Dimensional Array là nội dung bài viết thứ nhất trong loạt nội dung bài viết hướng dẫn về cấu trúc tài liệu tại Blog Nguyenvanhieu.vn. Hi vọng series này phục vụ cho những bạn những kiến thức và kỹ năng có ích về phần kiến thức và kỹ năng cấu trúc tài liệu. Bài viết ngày hôm nay sẽ trình diễn về mảng 1 chiều.
Sau bài học kinh nghiệm tay nghề này, bạn hoàn toàn có thể ghé thăm bài học kinh nghiệm tay nghề “Bài tập mảng 1 chiều có lời giải” để rèn luyện kiến thức và kỹ năng nhé. Hoặc bạn hoàn toàn có thể tự rèn luyện trực tuyến nhiều bài tập khác website Luyện Code Online.
1. Lý thuyết về mảng 1 chiều
Mảng là một tập hợp tuần tự những thành phần có cùng kiểu tài liệu và những thành phần được tàng trữ trong một dãy những ô nhớ liên tục trên bộ nhớ. Các thành phần của mảng được truy vấn bằng phương pháp sử dụng “chỉ số”. Mảng có kích thước N sẽ có được chỉ số từ 0 tới N – 1.
Ví dụ, với N = 5, khi đó chỉ số mảng(tiếng anh là index) sẽ có được mức giá trị từ 0 tới 4(5-1) tương ứng với 5 thành phần. Các thành phần trong mảng được truy vấn bằng phương pháp sử dụng array_name[index].
Hình ảnh mô phỏng cho cấu trúc mảng 1 chiềuHãy xem xét mảng sau, kích thước của mảng là 5. Nếu bạn muốn truy vấn giá trị 12, bạn hoàn toàn có thể truy vấn bằng phương pháp gọi arr[1].
2. Khai báo mảng 1 chiều
Cú pháp khai báo mảng 1 chiều rất khác nhau với từng ngôn từ lập trình.
Chẳng hạn, trong C/C++, việc khai báo mảng cần 2 tham số sau:
- Kích thước của mảng: Việc này xác lập số lượng thành phần hoàn toàn có thể được tàng trữ trong mảng.
- Kiểu tài liệu của mảng: Việc này chỉ định kiểu tài liệu của những thành phần trong mảng; là số nguyên, số thực, ký tự hay là kiểu tài liệu nào đó.
Một ví dụ khai báo mảng trong C/C++:
Đây là cách khai báo mảng tĩnh; cách khác là khai báo động kích thước vừa đủ dùng. Đối với mảng động, kích thước mảng sẽ tăng thêm khi số lượng thành phần mảng tăng thêm vượt qua kích thước cũ.
3. Khởi tạo mảng 1 chiều
Mảng hoàn toàn có thể được khởi tạo ngay tại thời gian khai báo mảng hoặc khởi tạo sau khi khai báo.
Cú pháp để khởi tạo mảng trong lúc khai báo là:
type arr[size] = elements
Một ví dụ khai báo kèm khởi tạo mảng trong C/C++:
int arr[5] = 4, 12, 7, 15, 9;
Mảng cũng hoàn toàn có thể được khởi tạo sau khi khai báo xong, bằng phương pháp gán giá trị cho từng thành phần của mảng sử dụng chỉ số:
type arr[size]
arr[index] = 12
Ví dụ trên C/C++:
int arr[5];
arr[0] = 4;
arr[1] = 12;
4. Các thao tác với mảng 1 chiều
Một thao tác đơn thuần và giản dị nhất và hay sử dụng nhất đó là việc lặp qua toàn bộ những thành phần của mảng Theo phong cách sau:
type arr[size] = elements
for idx from 0 to size
print arr[idx]
Một ví dụ trên ngôn từ C:
#include
int main()
// Array declaration and initialization
int arr[5] = 4, 12, 7, 15, 9;
// Iterate over the array
for(int idx=0; idx<5; idx++)
// Print out each element in a new line
printf("%dn", arr[idx]);
return 0;
Để cho code toàn bộ chúng ta được tối ưu hơn, sau này tôi xin chia mỗi hiệu suất cao thành 1 hàm riêng không liên quan gì đến nhau:
4.1. Thao tác nhập mảng 1 chiều
Hàm này nhận vào những đối số là mảng kiểu nguyên a, và số lượng thành phần n. Hàm không trả về giá trị gì nên có kiểu là void.
void NhapMang(int a[], int n)
for(int i = 0;i < n; ++i)
printf("nNhap phan tu a[%d] = ", i);
scanf("%d", &a[i]);
4.2. Thao tác xuất mảng 1 chiều
Tương tự như hàm nhập, hàm XuatMang cũng nhận vào mảng kiểu nguyên a và số lượng thành phần n. Hàm có mức giá trị trả về là kiểu void.
void XuatMang(int a[], int n)
for(int i = 0;i < n; ++i)
printf("nPhan tu a[%d] = %d", i, a[i]);
4.3. Chức năng tìm kiếm trong mảng 1 chiều
Vẫn nhận vào những đối số như 2 hàm nhập và xuất, và nhận thêm một đối số khác nữa là giá trị cần tìm kiếm v. Tuy nhiên, hàm này sẽ trả về chỉ số thứ nhất mà giá trị tại đó giá trị bằng với v. Nếu không còn mức giá trị nào thỏa mãn nhu cầu, hàm trả về giá trị -1.
int TimKiem(int a[], int n, int v)
for(int i = 0;i < n; ++i)
if(a[i] == v)
return i;
return -1;
Đây là một hàm thực thi tìm kiếm tuyến tính có độ phức tạp O(n). Bằng cách duyệt qua từng thành phần của mảng để kiểm tra.
Full source code và lời gọi hàm trong hàm main:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include
const int MAX = 100;
void NhapMang(int a[], int n)
for(int i = 0;i < n; ++i)
printf("nNhap phan tu a[%d] = ", i);
scanf("%d", &a[i]);
void XuatMang(int a[], int n)
for(int i = 0;i < n; ++i)
printf("nPhan tu a[%d] = %d", i, a[i]);
int TimKiem(int a[], int n, int v)
for(int i = 0;i < n; ++i)
if(a[i] == v)
return i;
return -1;
int main() n > MAX);
printf("n======NHAP MANG=====n");
NhapMang(arr, n);
printf("n======XUAT MANG=====n");
XuatMang(arr, n);
printf("n======TIM KIEM======n");
int v;
printf("nNhap vao gia tri can tim: ");
scanf("%d", &v);
printf("nTim thay so %d tai chi so %d!", v, TimKiem(arr, n, v));
Chạy thử chương trình:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Nhap so luong phan tu: 5
======NHAP MANG=====
Nhap phan tu a[0] = 1
Nhap phan tu a[1] = 2
Nhap phan tu a[2] = 3
Nhap phan tu a[3] = 4
Nhap phan tu a[4] = 5
======XUAT MANG=====
Phan tu a[0] = 1
Phan tu a[1] = 2
Phan tu a[2] = 3
Phan tu a[3] = 4
Phan tu a[4] = 5
======TIM KIEM======
Nhap vao gia tri can tim: 2
Tim thay so 2 tai chi so 1!
5. Bài tập thực hành thực tiễn
Bài tập mảng cơ bảnCho kích thước và những thành phần của mảng A. Hãy in những thành phần của mảng A theo thứ tự ngược lại.
Input:
- Dòng thứ nhất là số N – số lượng thành phần của mảng A
- N dòng tiếp theo, mỗi dòng là một số trong những nguyên, tương ứng với thành phần thứ i của mảng A, 0 <= i < N.
Output:
- In ra toàn bộ những thành phần của mảng A theo thứ tự ngược lại, mỗi thành phần trên một dòng.
4
1
2
7
15
9
915
7
2
1
4
5
Ràng buộc:
- 1 <= N <= 100
- 0 <= A[i] <= 1000
Một số yếu tố có vẻ như khó nhưng thực ra nó rất đơn thuần và giản dị. Hôm này Admin Hiếu gặp trở ngại vất vả với bài toán truy vấn phạm vi. Anh ấy có một mảng 1 chiều cứa những giá trị nhị phân 0 và 1. Có 2 kiểu truy vấn:
0 L R: Kiểm tra số được hình thành từ L tới R là số chẵn hay lẻ. Số được hình thành từ L tới R là giá trị thập phân của những số nhị phân từ L tới R phối hợp lại.
1 X: Đổi giá trị nhị phân tại chỉ số thứ X.
Input:
- Dòng thứ nhất chứa 2 số N và Q.. Dòng tiếp theo chứa N số 0 hoặc 1 cách nhau bởi 1 dấu cách. Q. dòng tiếp theo, mỗi dòng là một trong truy vấn.
Ouput:
- Với những truy vấn có dạng 0 L R in ra giá trị thập phân được tạo thành từ L tới R là chẵn hay lẻ. Chẵn thì in ra “EVEN“, lẻ thì in ra “ODD” không kèm dấu nháy.
Ràng buộc:
- 1<= N <= 10^6
- 0<= L <= R < N
- 1 <= Q. <= 10^6
0 1 4
EVENGiải thích: Truy vấn thứ nhất là một trong 2, do đó ta đổi giá trị tại chỉ số mảng 2 từ là 1 thành 0, khi đó mảng mới là: 1 0 0 1 0. Truy vấn thứ hai là 0 1 4, khi đó 01102 = 02^0 + 12^1 + 1*2^2 = 610 là số chẵn; Do đó, đáp án là EVEN.
Lưu ý: Các bạn nộp bài tập xuống mục phản hồi của bài học kinh nghiệm tay nghề. Admin sẽ chữa bài và nhìn nhận lời giải giúp những bạn.
Reply 0 0 Chia sẻ