Bài tập mảng 1 chiều c++ có lời giải
Xin chào các bạn, hôm nay phanmemdownload.com.vn sẽ cùng các bạn giải một số Bài tập mảng 1 chiều c++ có lời giải. Hiện tại chủ đề này không cho phép sử dụng hàm con nên đoạn code sẽ được thực thi hoàn toàn trong hàm main.
Nếu bạn chưa có kiến thức cơ bản về mảng 1 chiều, hãy đọc trước bài học Mảng 1-D trong C / C ++ để nắm kiến thức.
Nếu bạn muốn thực hành các bài tập lập trình được đánh giá đúng sai, hãy thực hành tại phần thực hành mã.
Bài tập mảng 1 chiều c++ có lời giải
Đây là bài tập tổng hợp về kiến thức mảng 1 chiều.
Đề thi nhập môn mảng 1 chiều
Bài tập mảng 1 chiều như sau:
Nhập từ bàn phím một mảng số nguyên gồm n phần tử.
- Tính trung bình cộng của các số lẻ ở vị trí chẵn
- Tìm số lớn nhất trong mảng đã nhập
- Tìm vị trí của các số nhỏ nhất trong mảng
- Đếm số ô vuông trong mảng
- Hiển thị các số nguyên tố trong mảng lên màn hình
- Thay các phần tử âm trong mảng được bằng 0
- Xóa các phần tử âm trong mảng
- Sắp xếp mảng đã nhập theo thứ tự tăng dần
Với bài tập mảng 1 chiều này, do em không sử dụng ma trận sao để làm câu 6 và 7. Hai câu 6 và 7 có mâu thuẫn gì. Vì vậy, khi chạy code, bạn cần lưu ý:
- Comment phần 6 nếu bạn muốn chạy phần 7, và ngược lại.
- Bỏ ghi chú như được mô tả trong mã để xem kết quả thay đổi Giải pháp
Bài tập mảng 1 chiều c++ có lời giải
Trong đoạn mã dưới đây, tất cả các phần đều có sẵn. Nhận xét giải thích mã rõ ràng. Các phần cũng đã được phân chia theo một bố cục rõ ràng. Bạn có thể sử dụng mã này như một giải pháp tham khảo cho bài tập trên.
Đây là lời giải đề thi tuyển sinh vào môn tin học – bài tập mảng 1 chiều sử dụng ngôn ngữ C.
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#include <stdio.h> #include <math.h> // Sử dụng sqrt const int MAX = 100000; int arr [MAX];
int main () { int n; printf (“ n So sánh n =”); scanf (“% d”, & n);
// Đầu vào for (int i = 0; i <n; ++ i) { printf (“ nNhap a [% d] =”, i); scanf (“% d”, & arr [i]); } / * ———————————— * / // 1. Kết tinh trung bình so le ; int sum = 0 int count = 0; for (int i = 1; i <n; i + = 2) { if (arr [i]% 2 == 1) { ++ count; sum + = arr [i]; } } printf (“ nAverage =% f”, (float) sum / count);
/ * ———————– * / // 2. Tim ban tot nhat tren the gioi vua input int maxNum = arr [0]; for (int i = 1; i <n; ++ i) { if (arr [i]> maxNum) maxNum = arr [i]; } printf (“ nTên cuối:% d”, maxNum);
/ * ———————– * / // 3. Tìm các phép so sánh trong 2 bước: // 1. Tìm giá trị nhỏ nhất minNum. // 2. In ra tất cả các giá trị có value = minNum // Trả về: Value = value + 1
// Tìm giá trị nhỏ nhất int minNum = arr [0]; for (int i = 1; i <n; ++ i) { if (arr [i] <minNum) minNum = arr [i]; }
// In ra giá trị nhỏ nhất printf (“ n Giá trị nhỏ nhất là:”); for (int i = 0; i <n; ++ i) { if (arr [i] == minNum) printf (“% d”, i + 1); }
/ * ———————————— * / // 4. Định nghĩa các phương thức chính xác trong / / Phương pháp so sánh có thể bằng giá trị gốc như: 1, 4, 9, … int scp = 0; phao rs; for (int i = 0; i <n; ++ i) { rs = sqrt (arr [i]); if (rs == (int) rs) ++ scp; } printf (“ nCó% d so với phương thức đúng!”, scp);
/ * ———————– * / // 5. Hiển thị tất cả các số nguyên chỉ là 1 và nó đầy. // So sánh số nguyên nhỏ nhất là 2 printf (“ nSo sánh số nguyên là:”); bool snt; for (int i = 0; i <n; i ++) { // Kiểm tra xem a [i] có phải được so sánh với số nguyên hay không? // nếu no chia cho số trong [2, a [i]] -> không phải so sánh số nguyên với snt = true; for (int j = 2; j <arr [i]; ++ j) { if (arr [i]% j == 0) snt = false; } if (arr [i]> = 2 && snt == true) printf (“% d”, arr [i]); }
/ * ———————- * / // 6. Thay thế các thành phần trong carry = 0. for (int i = 0; i <n; + + i) { if (arr [i] <0) arr [i] = 0; } // Nếu bạn muốn xem sự thay đổi, thì comment // printf (“ nSau khi thay thế văn bản:”); // for (int i = 0; i <n; ++ i) { // printf (“% d”, arr [i]); //}
// 7. Xóa tất cả các chức năng có trong trang // Nếu bạn muốn xem kết quả của phần này thì hãy comment ở phần tiếp theo. // Điều này sẽ thay đổi trạng thái của giai đoạn đầu tiên ^^ for (int i = 0; i <n; ++ i) { if (arr [i] <0) { for (int j = i; j <n- 1; j ++) { arr [j] = arr [j + 1]; } –n; } } // Nếu bạn muốn xem thay đổi thì có thể comment // printf (“ nPut sau khi xoá:”); // for (int i = 0; i <n; ++ i) { // printf (“% d”, arr [i]); //}
/ * ———————– * / // 8. Sap xep da; int tg for (int i = 0; i <n-1; ++ i) { for (int j = i + 1; j <n; ++ j) { if (arr [i]> arr [j]) { / / Trả về tg = arr [i]; arr [i] = arr [j]; arr [j] = tg; } } } // Nếu bạn muốn xem nó, hãy comment printf (“ n Bạn sẽ thấy:”); for (int i = 0; i <n; ++ i) { printf (“% d”, arr [i]); } }
|
---|
Một số bài tập mảng 1 chiều khác
Nhập và xuất mảng 1 chiều
Nhập một dãy số nguyên. Hiển thị dãy số đó trên màn hình.
0 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <conio.h>
main ()
{
int a [50];
int i, n;
printf (“So tien:”);
scanf (“% d”, & n);
for (i = 0; i <n; i ++)
{
scanf (“% d”, & a [i]);
}
printf (“ nInput vua:”);
for (i = 0; i <n; i ++)
{
printf (“% 5d”, a [i]);
}
getch ();
}
Bài tập in các số nguyên tố trong mảng
Nhập một dãy số nguyên xuất ra màn hình các số nguyên tố trong mảng, vị trí của các số đó trong mảng.
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 |
#include <stdio.h> #include <conio.h> main () { int a [50]; int i, n, j, kt; printf (“So tien:”); scanf (“% d”, & n); for (i = 0; i <n; i ++) { scanf (“% d”, & a [i]); } printf (“ nSố nguyên và số nguyên là:”); for (i = 0; i <n; i ++) { kt = 0; for (j = 2; j <= a [i] / 2; j ++) { if (a [i]% j == 0) kt = 1; } if (kt == 0) printf (“ nso nguyen to% d vi tri% d in”, a [i], i); } getch (); }
|
---|
Bài tập sắp xếp mảng, tìm trung bình cộng
Nhập dãy số nguyên có không quá 50 phần tử, in số vừa nhập
ra màn hình Hiển thị số lớn nhất trong mảng và vị trí của nó trong dãy.
Sắp xếp một dãy số theo giá trị của các phần tử theo
Tổng tăng dần và trung bình cộng của các số trong dãy.
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 49 50 51 52 53 54 55 |
#include <stdio.h> #include <conio.h> main () { int a [50]; int i, n, tg, max, j, s = 0; printf (“kiểu nhập:”); scanf (“% d”, & n); for (i = 0; i <n; i ++) { scanf (“% d”, & a [i]); } max = a [0]; for (i = 1; i <n; i ++) { if (a [i]> max) { max = a [i]; } } printf (“ nSo long =% d”, max); printf (“ n giá trị cuối cùng trong ngày là:”); for (i = 0; i <n; i ++) { if (a [i] == max) { printf (“% 6d”, i + 1); } } // ngày sap xep cho (i = 0; i <n-1; i ++) cho (j = i + 1; j <n; j ++) { if (a [i]> a [j]) { tg = a [i]; a [i] = a [j]; a [j] = tg; } } printf (“ nday so sau khi kiem tra la:”); cho (i = 0; i <n; i ++) { printf (“% 6d”, a [i]); } // So sánh thu gọn và trung bình trong ngày for (i = 0; i <n; i ++) { s = s + a [i]; } printf (“ nTất cả các kết quả phù hợp trong ngày là:% d”, s); printf (“ nTrung bình của các so sánh hàng ngày:% f”, (float) s / n); getch (); }
|
---|
Bài tập chèn phần tử vào mảng
Nhập dãy n số nguyên (0 <n <30), in số vừa nhập
ra màn hình Hiển thị các số chẵn và vị trí của chúng trong mảng
Sắp xếp dãy số theo giá trị của các phần tử theo thứ tự giảm dần .
Chèn số X vào dãy sao cho sau khi chèn giá trị các phần tử vẫn giảm dần (nhập x từ bàn phím
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#include <stdio.h> #include <conio.h> main () { int a [30], i, j, n, tg, v, x; printf (“Nhập kiểu:”); scanf (“% d”, & n); for (i = 0; i <n; i ++) { scanf (“% d”, & a [i]); } // hiển thị ngày và giờ trong ngày, printf (“nhap la:”); for (i = 0; i <n; i ++) { printf (“% 5d”, a [i]); } // xuất ra màn hình các số và giá trị trong ngày printf (“ nCác so sánh trong ngày và các số trong ngày là:”); for (i = 0; i <n; i ++) { if (a [i]% 2 == 0) { printf (“ nso% d get% d trong day”, a [i], i + 1); } } // so sánh for (i = 0; i <n-1; i ++) for (j = i + 1; j <n; j ++) { if (a [i)] <a [j]) { tg = a [i]; a [i] = a [j]; a [j] = tg; } } printf (“ nNgay so sau:”); for (i = 0; i <n; i ++) { printf (“% 5d”, a [i]); } // chèn x vào ngày tháng để sau khi chèn giá trị của các phần tử đầu vào (x vào phim) printf (“ nNhập giá trị đầu vào X:”); scanf (“% d”, & x); v = 0; i = 0; while (a [i]> x) { i ++; } v = i; for (i = n-1; i> = v; i–) { a [i + 1] = a [i]; } a [v] = x; printf (“ n Day sau khi insert:”); for (i = 0; i <n + 1; i ++) { printf (“% 5d”, a [i]); } getch (); }
|
---|
Bài tập tính tổng dương, bỏ số âm
Nhập một dãy số thực có không quá 50 phần tử, hiển thị tổng các số dương trong Dãy.
Xóa tất cả các số âm trong dãy.
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 |
#include <stdio.h> #include <conio.h> main () { int i, j, n, a [50], s = 0; printf (“Kiểu đầu vào”); scanf (“% d”, & n); for (i = 0; i <n; i ++) { scanf (“% d”, & a [i]); } for (i = 0; i <n; i ++) { if (a [i]> 0) { s = s + a [i]; } } printf (“Tất cả các trận đấu trong ngày là:% d”, s); // Xóa tất cả các số trong ngày for (i = 0; i <n; i ++) { if (a [i] <0) { for (j = i; j <n-1; j ++) { a [j] = a [j + 1]; } n = n-1; } } printf (“ n Ngày sau khi xóa là:”); for (i = 0; i <n; i ++) { printf (“% 5d”, a [i]); } getch (); }
|
---|
Bài tập tổng hợp
Nhập dãy số nguyên có không quá 50 phần tử và hiển thị giá trị trung bình cộng của các số chia hết cho 3 trong dãy. Chèn chữ số X vào vị trí thứ k trong dãy (x, k nhập từ bàn phím)
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 |
#include <stdio.h> #include <conio.h> main () { int a [50]; int i, n, t = 0, k, x, d = 0; printf (“Nhập kiểu:”); scanf (“% d”, & n); for (i = 0; i <n; i ++) { scanf (“% d”, & a [i]); } // in ra màn hình trung bình cộng của các phép so sánh chia hết cho 3 for (i = 0; i <n; i ++) { if (a [i]% 3 == 0) { t = t + a [i]; d = d + 1; } } if (d == 0) { printf (“khong so het 3 trong day”); } else { printf (“TBC so het 3 trong day la% f”, (float) t / d); } // chèn x vào giá trị k trong date printf (“ nNhập giá trị và giá trị x, k =”); scanf (“% d% d”, & x, & k); for (i = n-1; i> = k; i–) { a [i + 1] = a [i]; } a [k] = x; printf (“ n Day sau khi insert:”); for (i = 0; i <n + 1; i ++) { printf (“% 5d”, a [i]); } getch (); }
|
---|
Bạn có thể viết các giải pháp của các vấn đề trên bằng cách sử dụng các hàm!
Kết luận
Như vậy trong bài viết này mình đã hướng dẫn và cung cấp lời giải Đề thi nhập môn Tin học trường Đại học Điện lực. Tôi muốn bạn chuyển mã nguồn này thành một dạng hàm để tối ưu hóa và rút ngắn số dòng của mã này. Hãy coi nó như một bài tập cho bạn.
Chúc các bạn học tốt!
Nguồn: phanmemdownload.com.vn
source https://phanmemdownload.com/bai-tap-mang-1-chieu-c-co-loi-giai/
Nhận xét
Đăng nhận xét