Bài Tập C++ Code Demo P1 – Cơ Bản

Chào mừng các bạn đến với chủ đề bài tập c++ tại blog: Phát Triển Phần Mềm 123AZ.

Đây là chủ đề mới mẻ nhằm chia sẻ với tất cả các bạn yêu thích học lập trình c++ và còn đang bỡ ngỡ trong quá trình nghiên cứu,  làm bài tập,  làm demo.

Chủ đề chia sẻ mẫu code cho bài tập c++ cơ bản, có thể giúp các bạn thực hành, tham khảo.

Tất cả các ví dụ đều được thực hành trên visual studio 2012.

1. Bài toán kinh điển: hello world
#include <conio.h>
#include <iostream>

int main()
{
  std::cout << "______________ hello world ______________";
  _getch();
  return 0;
}

 

2. Tính tổng hiệu tích thương 2 số.
#include <conio.h>
#include <iostream>

int main()
{
  double a = 0.0;
  double b = 0.0;
  std::cout << "a = ";
  std::cin >> a;
  std::cout << "b = ";
  std::cin >> b;

  std::cout << "\nSum = " << a + b;
  std::cout << "\nSub = " << a - b;
  std::cout << "\nMul = " << a*b;

  if (b != 0) std::cout << "\nDiv = " << a/b;
  else std::cout << "\nInvalid for div";

  _getch();
  return 0;
}

 

3. Tìm giá trị lớn nhất, nhỏ nhất giữa 2 số.
#include <conio.h>
#include <iostream>

int main()
{
  double a = 0.0;
  double b = 0.0;
  std::cout << "a = ";
  std::cin >> a;
  std::cout << "b = ";
  std::cin >> b;

  double max = (a > b) ? a : b;
  double min = (a < b) ? a : b;

  std::cout << "\nmax = " << max;
  std::cout << "\nmin = " << min;

  _getch();
  return 0;
}

 

4. Giải Phương Trình Bậc Hai.
#include <conio.h>
#include <iostream>

int main()
{
  double a = 0.0;
  double b = 0.0;
  double c = 0.0;
  std::cout << "\n a = ";
  std::cin >> a;
  std::cout << "\n b = ";
  std::cin >> b;
  std::cout << "\n c = ";
  std::cin >> c;

  double deltal = b*b - 4*a*c;

  if (deltal < 0)
  {
    std::cout << "\n Phuong trinh vo nghiem";
  }
  else if (deltal == 0)
  {
    std::cout << "\n phuong trinh co nghiem kep";
    double ret = -b/(2*a);
    std::cout << "\n ret = " << ret;
  }
  else 
  {
    std::cout << "\n Phuong trinh co hai nghiem phan biet";
    double ret1 = (-b + sqrt(deltal))/(2*a);
    double ret2 = (-b - sqrt(deltal))/(2*a);
    std::cout << "\n ret 1 = " << ret1;
    std::cout << "\n ret 2 = " << ret2;
  }

  _getch();
  return 0;
}

 

5. Kiểm tra 1 số có phải số nguyên tố hay không ?
#include <conio.h>
#include <iostream>

int main()
{
  int a = 0;
  std::cout << "a = ";
  std::cin >> a;
  if (a <= 3)
  {
    std::cout << "\n a la 1 so nguyen to";
  }
  else
  {
    bool no_div = true;
    for (int i = 2; i <= sqrt((float)a); i++)
    {
      if (a%i==0)
      {
        std::cout << "a la khong phai la 1 so nguyen to";
        no_div = false;
        break;
      }
    }

    if (no_div) std::cout << "\n a la 1 so nguyen to";
  }

  _getch();
  return 0;
}

 

6. Nhập vào 3 số in ra trung bình cộng, trung bình nhân của 3 số.
#include <conio.h>
#include <iostream>

int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  std::cout << "a = ";
  std::cin >> a;
  std::cout << "b = ";
  std::cin >> b;
  std::cout << "c = ";
  std::cin >> c;

  std::cout << "\n Trung binh cong = " << (a + b + c)/3;
  std::cout << "\n Trung binh nhan = " << (a*b*c)/3;

  _getch();
  return 0;
}

 

7. Viết chương trình nhập cạnh, bán kính, in ra diện tích  chu vi các hình vuông, hình chữ nhật, hình tròn.
#include <conio.h>
#include <iostream>

int main()
{
  int a = 0;
  int b = 0;
  int r = 0;
  std::cout << "a = ";
  std::cin >> a;
  std::cout << "b = ";
  std::cin >> b;
  std::cout << "r = ";
  std::cin >> r;

  std::cout << "\n S hinh vuong canh a = " << a*a;
  std::cout << "\n S hinh chu canh a, b = " << a*b;
  std::cout << "\n S hinh tron ban kinh r =  " << r*r*3.14;

  _getch();
  return 0;
}

 

8. Nhập vào một số nguyên, kiểm tra , in ra số nguyên đó là âm hay dương, chẵn hay lẻ.
#include <conio.h>
#include <iostream>

int main()
{
  int a = 0;
  std::cout << "a = ";
  std::cin >> a;
  if ( a >= 0) std::cout << "\n a la so duong";
  else std::cout << "\n a la so am";

  if (a%2 == 0) std::cout << "\n a la so chan";
  else std::cout << "\n a la so le";

  _getch();
  return 0;
}
9. Nhập số tự nhiên n. In ra màn hình biểu diễn dạng nhị phân của n
#include <conio.h>
#include <iostream>

int main()
{
  int n = 0;
  int A[50];

  std::cout << "  Nhap n = ";
  std::cin >> n;
  int j = 0;
  while (n != 0)
  {
      A[j] = n % 2;
      n /= 2;
      j++;
  }

  std::cout << "Bieu dien nhi phan n = ";
  for (int k = j - 1; k >= 0; k--)
  {
    std::cout << A[k] <<" "; 
  }
  _getch();
  return 0;
}

 

10. Tìm Số hoàn chỉnh:

Là số bằng tổng mọi ước của nó (ko tính nó) ví dụ 6 = 1 + 2 + 3. Tìm và in ra tất cả các số hoàn chỉnh < 1000

#include <conio.h>
#include <iostream>

int main()
{
  int a[1000];

  int idx = 0;
  for (int i = 1; i < 1000; ++i)
  {
    int val = i/2;
    int sum = 0;
    for (int j = 1; j <= val; ++j)
    {
      if (i%j == 0)
      {
        sum += j;
      }
    }

    if (sum == i)
    {
      a[idx] = i;
      idx++;
    }
  }

  std::cout << "\n Cac so hoan chinh < 1000:" << std::endl;
  for (int t = 0; t < idx; t++)
  {
    std::cout << a[t] << " ";
  }

  _getch();
  return 0;
}

 

11. Tìm Số sinh đôi.

Là các số nguyên tố mà khoảng cách giữa chúng là 2. Ví dụ 5 và 7.  11 và 13. Hãy in tất cả các cặp số sinh đôi < 1000

#include <conio.h>
#include <iostream>

int main()
{
  int a[1000];

  int idx = 0;
  for (int i = 1; i < 1000; ++i)
  {
    int val = i/2;
    bool no_div = true;
    for (int j = 2; j <= val; ++j)
    {
      if (i%j == 0)
      {
        no_div = false;
        break;
      }
    }

    if (no_div == true)
    {
      a[idx] = i;
      idx++;
    }
  }

  std::cout << "\n Cac cap so sinh doi < 1000 la:" << std::endl;
  for (int t = 0; t < idx-1; t++)
  {
    int n1 = a[t];
    int n2 = a[t+1];
    if ((n2-n1) == 2)
    {
      std::cout << "("<< n1 << "-" << n2 << ")";
      std::cout << "\n";
    }
  }

  _getch();
  return 0;
}

 

12. Nhập vào 1 mảng giá trị, tìm số lớn nhất trong mảng, số bé nhất trong mảng.
#include <conio.h>
#include <iostream>

int main()
{
  int a[20];
  int n = 0;
  std::cout << "\n Nhap so phan tu mang = ";
  std::cin >> n;
  std::cout << "\n Nhap cac gia tri mang \n";
  for (int i = 0; i < n; ++i)
  {
    std::cout << "\n a["<<i<<"] = ";
    std::cin >> a[i];
  }

  int mmin = a[0];
  int mmax = a[0];
  for (int j = 0; j < n; j++)
  {
    mmin = (mmin > a[j]) ? a[j] : mmin;
    mmax = (mmax < a[j]) ? a[j] : mmax;
  }

  std::cout << "\n Phan tu lon nhat = " << mmax;
  std::cout << "\n Phan tu nho nhat = " << mmin;

  _getch();
  return 0;
}

 

13. Nhập vào 1 mảng sắp xếp mảng theo thứ tự tăng dần, giảm dần, và in ra thứ tự được sắp xếp.

+ Demo tăng dần sử dụng insertion sort

#include <conio.h>
#include <iostream>

int main()
{
  int arr[20];
  int n = 0;
  std::cout << "\n Nhap so phan tu mang = ";
  std::cin >> n;
  std::cout << "\n Nhap cac gia tri mang \n";
  for (int i = 0; i < n; ++i)
  {
    std::cout << "\n a["<<i<<"] = ";
    std::cin >> arr[i];
  }

  //Su dung Insertion Sort Algorithm
  int j = 0;
  for (int i = 1; i < n; i++)
  {
    int key = arr[i];
    j = i-1;

    while (j >= 0 && arr[j] > key)
    {
      arr[j+1] = arr[j];
      j = j-1;
    }
    arr[j+1] = key;
  }

  std::cout << "Mang sau khi sap xep :";
  for (int i = 0; i < n; ++i)
  {
    std::cout << arr[i] << "  ";
  }
  _getch();
  return 0;
}

+ Demo giảm dần dùng insertion sort. Chỉ đơn giản thay: arr[j] > key thành arr[j] < key trong vòng while.

14. Nhập vào tọa độ 2 điểm A(Xa, Ya) và B(Xb, Yb). Tính khoảng cách hai điểm
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

int main()
{

  float distance = 0.0;
  int xa = 0;
  int xb = 0;
  int ya = 0;
  int yb = 0;
  
  int dx, dy;
  std::cout << "Xa = ";
  std::cin >> xa;
  std::cout << "Ya = ";
  std::cin >> ya;
  std::cout << "Xb = ";
  std::cin >> xb;
  std::cout << "Yb = ";
  std::cin >> yb;
  dx = xa - xb;
  dy = ya - yb;
  distance = sqrt((double) dx*dx + dy*dy);

  std::cout << "Distance between two points = " << distance;
  _getch();
  return 0;
}
15. Bài toán quay số
Nhập vào 1 số có nhiều chữ số, lần lượt quay chữ số đơn vị về bên phải thành số đầu tiên, và cứ thực hiện như vậy cho đến khi số nhập vào trở lại như ban đầu.

Ví dụ: Nhập vào là 1234567 => 7123456 =>6712345=>5671234=>……1234567

#include <iostream>
#include <conio.h>
#include <math.h>

int main()
{
  int x = 12345678;
  int p = x;
  std::cout << "Rotation Number: " << p << "\n";
  while(1)
  {
    int m = p % 10;
    int n = p / 10;
    p = n;
    int num_digit = log10((double)n) + 1;
    p = p + pow((double)10, num_digit) * m;
    std::cout << p << "\n";
    if(p == x)
      break;

  }
  _getch();
  return 0;
}

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.