LATEST

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ả:

bai22 01 png

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ả:

bai22 02 png

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ả:

bai22 03 png

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ả:

bai22 04 png

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ả:

bai22 05 png

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ả:

bai22 06 png

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ả:

bai22 08 png

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ả:

bai22 07 png

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn