Professional Documents
Culture Documents
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.
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:
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;
}
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:
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:
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
}