Bài tập c++ cơ bản có lời giải

Code C++ có rất nhiều điều bạn cần học và nên thực hành chăm chỉ. Những bài tập C++ kèm đáp án dưới đây sẽ giúp bạn sử dụng ngôn ngữ lập trình này dễ dàng hơn.

Show

Dù code và cú pháp cơ bản ở ngôn ngữ lập trình C và C++ giống nhau. Tuy nhiên, là một ngôn ngữ lập trình ở cấp độ trung, C++ có lợi thế trong việc lập trình các ứng dụng cấp thấp và cấp cao hơn.

Điểm nổi bật của các chương trình C++

  • C++ là một ngôn ngữ đơn giản. Các chương trình được chia thành những đơn vị và các phần logic. Nó cũng hỗ trợ thư viện phong phú cùng nhiều kiểu dữ liệu khác nhau.
  • C++ không phải nền tảng độc lập như các chương trình được tạo trên Linux mà có thể không chạy trên windows.
  • Với ngôn ngữ C++, bạn có thể phát triển các ứng dụng quy mô lớn cũng như lập trình hệ thống.
  • Nó có sẵn một thư viện thuật toán cấu trúc dữ liệu, bao gồm cả thư viện bên thứ ba để phát triển ứng dụng thật nhanh.
  • Trong C++, không có chi phí xử lý bổ sung như thu gom rác, nhập dữ liệu linh động…
  • Hỗ trợ con trỏ để người dùng có thể trực tiếp thao tác trên địa chỉ lưu trữ.

Bên cạnh các bài tập Python, Java, Quản Trị Mạng cũng tổng hợp cho các bạn một số bài tập C++ cơ bản để luyện tập thêm trong quá trình học ngôn ngữ lập trình C++.

Danh mục bài tập C++ này được chia thành 9 phần, mỗi phần có từ 3 đến 5 bài, với cấp độ khó tăng dần. Ban đầu bạn sẽ "khởi động" với những bài tập C++ hết sức cơ bản, như mô phỏng phép nhân tay, in số tiền, kiểm tra một bộ 3 số xem có phải là cạnh của một tam giác không, tính chu vi, diện tích tam giác đó.

Dần dần sẽ là những bài khó hơn như tạo và quản lý danh sách sinh viên, tài liệu, in hoặc thực hiện các công việc khác theo yêu cầu cùa đề bài. Thậm chí là vẽ cả đồ thị của hàm lượng giác.

Danh mục bài tập C++

Bài tập C++ số 1

Câu 1: Mô phỏng phép nhân tay

Lập trình in ra màn hình mô phỏng phép nhân tay 2 số nguyên dương có 3 chữ số nhập từ bàn phím. Ví dụ với 2 số nhập vào là 763 và 589 thì phải in ra màn hình như sau:

Bài tập c++ cơ bản có lời giải

Code mẫu:


# include

# include
void
main ()
{
  int a, b;
  char dv, chuc, tram;
  clrscr ();
  printf ("Nhap so bi nhan co 3 chu so a=");
  scanf ("%d", &a);
  printf ("Nhap so nhan co 3 chu so b=");
  scanf ("%d", &b);
  dv = b % 10;
  chuc = b % 100 / 10;
  tram = b / 100;
  printf ("\nMo phong phep nhan tay\n\n");
  printf ("%20d\n", a);
  printf ("%15c%5d\n", 'x', b);
  printf ("%20s\n", "-------");
  printf ("%20d\n", a * dv);
  printf ("%19d\n", a * chuc);
  printf ("%18d\n", a * tram);
  printf ("%20s\n", "-------");
  printf ("%20ld\n", long (a) * b);
  getch ();
}

Câu 2: Nhập số tiền, in số tờ, mệnh giá

Một người cần rút một số tiền T từ ngân hàng và muốn tổng số tờ ít nhất. Cho biết có các loại tiền mệnh giá 100, 20, 5 và 1. Nhập từ bàn phím số tiền T và in ra số tờ mỗi loại mệnh giá và tổng số tờ nhận được.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

Câu 3: Đổi số sang số La Mã

Hãy lập trình nhập 1 số nguyên dương nhỏ hơn 1000 và đổi sang số La mã tương ứng, in kết quả ra màn hình.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

Câu 4: In cách đọc số

In ra màn hình cách đọc một số nguyên dương nhỏ hơn 1000000. Ví dụ số 726503 đọc là: bảy mươi hai vạn sáu ngàn năm trăm linh ba.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

Câu 5: Giải phương trình bậc hai

Lập trình giải phương trình ax2 + bx + c = 0, các hệ số thực a, b, c nhập từ bàn phím.

Code mẫu:


# include 

# include 

# include 
void main()
{
  float a, b, c, d;
  clrscr();
  printf("Nhap cac he so a, b, c : ");
  scanf("%f%f%f", &a, &b, &c);
  if (a)
  {
    d = b *b - 4 *a * c;
    if (d < 0) printf("Vo nghiem !");
    if (d == 0) printf("Nghiem kep x=%4.2f", -0.5 *b / a);
    if (d > 0)
    {
      printf("Hai nghiem phan biet :\n");
      printf("x1=%4.2f", 0.5 *(-b - sqrt(d)) / a);
      printf(" x2=%4.2f", 0.5 *(-b + sqrt(d)) / a);
    }
  }
  else if (b) printf("Mot nghiem x=%4.2f", -c / b);
  else if (c) printf("Vo nghiem !");
  else printf("Vo so nghiem !");
  getch();
}

Bài tập C++ số 2

Câu 1: Kiểm tra 3 số có phải cạnh tam giác không, nếu có là loại tam giác nào, tính chu vi, diện tích

Nhập 3 số thực a, b, c và kiểm tra 3 số đó có phải là 3 cạnh của 1 tam giác không? Nếu là 3 cạnh tam giác thì cho biết là tam giác nào trong các loại tam giác sau: đều, vuông cân, vuông, cân, thường và tính chu vi, diện tích của tam giác đó. In kết quả ra màn hình.

Code mẫu:


# include 

# include 

# include 
void main()
{
  float a, b, c, p, s;
  int deu, vuong, can;
  clrscr();
  printf("Nhap cac so thuc a, b, c : ");
  scanf("%f%f%f", &a, &b, &c);
  if (a + b > c && a + c > b && b + c > a)
  {
    printf("La ba canh mot tam giac ");
    deu = (a == b) && (b == c);
    vuong = (a *a + b *b == c *c) || (a *a + c *c == b *b) || (b *b + c *c == a *a);
    can = (a == b) || (a == c) || (b == c);
    if (deu) printf(" deu\n");
    else if (vuong && can) printf(" vuong can\n");
    else if (vuong) printf(" vuong\n");
    else if (can) printf(" can\n");
    else printf(" thuong\n");
    p = (a + b + c) / 2;
    printf("Chu vi = %4.2f, Dien tich = %4.2f", 2 *p, sqrt(p *(p - a) *(p - b) *(p - c)));
  }
  else printf("Khong phai la ba canh mot tam giac\n");
  getch();
}

Câu 2: Tính số năm cần gửi tiết kiệm

Một người cần có một số tiền T, tích lũy bằng cách gửi tiết kiệm số tiền ban đầu là S với lãi suất có kỳ hạn theo năm là P% theo phương thức lũy tiến (lãi của mỗi năm được cộng vào với tiền gốc). Hãy nhập vào các số thực T, S, P và xác định số năm cần gửi tiết kiệm.

Code mẫu:


# include 

# include 
void main()
{
  float s, t, p;
  int n;
  clrscr();
  printf("Nhap so tien ban dau : ");
  scanf("%f", &s);
  printf("Nhap so tien can co : ");
  scanf("%f", &t);
  printf("Nhap lai suat %% nam : ");
  scanf("%f", &p);
  for (p = 0.01 *p, n = 0; s < t; s += s *p, n++);
  printf("So nam can gui tiet kiem = %d\n", n);
  printf("Sau %d nam gui tiet kiem, so tien co la : %4.2f", n, s);
  getch();
}

Câu 3: In số PI tính được với sai số cho trước

Lập trình tính số PI với sai số eps cho trước nhập từ bàn phím. Biết rằng số PI tính theo công thức: PI = 4 - 4/3 + 4/5 - 4/7 +... tính tổng các số hạng có giá trị không nhỏ hơn eps. In ra số PI tính được và số PI của Turbo C++ với 10 chữ số thập phân để so sánh.

Code mẫu:


# include 

# include 

# include ;//chua hang so pi la M_PI
void main()
{
  float pi, t, n, eps, dau;
  clrscr();
  printf("Nhap sai so eps=");
  scanf("%f", &eps);
  pi = 0;
  t = 4;
  n = dau = 1;
  do
  {
    pi += dau * t;
    n = n + 2;
    dau = -dau;
    t = 4 / n;
  } while (t >= eps);
  printf("\nSo PI tinh duoc voi sai so %12.10f, PI=%12.10f\n", eps, pi);
  printf("\nSo PI cua Turbo C++, PI=%12.10f\n", M_PI);
  getch();
}

Câu 4: Tìm và in số hoàn hảo

Tìm và in ra màn hình tất cả các số hoàn hảo không vượt quá số n cho trước nhập từ bàn phím. Số hoàn hảo là số bằng tổng các ước số của nó không kể ước số là chính số đó. Ví dụ số 6 là số hoàn hảo vì 6=1+2+3.

Code mẫu:


# include 

# include 
void main()
{
  int n, i, j, s, ts;
  clrscr();
  printf("Nhap n=");
  scanf("%d", &n);
  printf("Cac so hoan hao khong vuot qua %d la :", n);
  for (ts = 0, i = 2; i <= n; i++)
  {
    s = 1;
    for (j = 2; j <= i / 2; j++)
      if (i % j == 0) s += j;
    if (s == i)
    {
      ts++;
      printf("\n %d = 1", i);
      for (j = 2; j <= i / 2; j++)
        if (i % j == 0) printf(" + %d", j);
    }
  }
  if (ts) printf("\nCo tat ca %d so hoan hao", ts);
  else printf("\nKhong co so hoan hao nao");
  getch();
}

Câu 5: Tìm và in các số nguyên tố nhỏ hơn n

Tìm và in ra màn hình tất cả các số nguyên tố không vượt quá số n cho trước nhập từ bàn phím. Số nguyên tố là số chỉ có ước số là 1 và chính số đó.

Code mẫu:


# include 

# include 
void main()
{
  int n, i, j, d;
  clrscr();
  printf("Nhap gia tri N : ");
  scanf("%d", &n);
  printf("Cac so nguyen to khong vuot qua %d la :\n", n);
  for (d = 0, i = 2; i <= n; i++)
  {
    for (j = 2; j <= i / 2; j++)
      if (i % j == 0) break;
    if (j == i / 2 + 1)
    {
      d++;
      printf(" %d", i);
    }
  }
  printf("\nTong so co %d so nguyen to", d);
  getch();
}

Bài tập C++ số 3

Câu 1: Kiểm tra số chính phương

Viết 1 hàm kiểm tra 1 số có là chính phương hay không (số chính phương là số bằng bình phương của một số nguyên nào đó); một hàm kiểm tra 1 số có phải là số Pitago hay không (số Pitago là số chính phương và bằng tổng 2 số chính phương khác). Trong hàm main nhập số nguyên dương và sử dụng các hàm trên kiểm tra có là số chính phương? số Pitago?

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

0

Câu 2: Giải bất phương trình bậc nhất

Lập trình giải bất phương trình ax+b>0 theo yêu cầu: Viết 1 hàm nhập các hệ số a, b; một hàm giải bất phương trình. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần giải các bất phương trình khác nhau.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

1

Câu 3: Viết hàm đệ quy tìm ước chung lớn nhất

Viết hàm đệ quy tìm ước số chung lớn nhất của 2 số tự nhiên; một hàm tìm bội số chung nhỏ nhất của 2 số tự nhiên. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần để tìm ước số chung lớn nhất và bội số chung nhỏ nhất của các cặp số nguyên dương khác nhau. Yêu cầu kiểm tra dữ liệu nhập vào phải là các số nguyên dương.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

2

Câu 4: Tính giai thừa cách của số nguyên dương n

Viết hàm đệ quy tính giai thừa cách của số nguyên dương n. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím. Yêu cầu kiểm tra dữ liệu nhập vào phải là số nguyên dương. Công thức tính giai thừa cách của n: n!=1.3...n nếu n lẻ và n!=2.4...n nếu n chẵn.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

3

Câu 5: Viết hàm đệ quy giải bài toán tháp Hà Nội

Viết hàm đệ quy giải bài toán tháp Hà Nội: Cần chuyển n tầng tháp từ vị trí A sang vị trí B dùng vị trí C làm trung gian. Yêu cầu: Mỗi lần chỉ chuyển 1 tầng, chỉ được dùng các vị trí A, B, C để đặt các tầng tháp, không được đặt tầng lớn lên trên tầng nhỏ. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

4

Bài tập C++ số 4

Câu 1: In các phần tử của mảng theo yêu cầu

Nhập mảng n số thực, tìm và in ra phần tử nhỏ nhất, lớn nhất, tính và in ra trung bình cộng của các phần tử trong mảng. In ra các phần tử nhỏ hơn, lớn hơn trung bình cộng.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

5

Câu 2: Nhập, sắp xếp, in mảng

Viết một hàm nhập mảng, một hàm sắp xếp mảng, một hàm in các phần tử của mảng ra màn hình. Hàm main sử dụng các hàm này để nhập mảng n phần tử, in ra mảng trước và sau khi sắp xếp.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

6

Câu 3: Nhập, in mảng, đếm đoạn theo các tiêu chí

Viết một hàm nhập mảng, một hàm in các phần tử của mảng ra màn hình, một hàm đếm số các đoạn tăng, một hàm tìm đoạn tăng dài nhất trong mảng. Hàm main sử dụng các hàm này để nhập mảng n phần tử, in mảng, in số đoạn tăng và đoạn tăng dài nhất trong mảng.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

7

Câu 4: Nhập, in, tính tích 2 ma trận

Viết một hàm nhập các phần tử của ma trận 2 chiều, một hàm in ma trận theo hàng cột, một hàm nhân 2 ma trận. Hàm main sử dụng các hàm này để nhập ma trận A kích thước MxN và ma trận B kích thước NxP. In ra ma trận A, B và ma trận C là tích 2 ma trận A và B.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

8

Câu 5: Nhập, in ma trận vuông, tính định thức

Viết một hàm nhập các phần tử của ma trận vuông cấp n, một hàm in ma trận theo cấu trúc hàng cột, một hàm tính định thức ma trận cấp n. Hàm main sử dụng các hàm này để nhập ma trận vuông cấp n, in ra ma trận, tính và in ra định thức của ma trận đó.

Code mẫu:


# include 

# include 
void
main ()
{
  int t, t100, t20, t5;
  clrscr ();
  printf ("Nhap so tien t=");
  scanf ("%d", &t);
  t100 = t / 100;
  t -= 100 * t100;
  t20 = t / 20;
  t -= 20 * t20;
  t5 = t / 5;
  t -= 5 * t5;
  printf ("So to cac loai menh gia la :\n");
  printf ("Loai 100 : %d to\n", t100);
  printf ("Loai 20 : %d to\n", t20);
  printf ("Loai 5 : %d to\n", t5);
  printf ("Loai 1 : %d to\n", t);
  printf ("Tong so to cac loai la : %d\n", t + t5 + t20 + t100);
  getch ();
}

9

Bài tập C++ số 5

Câu 1: Kiểm tra tính đối xứng của một xâu

Viết hàm kiểm tra tính đối xứng của 1 xâu ký tự. Trong hàm main nhập xâu ký tự từ bàn phím và cho biết xâu đó có đối xứng không. Yêu cầu chương trình chạy nhiều lần.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

0

Câu 2: Thống kê số lần xuất hiện một ký tự trong xâu

Viết hàm thống kê tần số xuất hiện mỗi ký tự trong một xâu ký tự. Hàm main nhập xâu ký tự từ bàn phím và in ra tần số của mỗi ký tự. Yêu cầu chương trình chạy nhiều lần.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

1

Câu 3: Chuẩn hóa xâu ký tự

Viết một hàm chuẩn hóa xâu ký tự: biến đổi xâu ký tự thành xâu sao cho trong xâu không có 2 dấu cách liền nhau, một hàm tìm số từ của 1 xâu ký tự, một hàm tìm từ dài nhất trong 1 xâu ký tự. Hàm main sử dụng các hàm này để nhập xâu ký tự từ bàn phím, in ra xâu trước và sau khi chuẩn hóa, số từ trong xâu và 1 từ dài nhất trong xâu đó.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

2

Câu 4: Nhập mảng xâu ký tự và sắp xếp tăng dần

Viết 1 hàm nhập mảng xâu ký tự, 1 hàm sắp xếp mảng tăng dần. Hàm main sử dụng các hàm này nhập danh sách tên sinh viên và in ra danh sách theo thứ tự ABC của tên.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

3

Bài tập C++ số 6

Câu 1: Quản lý điểm số thí sinh bằng mảng

Sử dụng mảng cấu trúc lưu họ tên thí sinh, số báo danh, điểm thi các môn toán, lý, hóa và tổng điểm. Lập trình nhập dữ liệu cần thiết, và điểm chuẩn. In ra danh sách thí sinh cùng điểm các môn và tổng điểm; Danh sách thí sinh trúng tuyển (tổng điểm>=điểm chuẩn).

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

4

Câu 2: Quản lý tài liệu, in danh sách theo yêu cầu

Tạo danh sách liên kết chứa các tài liệu ngành công nghệ thông tin, mỗi tài liệu gồm: mã, tên tài liệu, số trang, năm xuất bản. Hãy in ra danh sách tất cả tài liệu và danh sách những tài liệu xuất bản từ năm 1998, yêu cầu in theo các cột, có kèm cột số thứ tự.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

5

Câu 3: Quản lý thanh toán tiền điện

Sử dụng mảng cấu trúc lưu họ tên chủ hộ, số điện tháng trước, số điện tháng này, số tiền phải trả. Lập trình nhập dữ liệu cần thiết, tiền điện dựa trên số điện trong tháng s=số điện tháng trước - số điện tháng này. Đơn giá quy định: 100 số đầu giá 550, 50 số tiếp theo giá 900, 50 số tiếp theo giá 1210, 50 số tiếp theo giá 1340, 50 số tiếp theo giá 1500, các số điện >300 theo giá 2000. In ra bảng thống kê thanh toán tiền điện của tất cả các thuê bao; bảng thống kê những hộ sử dụng theo từng loại: <=100 số, từ 101 đến 300 số và trên 300 số.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

6

Bài tập C++ số 7

Câu 1: Tạo tệp số, đếm số, số lớn nhất, số nhỏ nhất

Tạo tệp chứa các số nguyên đọc từ bàn phím. Sau đó đọc từ tệp đã tạo để thống kê và in ra kết quả: số lượng các số trong tệp, số lượng các số dương, số lớn nhất, số nhỏ nhất.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

7

Câu 2: Tạo tệp tên sinh viên, sắp xếp và in

Tạo tệp văn bản chứa danh sách họ tên sinh viên nhập từ bàn phím. Sau đó đọc từ tệp đã tạo vào 1 mảng; sắp xếp mảng tăng dần và in ra danh sách sinh viên đã sắp xếp kèm theo cột số thứ tự.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

8

Câu 3: Tạo tệp danh sách hồ sơ sinh viên theo yêu cầu

Tạo tệp chứa danh sách hồ sơ sinh viên gồm mã số, họ tên, điểm trung bình. Sau đó đọc từ tệp đã tạo vào 1 mảng; sắp xếp mảng giảm dần theo điểm trung bình và in ra danh sách sinh viên theo các cột, có kèm theo cột chỉ số thứ tự.

Code mẫu:


# include 

# include 
void
main()
{
  int n, dv, ch, tr;
  clrscr();
  cout << "Nhap so nguyen duong < 1000 :\n";
  cin >> n;
  cout << "So " << n << " doi sang so La ma la :\n";
  tr = n / 100;
  n = n % 100;
  ch = n / 10;
  dv = n % 10;
  switch (tr)
  {
    case 1:
      cout << "C";
      break;
    case 2:
      cout << "CC";
      break;
    case 3:
      cout << "CCC";
      break;
    case 4:
      cout << "CD";
      break;
    case 5:
      cout << "D";
      break;
    case 6:
      cout << "DC";
      break;
    case 7:
      cout << "DCC";
      break;
    case 8:
      cout << "DCCC";
      break;
    case 9:
      cout << "CM";
  }
  switch (ch)
  {
    case 1:
      cout << "X";
      break;
    case 2:
      cout << "XX";
      break;
    case 3:
      cout << "XXX";
      break;
    case 4:
      cout << "XL";
      break;
    case 5:
      cout << "L";
      break;
    case 6:
      cout << "LX";
      break;
    case 7:
      cout << "LXX";
      break;
    case 8:
      cout << "LXXX";
      break;
    case 9:
      cout << "XC";
  }
  switch (dv)
  {
    case 1:
      cout << "I";
      break;
    case 2:
      cout << "II";
      break;
    case 3:
      cout << "III";
      break;
    case 4:
      cout << "IV";
      break;
    case 5:
      cout << "V";
      break;
    case 6:
      cout << "VI";
      break;
    case 7:
      cout << "VII";
      break;
    case 8:
      cout << "VIII";
      break;
    case 9:
      cout << "IX";
  }
  getch();
}

9

Bài tập C++ số 8

Câu 1: Vẽ lá cờ đỏ sao vàng tại vị trí trung tâm màn hình.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

0

Câu 2: Vẽ mô phỏng tháp phát sóng ăng-ten.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

1

Câu 3: Vẽ bầu trời sao trên màn hình.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

2

Câu 4: Vẽ đồ thị hàm số y=sinx.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

3

Câu 5: Vẽ quả bóng chuyển động trong khung chữ nhật.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

4

Bài tập C++ số 9

Câu 1: Tạo lớp vec-tơ theo yêu cầu

Tạo lớp vec-tơ có các thuộc tính kích thước và mảng chứa các thành phần của vecto; các phương thức: nhập, xuất, cộng 2 vecto. Hàm main sử dụng lớp vec-tơ để thực hiện nhập, xuất và tính tổng 2 vecto.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

5

Câu 2: Tạo lớp phân số theo yêu cầu

Tạo lớp phân số có các thuộc tính là tử và mẫu số; các phương thức: nhập, hiện, rút gọn, quy đồng mẫu số 2 phân số, cộng 2 phân số. Hàm main sử dụng lớp và thực hiện các phương thức này.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

6

Câu 3: Tạo lớp hàng hóa theo yêu cầu

Tạo lớp hàng hóa có các thuộc tính là mã hàng, tên hàng, đơn vị tính, đơn giá, số lượng, thành tiền; các phương thức: nhập, tính thành tiền. Tạo lớp hàng hóa mới kế thừa lớp hàng hóa, thêm các thuộc tính: đơn giá vận chuyển và công vận chuyển tính bằng đơn giá vận chuyển nhân với số lượng; các phương thức: tính công vận chuyển, nhập và tính thành tiền. Hàm main sử dụng các lớp này và thực hiện các phương thức.

Code mẫu:


# include 

# include 
void main()
{
  char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };
  int van, ngan, tram, chuc, donvi, chv, dv;
  long so;
  clrscr();
  cout << "Nhap so nguyen duong < 1000000 can doc = ";
  cin >> so;
  cout << "Cach doc so " << so << " la:\n";
  van = so / 10000;
  ngan = so / 1000 % 10;
  tram = so / 100 % 10;
  chuc = so / 10 % 10;
  donvi = so % 10;
  if (van)
  {
    chv = van / 10;
    dv = van % 10;
    if (chv == 1)
      cout << "muoi ";
    else if (chv > 1)
      cout << doc[chv - 1] << " muoi ";
    if (dv)
      cout << doc[dv - 1];
    cout << " van ";
  }
  if ((ngan == 0) && van)
    cout << " khong ngan ";
  else if (ngan)
    cout << doc[ngan - 1] << " ngan ";
  if ((tram == 0) && (van || ngan))
    cout << " khong tram ";
  else if (tram)
    cout << doc[tram - 1] << " tram ";
  if ((chuc == 0) && donvi && (van || ngan || tram))
    cout << "le ";
  else if (chuc == 1)
    cout << " muoi ";
  else
    cout << doc[chuc - 1] << " muoi ";
  if (donvi)
    cout << doc[donvi - 1];
  getch();
}

7

Câu 4: Viết hàm nhập, xuất, sắp xếp mảng

Sử dụng khuôn mẫu viết các hàm nhập, xuất, sắp xếp mảng. Hàm main sử dụng các hàm khuôn mẫu này để nhập mảng n phần tử, in ra mảng trước và sau khi sắp xếp cho hai trường hợp: mảng số nguyên và mảng số thực.