Bài thực hành Tin Đại Cương số 4 - BKHN. Bài này mình viết từ năm 2011 khi mình học đại cương trên Blog của lớp, giờ chuyển về Blog của mình để lưu trữ lại cho mấy em học sau ngâm cứu thêm nếu chưa hiểu. Và cũng có thể giải đáp tốt hơn nếu các bạn có thắc mắc.

Bài tập thực hành tin đại cương BKHN

Bài viết liên quan:

Trong chuỗi bài tập này dù là dùng ngôn ngữ C, tuy nhiên do lười nên có chỗ mình viết bằng C++. Mình chỉ thay đổi duy nhất cú pháp scan – printf của C thành cin – cout trong C++ để làm nhanh phần nhập xuất, còn lại phần giải thuật không khác gì. :)

Chú ý: Toàn bộ code của các bài tập trước kia mình viết trên BorlandC, trong khi hiện nay các bạn hầu hết dùng DevC để biên dịch, vì vậy chúng ta cần thay đổi chút xíu trong code để nó tương thích.

Đây là code của bài 3, mình đã sửa để cho nó biên dịch được trên DevC, các bạn nhìn vô sẽ thấy chúng ta cần thay đổi những gì.

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.3:
Tính giai thừa sử dụng FOR
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;    //=> Cái này mặc định cần có khi biên dịch với gcc của DevC

int main()              //=> DevC yêu cầu bắt buộc hàm main phải có giá trị trả về.
{
    int a, i, n=1;
    //clrscr();         //=> hàm này trong DevC người ta không dùng nữa, và được thay thế bằng hàm system bên dưới.
    system("cls");
    printf("\n Nhap so a:"); scanf("%d",&a);
    if(a>0){
        for(i=1; i<=a; i++)
        {
            n*=i;
        }
        printf("\n Giai thua cua %d la: %d",a,n);
    }
    getch();            //=> Có thể thay bằng system("pause");
    return 0;           //=> Không có gì để trả về thì ta trả về 0
}

Bài 1. Kiểm tra độ dài 3 cạnh 1 tam giác

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.1:
Kiểm tra độ dài 3 cạnh 1 tam giác
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    float a, b, c;
    clrscr();
    printf("\n Nhap canh thu nhat: "); scanf("%f",&a);
    printf("\n Nhap canh thu hai: "); scanf("%f",&b);
    printf("\n Nhap canh thu ba: "); scanf("%f",&c);
    if(((a+b)>c) && ((a+c)>b) && ((b+c)>a)){
        printf("\n LA 3 CANH CUA 1 TAM GIAC.");
    } else {
        printf("\n KHONG PHAI 3 CANH CUA 1 TAM GIAC.");
    }
    getch();
}

Bài 2. Kiểm tra số - chữ

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.2:
Kiểm tra số, chữ
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    int a;
    clrscr();
    printf("\n Nhap so: "); scanf("%d",&a);
    switch(a)
    {
        case 0: printf("\n Khong"); break;
        case 1: printf("\n Mot"); break;
        case 2: printf("\n Hai"); break;
        case 3: printf("\n Ba"); break;
        case 4: printf("\n Bon"); break;
        case 5: printf("\n Nam"); break;
        case 6: printf("\n Sau"); break;
        case 7: printf("\n Bay"); break;
        case 8: printf("\n Tam"); break;
        case 9: printf("\n Chin"); break;
        default: printf("\n So khong hop le");
    }
    getch();
}

Bài 3. Tính giai thừa của 1 số dùng FOR

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.3:
TÍnh giai thừa sử dụng FOR
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    int a, i, n=1;
    clrscr();
    printf("\n Nhap so a:"); scanf("%d",&a);
    if(a>0){
        for(i=1; i<=a; i++)
        {
            n*=i;
        }
        printf("\n Giai thua cua %d la: %d",a,n);
    }
    getch();
}

Bài 4. Tính giai thừa của 1 số dùng WHILE

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.4:
Tính giai thừa sử dụng WHILE
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    int a, i=1, n=1;
    clrscr();
    printf("\n Nhap so a:"); scanf("%d",&a);
    if(a>0){
        while(i<=a)
        {
            n*=i;
            i++;
        }
        printf("\n Giai thua cua %d la: %d",a,n);
    }
    getch();
}

Bài 5. Tính giai thừa sử dụng DO…WHILE

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.5:
Tính giai thừa sử dụng DO...WHILE
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    int a, i=1, n=1;
    clrscr();
    printf("\n Nhap so a:"); scanf("%d",&a);
    if(a>0){
        do
        {
            n*=i;
            i++;
        }while(i<=a);
        printf("\n Giai thua cua %d la: %d",a,n);
    }
    getch();
}

Bài 6. Bài tập tìm thương và số dư

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.6:
Bài tập tìm thương và số dư
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    int a, b;
    clrscr();
    printf("\n Nhap so a:"); scanf("%d",&a);
    printf("\n Nhap so b:"); scanf("%d",&b);

    int thuong = a/b;
    int so_du = a%b;

    printf("\n Thuong khi chia %d cho %d la: %d",a,b,thuong);
    printf("\n So du khi chia %d cho %d la: %d",a,b,so_du);
    getch();
}

Bài 7. Tính số e sử dụng WHILE

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.7:
Tính số e sử dụng WHILE
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

float giaithua(int n);

void main()
{
    int i=1;
    float e=1, epsilon, tmp=1;
    printf("\n Nhap so epsilon: ");
    scanf("%f",&epsilon);
    while(tmp>epsilon)
    {
        tmp = 1/(giaithua(i));
        e+=tmp;
        i++;
    }
    printf("\n %10.5f",e);
    getch();
}

float giaithua(int n)
{
    float a=1;
    int i=1;
    while(i<=n)
    {
        a*=i;
        i++;
    }
    return a;
}

Bài 8. Kiểm tra số nguyên tố

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.8:
Kiểm tra số nguyên tố
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>
int Check_NT(int n)
{
    int dem=0;
    for(int i=1;i<=n;i++)
    if(n%i==0)
    dem++;
    return(dem==2);
}
void main()
{
    int n;
    printf("\n Nhap n ="); scanf("%d",&n);
    int kq=Check_NT(n);
    if(kq==0)
    printf("\n %d ko phai la so NT",n);
    else
    printf("\n %d la so NT",n);
    getch();
}

Bài 9. Giải và biện luận phương trình bậc 2

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.9:
Giải và biện luận phương trình bậc 2
*-----------------------------------*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
    float a, b, c, delta;

    printf("\nGiai phuong trinh bac hai AX^2 + BX + C = 0");
    printf("\nCho biet ba he so A B C : ");
    scanf("%f%f%f", &a, &b, &c);

    delta = b * b - 4 * a * c;
    if (delta<0)
        printf("Phuong trinh vo nghiem");
    else if (delta == 0)
        printf("Phuong trinh co nghiem kep x1 = x2 = %f", -b/(2*a));
    else
    {
        printf("Phuong trinh co hai nghiem phan biet\nx1 = %f", (-b + sqrt(delta))/(2*a));
        printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
    }
    getch();
}

Bài 10. Tính số PI với sai số tùy chỉnh

/*------------------------------------
Author: TrungThanh
Website: http://thanhnt.com
-----*****-----
Practice 4.10:
Tính số PI với sai số tùy chỉnh
*-----------------------------------*/
#include <conio.h>
#include <stdio.h>

void main()
{
    //Khai bao Variable
    double pi_tmp = 0.0, x;
    float epsilon;
    int i = 1, ld = 0;
    int am = 0;
    clrscr();
    //Nhap dau vao
    printf("\n Nhap sai so cho phep Epsilon: "); scanf("%f",&epsilon);
    printf("\n Pls wait.... Voi sai so cang nho, thoi gian tinh toan cang lau! \n\n");
    //Tinh toan
    while(1)
    {
        x = 1.0/i;
        if(x < epsilon) break;
        pi_tmp += (am)? -x : x;
        am = !am;
        i += 2;
        ld++;
    }
    //Dua ra ket qua
    printf("\n So Pi tinh ra voi sai so %15.10f la: %15.10f", epsilon, pi_tmp*4);
    printf("\n Da thuc hien %d lan vong lap.", ld);
    getch();
}