Thứ Ba, Tháng Ba 28, 2023
Presidentpmr.org
  • Trang chủ
  • Công nghệ
  • Game
  • Thủ thuật
  • Blog
  • Kinh doanh
  • Xe Tốt
  • Du lịch
  • Nội-Ngoại thất
No Result
View All Result
  • Trang chủ
  • Công nghệ
  • Game
  • Thủ thuật
  • Blog
  • Kinh doanh
  • Xe Tốt
  • Du lịch
  • Nội-Ngoại thất
No Result
View All Result
Presidentpmr.org
No Result
View All Result
Home Blog

Bài tập mảng 1 chiều c++ có lời giải

by Presidentpmr.org
25/02/2022
in Blog
0
bài tập mảng 1 chiều c++ có lời giải
0
SHARES
2.1k
VIEWS
Share on FacebookShare on Twitter

Để làm chủ ngôn ngữ lập trình C++, sử dụng mảng 1 chiều là một trong những kỹ năng thiết yếu nhất. Bài viết này sẽ giúp những bạn nào đang cảm thấy “lạc trôi” khi học lập trình cơ bản nắm được cách giải quyết các bài tập mảng 1 chiều C++ có lời giải.

Comparison of Nasal Steroids After FESS in CRSwNP – Full Text View – ClinicalTrials.gov testogel uk buy the future of pharma: how we could soon be prescribed personalised 4d printed drugs

Một số khái niệm về C++ cần nhớ

C++ là gì?

C++ nằm trong top 3 ngôn ngữ lập trình phổ biến nhất thế giới, hỗ trợ hầu như tất cả các phương pháp lập trình hiện nay như lập trình hướng thủ tục, lập trình hướng đối tượng, lập trình hướng module. Ngôn ngữ lập trình C++ được ra đời vào năm 1983 do nhà khoa học Bjarne Stroustrup nghiên cứu và cải tiến từ ngôn ngữ lập trình C. Do đó C++ gần như kế thừa toàn bộ các thuộc tính của C, đồng thời được nâng cấp và bổ sung nhiều chức năng tân tiến hơn.

Khái niệm mảng 1 chiều C++

bài tập mảng 1 chiều c++ có lời giải

Mảng 1 chiều (tiếng anh là One-Dimensional Array) là một loại cấu trúc dữ liệu trong ngôn ngữ lập trình C++, có chức năng lưu trữ một tập hợp gồm các phần tử (cùng kiểu dữ liệu), với độ dài cố định.

Mảng có kích thước là n sẽ có chỉ số chạy từ 0 đến n – 1. Ví dụ, với n = 5, khi đó các chỉ số của mảng sẽ có giá trị từ 0 tới 4 (tức 5 -1) tương ứng với 5 phần tử. Các phần tử trong mảng được gọi tên bằng code <em>array_name[index].

Bài tập mảng 1 chiều C++ có lời giải

Dưới đây là bài tập tổng hợp mang tính “kinh điển” về mảng 1 chiều trong lập trình C++.

Đề bài: Nhập từ bàn phím mảng số nguyên gồm n phần tử.

  1. Tính giá trị trung bình cộng của các số lẻ ở vị trí chẵn
  2. Tìm số lớn nhất trong mảng vừa nhập
  3. Tìm số nhỏ nhất trong mảng
  4. Đếm các số chính phương có trong mảng
  5. Hiển thị các số nguyên tố có trong mảng lên màn hình
  6. Thay thế các phần tử có giá trị âm trong mảng bằng số 0
  7. Xóa các phần tử âm có trong mảng
  8. Sắp xếp mảng đã nhập theo thứ tự tăng dần.

Lời giải:

  1. #include <stdio.h>
  2. #include <math.h> // Su dung ham sqrt
  3. const int MAX = 100000;
  4. int arr[MAX];
  5. int main(){
  6.     int n;
  7.     printf(“\nNhap so luong phan tu n = “);
  8.     scanf(“%d”, &n);
  9.     
  10.     // Nhap mang
  11.     for(int i = 0;i < n; ++i){
  12.         printf(“\nNhap a[%d] = “, i);
  13.         scanf(“%d”, &arr[i]);
  14.     }
  15.     /*————————————*/
  16.     // 1 .Tinh trung binh cong cac so le o vi tri chan
  17.     // Chu y: Vi tri chan = chi so le
  18.     int sum = 0;
  19.     int count = 0;
  20.     for(int i = 1; i < n; i+=2){
  21.         if(arr[i] % 2 == 1){
  22.             ++count;
  23.             sum += arr[i];
  24.         }
  25.     }
  26.     printf(“\nTrung binh cong = %f”, (float)sum/count);
  27.     
  28.     /*————————————*/
  29.     // 2. Tim so lon nhat trong mang vua nhap
  30.     int maxNum = arr[0];
  31.     for(int i = 1;i < n;++i){
  32.         if(arr[i] > maxNum) maxNum = arr[i];
  33.     }
  34.     printf(“\nPhan tu lon nhat: %d”, maxNum);
  35.     
  36.     /*————————————*/
  37.     // 3. Tim vi tri cac so nho nhat trong mang
  38.     // Can lam 2 buoc:
  39.     //     1. Tim gia tri nho nhat minNum.
  40.     //     2. In ra cac vi tri co gia tri = minNum
  41.     // Luu y: Vi tri = chi so + 1
  42.     
  43.     // Tim gia tri nho nhat
  44.     int minNum = arr[0];
  45.     for(int i = 1;i < n;++i){
  46.         if(arr[i] < minNum) minNum = arr[i];
  47.     }
  48.     
  49.     // In ra vi tri co gia tri nho nhat
  50.     printf(“\nVi tri co gia tri nho nhat la: “);
  51.     for(int i = 0;i < n;++i){
  52.         if(arr[i] == minNum) printf(“%d “, i+1);
  53.     }
  54.     
  55.     /*————————————*/
  56.     // 4. Dem cac so chinh phuong co trong mang
  57.     // So chinh phuong la so co can la so nguyen nhu: 1, 4, 9,…
  58.     int scp = 0;
  59.     float rs;
  60.     for(int i = 0;i < n;++i){
  61.         rs = sqrt(arr[i]);
  62.         if(rs == (int)rs) ++scp;
  63.     }
  64.     printf(“\nMang co %d so chinh phuong!”, scp);
  65.     
  66.     /*————————————*/
  67.     // 5. Hien thi cac so nguyen to co trong mang
  68.     // So nguyen to la so chi co 2 uoc duy nhat la 1 va chinh no.
  69.     // So nguyen to nho nhat la so 2
  70.     printf(“\nCac so nguyen to co trong mang la: “);
  71.     bool snt;
  72.     for(int i = 0;i < n;i++){
  73.         // Kiem tra a[i] co phai so nguyen to?
  74.         // gia su no la so nguyen to
  75.         // Neu no chia het cho so bat ky trong [2, a[i]] -> khong phai so nguyen to
  76.         snt = true;
  77.         for(int j = 2;j < arr[i]; ++j){
  78.             if(arr[i] % j == 0) snt = false;
  79.         }
  80.         if(arr[i] >= 2 && snt == true) printf(“%d “, arr[i]);
  81.     }
  82.     
  83.     /*————————————*/
  84.     // 6. Thay the cac phan tu am trong mang = 0.
  85.     for(int i = 0;i < n;++i){
  86.         if(arr[i] < 0) arr[i] = 0;
  87.     }
  88.     // Muon xem thay doi thi bo comment
  89. //  printf(“\nMang sau khi thay the la: “);
  90. //  for(int i = 0;i < n;++i){
  91. //      printf(“%d “, arr[i]);
  92. //  }
  93.     
  94.     // 7. Xoa cac phan tu am co trong mang
  95.     // Neu muon xem ket qua phan nay thi comment phan so 6 lai nhe
  96.     // Cai nay ma giai thich bang ca 1 bai van luon ^^
  97.     for(int i = 0;i < n;++i){
  98.         if(arr[i] < 0){
  99.             for(int j = i; j < n–1;j++){
  100.                 arr[j] = arr[j+1];
  101.             }
  102.             —n;
  103.         }
  104.     }
  105.     // Muon xem thay doi thi bo comment
  106. //  printf(“\nMang sau khi xoa phan tu am la: “);
  107. //  for(int i = 0;i < n;++i){
  108. //      printf(“%d “, arr[i]);
  109. //  }
  110.     /*————————————*/
  111.     // 8. Sap xep mang da nhap theo chieu tang dan
  112.     int tg;
  113.     for(int i = 0;i < n–1;++i){
  114.         for(int j = i+1; j < n;++j){
  115.             if(arr[i] > arr[j]){
  116.                 // Hoan vi
  117.                 tg = arr[i];
  118.                 arr[i] = arr[j];
  119.                 arr[j] = tg;
  120.             }
  121.         }
  122.     }
  123.     // Muon xem thay doi thi bo comment
  124.     printf(“\nMang sau khi sap xep tang dan la: “);
  125.     for(int i = 0;i < n;++i){
  126.         printf(“%d “, arr[i]);
  127.     }
  128. }

Một số dạng bài tập mảng 1 chiều khác

Dạng bài nhập, xuất mảng 1 chiều

Đề bài: Nhập vào một dãy số nguyên. Hiển thị ra màn hình dãy số đó.

Lời giải:

  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {    
  5.     int a[50];
  6.     int i,n;
  7.     printf(“Nhap so phan tu mang: “);
  8.     scanf(“%d”,&n);
  9.     for(i=0;i<n;i++)
  10.     {
  11.         scanf(“%d”,&a[i]);
  12.     }    
  13.     printf(“\nMang vua nhap la:”);
  14.     for(i=0;i<n;i++)
  15.     {
  16.         printf(“%5d”,a[i]);
  17.     }
  18.     getch();
  19. }

Dạng bài in ra các số nguyên tố trong mảng

Đề bài: Nhập vào một dãy số nguyên và đưa ra màn hình các số nguyên tố có trong mảng cùng với vị trí của chúng trong mảng.

Lời giải:

  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {    
  5.     int a[50];
  6.     int i,n,j,kt;
  7.     printf(“Nhap so luong phan tu:”);
  8.     scanf(“%d”,&n);
  9.     for(i=0;i<n;i++)
  10.     {
  11.         scanf(“%d”,&a[i]);
  12.     }    
  13.     printf(“\nCac so nguyen to co trong  mang va vi tri cac so do trong mang la:”);
  14.     for(i=0;i<n;i++)
  15.     {
  16.         kt=0;
  17.         for(j=2;j<=a[i]/2;j++)
  18.         {
  19.             if(a[i]%j==0)
  20.             kt=1;    
  21.         }
  22.         if(kt==0)
  23.         printf(“\nso nguyen to %d vi tri %d trong mang “, a[i], i );
  24.     }
  25.     getch();
  26. }

Dạng bài chèn phần tử vào mảng

Đề bài: Nhập 1 dãy n số nguyên (0<n<30)

  • Hiển thị trên màn hình dãy số vừa nhập
  • Hiển thị trên màn hình các số chẵn cùng với vị trí của chúng trong dãy
  • Sắp xếp dãy số theo thứ tự giá trị giảm dần.
  • Chèn một số X bất kỳ vào dãy số, với điều kiện sau khi chèn, thứ tự giá trị các phần tử vẫn giảm dần (X nhập từ bàn phím).

Lời giải:

  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {    
  5.     int a[50];
  6.     int i,n,tg,max,j,s=0;
  7.     printf(“nhap vao so phan tu: “);
  8.     scanf(“%d”,&n);
  9.     for(i=0;i<n;i++)
  10.     {        
  11.         scanf(“%d”, &a[i]);
  12.     }
  13.     max=a[0];
  14.     for(i=1;i<n;i++)
  15.     {
  16.         if(a[i]>max)
  17.         {
  18.             max =a[i];
  19.         }
  20.     }
  21.     printf(“\nSo lon nhat =%d”,max);
  22.     printf(“\nvi tri cua gia tri lon nhat trong day la: “);
  23.     for(i=0;i<n;i++)
  24.     {
  25.         if (a[i]==max)
  26.         {
  27.             printf(“%6d”, i+1);
  28.         }
  29.     }
  30. //sap xep day so theo thu tu tang dan
  31.     for(i=0;i<n–1;i++)
  32.        for(j=i+1; j<n; j++)
  33.        {
  34.         if(a[i]>a[j])
  35.           {
  36.             tg=a[i];
  37.              a[i]=a[j];
  38.               a[j]=tg;
  39.            }
  40.        }
  41.     printf(“\nday so sau khi sap xep la:”);
  42.        for(i=0;i<n;i++)
  43.        {
  44.           printf(“%6d”,a[i]);
  45.     }
  46. //Tinh tong va trung binh cong cac so trong day
  47.     for(i=0;i<n;i++)
  48.     {
  49.         s=s+a[i];
  50.        }
  51.     printf(“\nTong cac so trong day la: %d”,s);
  52.     printf(“\nTrung binh cong cac so trong day la: %f”, (float)s/n);
  53.     getch();
  54. }

Trên đây là một số bài tập mảng 1 chiều c++ có lời giải để các bạn luyện tập. Dạng bài tập về mảng trong ngôn ngữ lập trình C++ còn rất nhiều ở phía trước, vì vậy hãy luyện tập thành thạo các dạng bài cơ bản trên để nắm chắc kỹ thuật sử dụng mảng 1 chiều nhé! Chúc các bạn sớm chinh phục thành công ngôn ngữ lập trình C++.

Previous Post

Tâm bất biến giữa dòng đời vạn biến là gì?

Next Post

Cách chuyển ngôn ngữ win 7 từ tiếng trung sang tiếng anh đơn giản và dễ dàng nhất

Next Post
chuyển ngôn ngữ win 7 từ tiếng trung sang tiếng anh

Cách chuyển ngôn ngữ win 7 từ tiếng trung sang tiếng anh đơn giản và dễ dàng nhất

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đề xuất

Những kiểu tóc mullet đẹp, chất ngầu dành cho nam nữ

Những kiểu tóc mullet đẹp, chất ngầu dành cho nam nữ

1 tháng ago
Các món ăn làm từ bột mì siêu ngon mà bạn không thể bỏ lỡ

Các món ăn làm từ bột mì siêu ngon mà bạn không thể bỏ lỡ

2 tháng ago

Phổ biến

bài tập mảng 1 chiều c++ có lời giải

Bài tập mảng 1 chiều c++ có lời giải

2 năm ago
lỗi the snap-in below referenced in this document has been restricted by policy

Hướng dẫn cách khắc phục lỗi the snap-in below referenced in this document has been restricted by policy

2 năm ago
quy trình đấu thầu thuốc tại bệnh viện

Cập nhật quy trình đấu thầu thuốc tại bệnh viện mới nhất

2 năm ago
chuyển ngôn ngữ win 7 từ tiếng trung sang tiếng anh

Cách chuyển ngôn ngữ win 7 từ tiếng trung sang tiếng anh đơn giản và dễ dàng nhất

2 năm ago
Cách sửa lỗi Out of range trong liên minh huyền thoại

Cách sửa lỗi Out of range trong liên minh huyền thoại

2 năm ago
Presidentpmr.org

Presidentpmr.org Blog chia sẻ kiến thức, kinh nghiệm về thủ thuật, công nghệ,... được nhiều bạn quan tâm và theo dõi. Hy vọng bạn có được những kiến thức bổ ích. Hãy để lại những bình luận, nhận xét của bạn để mình có thể cải thiện chất lượng bài viết hơn nữa

Chuyên mục

  • Blog
  • Công nghệ
  • Du lịch
  • Game
  • Kinh doanh
  • Thủ thuật
  • Xe Tốt

Theo dõi Presidentpmr.org

  • Giới thiệu
  • Chính sách
  • Contact

Copyright © 2012 - 2017, Presidentpmr.org

No Result
View All Result
  • Chính sách bảo mật thông tin người dùng
  • Giới thiệu | Chúng tôi là ai?
  • Trang chủ

Copyright © 2012 - 2017, Presidentpmr.org