You are on page 1of 13

[Tin học đại cương] Bài thực

hành số 4
Nằm trong chuỗi bài viết về thực hành tin học đại cương, đây là bài hướng dẫn thực hành cho bài
thực hành số 4 trong quyển Bài thực hành Tin học đại cương.

B. BÀI TẬP Ở NHÀ


BÀI 4.1
Lập trình thực hiện các công việc sau:

1. Nhập 3 số a, b, c bất kì
2. Hãy kiểm tra xem ba số đó có phải là độ dài của các cạnh của một tam giác hay không?
Nếu đúng là tam giác thì xác định là tam giác gì?
3. Thông báo kết quả ra màn hình:

LA 3 CANH TAM GIAC <loại tam giác> hoặc KHONG PHAI LA 3 CANH TAM GIAC

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  //Dinh nghia gia tri cho TRUE va FALSE
4  #define TRUE 1
5  #define FALSE 0
6

7
8  int main(){
9  float a, b, c;
10  char flag = TRUE;
11  printf("Nhap du lieu dau vao");
12  printf("\n a = "); scanf("%f",&a);
13  printf("\n b = "); scanf("%f",&b);
14  printf("\n c = "); scanf("%f",&c);
15
16  if( (a+b>c) && (b+c)>a && (a+c>b) ){
o if(a==b && b==c){
17  flag = FALSE;
18  printf("\n La 3 canh cua tam giac deu");
19 o }else if(a==b || b==c || c==a){
20  flag = FALSE;
21  printf("\n La 3 canh cua tam giac can");
22 o }
23 o if(a*a+b*b==c*c || b*b+c*c==a*a || c*c+a*a==b*b){
24  flag = FALSE;
25  printf("\n La 3 canh cua tam giac vuong");
26 o }
27 o if(flag==TRUE){
28  printf("\n La ba canh cua tam giac thuong");
29 o }
30  }else{
31 o printf("\n Khong phai 3 canh cua tam giac");
32  }
33
34
 getch();
35
 return 0;
36
 }

BÀI 4.2
Lập chương trình thực hiện các công việc sau: Nhập vào một số nguyên bất kỳ trong khoảng từ 0
đến 9, đưa ra màn hình chứ tương ứng với số đó. Nếu số nhỏ hơn 0 hoặc lớn hơn 9 thì thông báo
“SO KHONG HOP LE“

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  int main(){
4  int a;
5  printf("\n Nhap gia tri cua a = ");
6
 scanf("%d",&a);
7
8
9  printf("\n ==>> doc la: ");
10  switch(a){
11 o case 0:
12  printf("KHONG");
 break;
13 o case 1:
14  printf("MOT");
15  break;
16 o case 2:
17  printf("HAI");
18  break;
19 o case 3:
20  printf("BA");
21  break;
22 o case 4:
23  printf("BON");
24  break;
25 o case 5:
26  printf("NAM");
27  break;
28 o case 6:
29  printf("SAU");
30  break;
31 o case 7:
32  printf("BAY");
33  break;
34 o case 8:
35  printf("TAM");
36  break;
37 o case 9:
38  printf("CHIN");
39  break;
40 o default:
41  printf("SO KHONG HOP LE!");
42  break;
43  }
44  getch();
45
 return 0;
46
 }

BÀI 4.3
Lập chương trình thực hiện các công việc sau: Nhập số nguyên n<8 bất kì. Lập chương trình tính
giai thừa củan. Sử dụng vòng lặp for

Bài giải
 #include <stdio.h>
1
2  #include <conio.h>
3  int main(){
4  int n;
5  printf("\n Nhap so nguyen dau vao n = ");
6  scanf("%d",&n);
7  if(n<0 || n>=8){
8 o printf("\n So nhap vao phai la so nguyen >0 va <8 ");
9  }else{
10 o int giaithua = 1;
11 o for(int i=2; i<=n; i++){
12  giaithua = giaithua*i;
13  printf("%d",i);
14 o }
15 o printf("Gia tri cua %d! la %d",n,giaithua);
16  }
17  getch();
18  return 0;
19
 }

BÀI 4.4
Lập chương trình thực hiện các công việc sau:

1. Nhập số epsilon < 1 từ bàn phím

2. Tính số e theo công thức: quá trình dừng khi epsilon.


3. Đưa kết quả ra màn hình

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  int main(){
4  float epsilon;
5  printf("\n Nhap epsilon (0 < epsilon < 1) = ");
6
 scanf("%f",&epsilon);
7
8
9  float ep = 1/epsilon; //Tinh lai DK dung lap
10  int i = 1;
 int giaithua = 1;
11  float giatri_e = 1;
12  while(giaithua<=ep){
13 o giatri_e += 1.0/giaithua;
14 o i++;
15 o giaithua = giaithua*i;
16  }
17
18  printf("Gia tri cua e ~ %f",giatri_e);
19  getch();
20  return 0;
21  }

BÀI 4.5
Lập chương trình thực hiện các công việc sau: Nhập số nguyên 10<n<100 bất kỳ. Dùng lệnh do
… while để kiểm tra sự hợp lệ của dữ liệu đầu vào. Nếu người dùng nhập sai yêu cầu nhập lại
ngay. Nếu dữ liệu hợp lệ thì tính tổng các chữ số từ 1 đến n. Hiển thị kết quả ra màn hình.

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  int main(){
4  int n;
5  int i = 0;
6
 //Kiem tra du lieu nhap vao
7
8  do{
o if(i==0){
9
10  printf("\n Nhap gia tri dau vao n = ");
o }else{
11
12  printf("Gia tri dau vao phai > 10 va < 100 ");
13  printf("\n\n Hay nhap lai n = ");
o }
14
o scanf("%d",&n);
15
o i=1;
16
17  }while( n<=10 || n>=100);
18
19  int tong = 0;
20  for(int j=1; j<=n; j++){
21 o tong += j;
22  }
 printf("Tong cua %d so nguyen dau tien la: %d",n,tong);
23
24
 getch();
25
 return 0;
26
 }

BÀI 4.6
Số nguyên tố là một số nguyên dương chỉ chia hết cho 1 và chính nó. Lập chương trình nhập
một số nguyên n từ bàn phím, kiểm tra xem một số nguyên n có phải là số nguyên tố không và
thông báo ra màn hình.

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  #include <math.h>
4  int main(){
5  int n;
6
 char flag=1;
7
8  do{
o printf("Nhap so nguyen duong n = ");
9
o scanf("%d",&n);
10
11  }while(n<=0);
12
13  if(n==1){
14 o flag = 0;
15  }else if(n==2){
16 o flag = 1;
17  }else{
18 o int can_n = ceil(sqrt(n))+1;
19 o for(int i=2; i<can_n; i++){
20  if(n%i == 0){
21  flag = 0;
22  break;
23  }
24 o }
25  }
26
27  if(flag){
28 o printf(" %d la so nguyen to",n);
 }else{
29 o printf(" %d khong la so nguyen to",n);
30  }
31
32
 getch();
33
34  return 0;
 }

C. BÀI TẬP TẠI PHÒNG


MÁY
BÀI 4.7
Lập chương trình thực hiện các công việc sau:

Dùng vòng lặp while hoặc do…while để tính gần đúng số PI theo công thức:

Chương trình sẽ dừng khi epsilon. Với epsilon được nhập từ bàn phím và có gía trị
nằm trong khoảng từ 0 đến 1.

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  #include <math.h>
4  int main(){
5  float epsilon;
6
 do{
7
o printf("\n Nhap epsilon (0 < epsilon < 1) = ");
8
o scanf("%f",&epsilon);
9  }while(epsilon>=1 || epsilon<=0);
10
11  int ep = floor((1/epsilon-1)/2);
12  int i = 0;
13  float pi=0;
14
 do{
15 o float mau = 2.0*i+1;
16 o pi+=pow(-1,i)/mau;
17 o i++;
18
 }while(i<=ep);
19
20
21  printf("Gia tri cua PI ~ %f",4*pi);
22  getch();
23  return 0;
 }

BÀI 4.8
Lập chương trình thực hiện các công việc sau:

1. Nhập 2 số nguyên dương bất kì


2. Tìm ước chung lớn nhất và bội chung nhỏ nhất của 2 số đó
3. Hiển thị kết qủa ra màn hình

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  int main(){
4  int a, b;
5  printf("\n Nhap gia tri dau vao la cac so nguyen duong");
6
 printf("\n a = "); scanf("%d",&a);
7
8  printf("\n b = "); scanf("%d",&b);
9  int A = a, B = b;
10
11  //Dung giai thuat Euclid tim UCLN
12  int c;
13  do{
14 o c = a-b;
15 o if(c<0){
 b=-c;
16 o }else if(c>0){
17  a=c;
18 o }
19  }while(c!=0);
20
21  printf("\n UCLN( %d, %d ) = %d", A, B, a);
22
 printf("\n BCNN( %d, %d ) = %d", A, B, A*B/a);
23
24
 getch();
25
26  return 0;
 }

BÀI 4.9
Lập chương trình thực hiện công việc sau:

1. Nhập ba số a, b, c bất kì từ bàn phím


2. Giải và biện luận nghiệm phương trình bậc 2: (Kể cả trương hợp a=0
và trường hợp nghiệm phức)
3. Đưa kết qủa ra màn hình

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  #include <math.h>
4  int main(){
5  float a, b, c;
6
 printf("\n Nhap cac so dau vao");
7
8  printf("\n a = "); scanf("%f",&a);
9  printf("\n b = "); scanf("%f",&b);
10  printf("\n c = "); scanf("%f",&c);
11
12  if(a==0){
13 o if(b==0){
14  if(c==0){
15  printf("\n => KL: Phuong trinh co vo so nghiem");
16  }else{
17  printf("\n => KL: Phuong trinh vo nghiem");
18  }
o }else{
19  printf("\n => KL: Phuong trinh co 1 nghiem: %f",c/b);
20 o }
21  }else{
22 o float delta = b*b-4*a*c;
23 o float can_delta = sqrt(fabs(delta));
24 o float thuc = -b/(2*a);
25 o float ao = can_delta/(2*a);
26
27 o if(delta<0){
28  printf("\n => KL: Phuong trinh co 2 nghiem phuc:");
29  printf("\n\t x_1 = %f + i* %f ", thuc, fabs(ao));
30  printf("\n\t x_2 = %f - i* %f ", thuc, fabs(ao));
31 o }else if(delta==0){
32  printf("\n => KL: Phuong trinh co nghiem kep: x = %f ",thuc);
33 o }else{
34  printf("\n => KL: Phuong trinh co 2 nghiem thuc: ");
35  printf("\n\t x_1 = %f ", thuc+ao);
36  printf("\n\t x_2 = %f ", thuc-ao);
37 o }
38  }
39
40
 getch();
41
 return 0;
42
 }

BÀI 4.10
Lập chương trình thực hiện các công việc sau:

1. Nhập 1 số nguyên dương n bất kì (n<1000). Yêu cầu kiểm tra dữ liệu đầu vào bằng
lệnh do…while. Nếu sai yêu cầu nhập lại.
2. Tính tổng các chữ số của số đó.
3. Hiển thị kết qủa ra màn hình

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  int main(){
4  int n;
5  do{
6 o printf("Nhap gia tri (nguyen duong nho hon 1000) n = ");
o scanf("%d",&n);
7
8  }while(n<=0 || n>=1000);
9
10  int T = 0;
11  while(n!=0){
12 o T = T + n%10;
13 o n = n/10;
14  }
15
16  printf("Tong cac chu so cua so vua nhap la: %d",T);
17
18  getch();
19  return 0;
20  }

BÀI 4.11
Lập chương trình tính các tổng sau:

1.
2.

3.

Trong đó, n là số nguyên dương và x là một số thực bất kì. Cả 2 đều được nhập từ bàn phím

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  #include <math.h>
4  int main(){
5  int n;
6
 float x;
7
8  printf("Nhap gia tri nguyen duong n = ");
9  scanf("%d",&n);
10  printf("Nhap gia tri x = ");
11  scanf("%f",&x);
12
 float s1=1, s2=1, s3=1;
13  int giaithua = 1;
14  for(int i=1; i<=n; i++){
15 o s1 += pow(x,i);
16 o s2 += pow(-x,n);
17
18 o giaithua = giaithua*i;
19 o s3 += pow(x,n)/giaithua;
20
 }
21
22
 printf("Gia tri cua s1 = %f, s2 = %f, s3 = %f",s1, s2, s3);
23
24
25  getch();
26  return 0;
 }

BÀI 4.12
Lập chương trình thực hiện các công việc sau:

1. Nhập vào một dãy số thực. Việc nhập vào kết thúc khi nhập vào gía trị 0
2. Tính trung bình cộng của dãy số, tìm số lớn nhất và nhỏ nhất trong dãy
3. Hiện kết qủa ra màn hình

Bài giải

1  #include <stdio.h>
2  #include <conio.h>
3  #define MAX 1024
4  int main(){
5  int n=-1;
6
 float A[MAX];
7
8  float temp;
9  do{
10 o printf("Nhap phan tu %d: ",n+1);
11 o scanf("%f",&temp);
12 o A[n+1] = temp;
13 o n++;
14  }while(temp!=0);
15
16  if(n>0){
o float tong=A[0], max=A[0], min=A[0];
17 o for(int i=1;i<n;i++){
18  tong += A[i];
19  if(A[i]>max) max=A[i];
20  if(A[i]<min) min=A[i];
21 o }
22 o printf("\n Trung binh cong cua day: %f",tong/n);
23 o printf("\n Max = %f",max);
24 o printf("\n Min = %f",min);
25  }else{
26 o printf("Day so khong co phan tu nao!");
27  }
28
29
 getch();
30
 return 0;
31
 }

You might also like