In số chính phương trong mảng C / C++
Trong bài viết này, codehow sẽ hướng dẫn các bạn thực hiện chương trình in số chính phương trong mảng C / C++. Đây là dạng bài tập kết hợp giữa việc sử dụng hàm và mảng trong C / C++.
Trước khi đi vào viết chương trình, chúng ta cùng tìm hiểu qua số chính phương là gì đã nhé.
Ví dụ: Chúng ta có số 4 là số chính phương, vì 4 = 22. Tương tự như vậy chúng ta có số 9, 16, ... .
Vậy làm thế nào để viết chương trình in số chính phương trong mảng C / C++, hãy cùng mình bắt đầu ngay bây giờ thôi nhé.
In số chính phương trong mảng C / C++
Để in số chính phương trong mảng C / C++, đầu tiên chúng ta cần tạo một hàm kiểm tra số chính phương với tham số được truyền vào. Trong hàm ta khai báo một biến sqr, biến này dùng được lưu giá trị căn bậc hai của số cần kiểm tra.
Tiếp đến ta tạo điều kiện nếu bình phương số sqr mà bằng số kiểm tra thì đó chính là số chính phương. Ngược lại thì không phải số chính phương.
//tạo hàm kiểm tra số chính phương với 1 tham số được truyền vào bool soCP(int n){ //khai báo biến spr bằng căn bậc hai của biến n int sqr = sqrt(n); //nếu ta bình phương spr = n thì n chính là số chính phương if(sqr*sqr == n){ return true; } //ngược lại thì không phải số chính phương else return false; }
Tạo hàm inChinhPhuong()
để in số chính phương trong mảng C / C++ bằng cách sử dụng hàm soCP()
để kiểm tra từng phần tử trong mảng.
/* hàm đếm số nguyên tố trong mảng */ void inChinhPhuong(int a[], int n) { // ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng // cứ mỗi vòng lặp ta gọi hàm soCP() để kiểm tra phần tử đó printf("\nCác số nguyên tố trong mảng là: "); for(int i = 0; i < n; i++) { if(soCP(a[i]) == true && a[i] < 100) { printf("%d ", a[i]); } } }
Trong hàm main()
, khai báo và yêu cầu người dùng nhập vào số lượng, giá trị các phần tử trong mảng.
//khai báo biến i sử dụng cho vòng lặp for //biến count là số lượng phần tử trong mảng int i, count; //yêu cầu người dùng nhập vào số lượng cho phần tử printf("Nhập số lương phần tử trong mảng:"); scanf("%d", &count); //gán số lượng người dùng vào kích thước của mảng int number[count]; //yêu cầu người dùng nhập vào giá trị cho từng phần t ử của mảng printf("\nNhập giá trị cho từng phần tử trong mảng:\n"); for (i = 0; i < count; ++i) scanf("%d", &number[i]);
Sau đó gọi hàm inChinhPhuong()
và truyền vào số lượng, mảng chúng ta vừa tạo để thực hiện in các số chính phương có trong mảng.
//Gọi hàm inChinhPhuong() để in các số chính phương trong mảng ra màn hình inChinhPhuong(number, count);
Dưới đây là hai chương trình mình đã viết sẵn bằng hai ngữ khác nhau C và C++, các bạn có thể tham khảo nhé.
Chương trình C:
#include<stdio.h> #include<math.h> #include<stdbool.h> //tạo hàm kiểm tra số chính phương với 1 tham số được truyền vào bool soCP(int n){ //khai báo biến spr bằng căn bậc hai của biến n int sqr = sqrt(n); //nếu ta bình phương spr = n thì n chính là số chính phương if(sqr*sqr == n){ return true; } //ngược lại thì không phải số chính phương else return false; } /* hàm đếm số nguyên tố trong mảng */ void inChinhPhuong(int a[], int n) { // ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng // cứ mỗi vòng lặp ta gọi hàm soCP() để kiểm tra phần tử đó printf("\nCác số nguyên tố trong mảng là: "); for(int i = 0; i < n; i++) { if(soCP(a[i]) == true && a[i] < 100) { printf("%d ", a[i]); } } } int main() { //khai báo biến i sử dụng cho vòng lặp for //biến count là số lượng phần tử trong mảng int i, count; //yêu cầu người dùng nhập vào số lượng cho phần tử printf("Nhập số lương phần tử trong mảng:"); scanf("%d", &count); //gán số lượng người dùng vào kích thước của mảng int number[count]; //yêu cầu người dùng nhập vào giá trị cho từng phần t ử của mảng printf("\nNhập giá trị cho từng phần tử trong mảng:\n"); for (i = 0; i < count; ++i) scanf("%d", &number[i]); //Gọi hàm inChinhPhuong() để in các số chính phương trong mảng ra màn hình inChinhPhuong(number, count); printf("\n-----------------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); }
Kết quả:
Chương trình C++:
#include <iostream> #include <math.h> using namespace std; //tạo hàm kiểm tra số chính phương với 1 tham số được truyền vào bool soCP(int n){ //khai báo biến spr bằng căn bậc hai của biến n int sqr = sqrt(n); //nếu ta bình phương spr = n thì n chính là số chính phương if(sqr*sqr == n){ return true; } //ngược lại thì không phải số chính phương else return false; } void inChinhPhuong(int a[], int n) { // ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng // cứ mỗi vòng lặp ta gọi hàm soCP() để kiểm tra phần tử đó cout << "\nCác số chính phương trong mảng là: "; for (int i = 0; i < n; i++) { if (soCP(a[i]) == true && a[i] < 100) { cout << a[i] << " "; } } } int main() { //khai báo biến i sử dụng cho vòng lặp for //biến count là số lượng phần tử trong mảng int i, count; //yêu cầu người dùng nhập vào số lượng cho phần tử cout << "Nhập số lương phần tử trong mảng:"; cin >> count; //gán số lượng người dùng vào kích thước của mảng int number[count]; //yêu cầu người dùng nhập vào giá trị cho từng phần t ử của mảng cout << "\nNhập giá trị cho từng phần tử trong mảng:\n"; for (i = 0; i < count; ++i) cin >> number[i]; //Gọi hàm inChinhPhuong() để in các số chính phương trong mảng ra màn hình inChinhPhuong(number, count); cout << "\n-----------------------------------\n"; cout << "Chương trình này được đăng tại codehow.net"; }
Kết quả:
Như vậy là chúng ta đã cùng nhau thực hiện xong chương trình in số chính phương trong mảng C / C++. Các bạn có thể luyện tập với nhiều dạng bài tập hơn tại serries bài tập C / C++ của codehow nhé. Cảm ơn các bạn rất nhiều !!!