Bài tập sử dụng hàm trong C / C++
Trong bài viết này, codehow sẽ hướng dẫn các bạn giải một vài bài tập sử dụng hàm trong C / C++. Ở các bài trước chúng ta đã cùng nhau tìm hiểu về hàm là gì? Cách viết hàm và gọi hàm trong C / C++ rồi đúng không ạ.
Vậy cần phải luyện tập để có thể hiểu rõ hơn và áp dụng vào các bài tập trong C / C++. Không có cách nhớ lâu nào bằng cách luyện tập với nó mỗi ngày.
Bây giờ hãy cùng mình thực hiện thôi nhé, mỗi bài tập sẽ được giải bằng hai ngôn ngữ khác nhau là C và C++.
Bài tập sử dụng hàm trong C / C++ thứ nhất
Đề bài: Hiển thị các số nguyên tố trong khoảng được nhập bởi người dùng (sử dụng hàm trong C / C++).
Gợi ý:
- Viết hàm
KTraSNT()
với tham số int n, có nhiệm vụ kiểm tra số n có phải số nguyên tố hay không. - Yêu cầu người dùng nhập vào hai số đầu và cuối, với điều kiện số thứ hai phải lớn hơn số thứ nhất. Nếu không sẽ yêu cầu nhập lại.
- Hiển thị danh sách các số là số nguyên tố trong khoảng ra màn hình.
Chương trình C:
#include <stdio.h> int KTraSNT(int n) { int j, flag = 1; for (j = 2; j <= n / 2; ++j) { if (n % j == 0) { flag = 0; break; } } return flag; } int main(void) { int n1, n2, i, flag; do{ printf("Nhập vào giá trị đầu: "); scanf("%d", &n1); printf("Nhập vào giá trị cuối: "); scanf("%d", &n2); if(n1 >= n2) printf("Vui lòng nhập số đầu nhỏ hơn số cuối!!\n"); }while(n1 >= n2); printf("Các số nguyên tố từ %d đến %d là: ", n1, n2); for (i = n1 + 1; i < n2; ++i) { flag = KTraSNT(i); if (flag == 1) printf("%d ", i); } printf("\n----------------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; int KTraSNT(int n) { int j, flag = 1; for (j = 2; j <= n / 2; ++j) { if (n % j == 0) { flag = 0; break; } } return flag; } int main() { int n1, n2, i, flag; do{ cout<<"Nhập vào giá trị đầu: "; cin>>n1; cout<<"Nhập vào giá trị cuối: "; cin>>n2; if(n1 >= n2) cout<<"Vui lòng nhập số đầu nhỏ hơn số cuối!!\n"; }while(n1 >= n2); cout<<"Các số nguyên tố từ "<<n1<<" đến "<<n2<<" là: "; for (i = n1 + 1; i < n2; ++i) { flag = KTraSNT(i); if (flag == 1) cout<<i<<" "; } cout<<"\n----------------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; return 0; }
Kết quả:
Bài tập sử dụng hàm trong C / C++ thứ hai
Đề bài: Tính giai thừa của một số được nhập bởi người dùng, yêu cầu số được nhập vào phải lớn hơn 1. Nếu nhỏ hơn 1 thì yêu cầu nhập lại (sử dụng hàm trong C / C++).
Gợi ý:
- Viết hàm tính giai thừa với tham số được truyền vào.
- Sử dụng vòng lặp for lặp từ 1 đến n, với mỗi lần lặp ta lấy kết qủa giai thừa nhân với i (gt = gt * i).
- Gọi hàm và hiển thị kết quả ra màn hình.
Chương trình C:
#include <stdio.h> int TinhGT(int n) { int gt = 1; for (int i = 1; i <= n; i++){ gt = gt * i; } return gt; } int main(void) { int n; do{ printf("Nhập vào giá trị cần tính: "); scanf("%d", &n); if(n <= 0) printf("Vui lòng nhập số lớn hơn 1!!\n"); }while(n <= 0); printf("%d! = %d ",n, TinhGT(n)); printf("\n----------------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; int TinhGT(int n) { int gt = 1; for (int i = 1; i <= n; i++){ gt = gt * i; } return gt; } int main() { int n; do{ cout<<"Nhập vào giá trị cần tính: "; cin>>n; if(n <= 0) cout<<"Vui lòng nhập số lớn hơn 1!!\n"; }while(n <= 0); cout<<n<<"! = "<< TinhGT(n); cout<<"\n----------------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; return 0; }
Kết quả:
Bài tập sử dụng hàm trong C / C++ thứ ba
Đề bài: Kiểm tra một số có phải là số chính phương hay không, sau đó hiển thị thông báo ra màn hình (sử dụng hàm trong C / C++).
Gợi ý:
- Viết hàm kiểm tra số chính phương với tham số được truyền vào.
- Yêu cầu người dùng nhập vào số cần kiểm tra.
- Hiển thị thông báo ra màn hình.
Chương trình C:
#include <stdio.h> #include <math.h> #include <stdbool.h> bool scp(int n){ int sqr = sqrt(n); return (sqr*sqr == n); } int main(void) { int n; printf("Nhập vào giá trị cần kiểm tra: "); scanf("%d", &n); if(scp(n)){ printf("Đây là số chính phương!!!"); } else{ printf("Đây không phải là số chính phương !!!"); } printf("\n----------------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> #include <math.h> using namespace std; bool scp(int n){ int sqr = sqrt(n); return (sqr*sqr == n); } int main() { int n; cout<<"Nhập vào giá trị cần kiểm tra: "; cin>>n; if(scp(n)){ cout<<"Đây là số chính phương!!!"; } else{ cout<<"Đây không phải là số chính phương !!!"; } cout<<"\n----------------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; return 0; }
Kết quả:
Bài tập sử dụng hàm trong C / C++ thứ tư
Đề bài: Viết hàm in ra hình tam giác bằng các dấu *, với chiều cao là tham số được truyền vào, yêu cầu số đó phải lớn hơn 1 (sử dụng hàm trong C / C++).
Gợi ý:
- Viết hàm in hình tam giác với chiều cao là tham số truyền vào.
- Yêu cầu người dùng nhập vào chiều cao, sử dụng vòng lặp do...while để tạo điều kiện lớn hơn 1.
- Gọi hàm để in tam giác ra màn hình.
Chương trình C:
#include <stdio.h> #include <math.h> #include <stdbool.h> void InTamGiac(int h){ for(int i = 1; i <= h; i++) { //in so ky tu sao for(int j = 1; j <= i; j++) { printf("* "); } printf("\n"); } } int main(void) { int h; do{ printf("Nhập vào chiều cao h: "); scanf("%d", &h); if(h <= 1) printf("Vui lòng nhập chiều cao lớn hơn 1!!!\n"); }while(h <= 1); InTamGiac(h); printf("\n----------------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> #include <math.h> using namespace std; void InTamGiac(int h){ for(int i = 1; i <= h; i++) { //in so ky tu sao for(int j = 1; j <= i; j++) { cout << "* "; } cout << endl; } } int main() { int h; do{ cout<<"Nhập vào chiều cao h: "; cin>>h; if(h <= 1) cout<<"Vui lòng nhập chiều cao lớn hơn 1!!!\n"; }while(h <= 1); InTamGiac(h); cout<<"\n----------------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; return 0; }
Kết quả: