View Full Version : Giải Đáp Bài Tập "Giáo trình Ngôn Ngữ C"
khigiadano
31-05-2008, 03:46 PM
Trường Cao Đẳng CNTT Tp.HCM - Trung Tâm Phát Triển CNTT Tp.HCM
Ban Quản Lý Website Hành Trang Sinh Viên
Bài Giải Giáo Trình
Ngôn Ngữ C
* Dưới đây là giải các bài thực hành viết Code, những câu hỏi lý thuyết sẽ không trình bày ở đây
* Nếu có sai sót hoặc có cách giải khác vui lòng liên hệ mình để chỉnh sửa bổ sung
* Nếu xem các bài dưới vẫn chưa hiểu thì xem các bài C căn bản phần 1 (http://hanhtrangsinhvien.net/forum/showthread.php?t=1241)phần 2 (http://hanhtrangsinhvien.net/forum/showthread.php?t=488)
Mọi thông tin được lấy ở đây vui lòng nghi rõ nguồn từ hanhtrangsinhvien.net (http://hanhtrangsinhvien.net)
khigiadano
31-05-2008, 04:24 PM
Bài 1 - Chương 1:
Viết chương trình tính diện tích của tam giác biết 3 cạnh của là 3 biến a,b,c được khởi đầu a=3.1, b=2.2, c=4.1.Công thức tính :
P=(a+b+c)/2
S=căn(p(p-a)(p-b)(p-c))
Thuật Toán:
Tính số P trước sau đó từ P tính ra diện tích
code:
/************************************************** \
* *
* Chuong trinh tinh dien tich cua Tam Giac *
* Biet 3 canh la 3 bien a,b,c duoc khoi dau la: *
* a=3.1, b=2.2, c=4.3 *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int a=3.1,b=2.2,c=4.3,s,p; // Khai bao bien
printf("Chuong trinh tinh dien tich cua Tam Giac \n");
printf("Biet 3 canh la 3 bien a,b,c duoc khoi dau la:\n");
printf("a=3.1, b=2.2, c=4.3 \n");
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c)); // Tinh dien tich
printf("\n");
printf("Dien tich Tam giac la: %d \n",s);
getch();
}
Bài 2 - Chương 1:
Viết chương trình tính Chu vi hình Chữ Nhật biết diện tích là 9.1 và tỷ lệ chiều dài và chiều rộng là 2
Thuật toán:
chiều dài = chiều rộng * 2
mà
diện tích = chiều dài * chiều rộng
suy ra
diện tích = chiều rộng * chiều rộng * 2 = (chiều rộng)^2 * 2
Suy ra
chiều rộng = căn((diện tích)/2)
code:
/************************************************** \
* *
* Chuong trinh tinh Chu Vi hinh Chu Nhat *
* Biet Dien Tich: 9.1 *
* Ty le giua Chieu Dai va Chieu Rong: 2 *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int dientich=9.1,chuvi,chieudai,chieurong; // khai bao bien
printf("Tinh Chu Vi hinh Chu Nhat biet Dien Tich: 9.1 \n");
printf("Va ty le giua Chieu Dai va Chieu Rong: 2 \n");
chieurong=sqrt(dientich/2); // tinh chieu rong
chieudai=chieurong*2; // tinh chieu dai
chuvi=(chieudai+chieurong)*2; // tinh Chu Vi
printf("\n");
printf("Ket Qua:Chu Vi hinh Chu Nhat la: %d \n",chuvi);
getch();
}
khigiadano
01-06-2008, 03:04 PM
Bài 7 - Chương 2:
Viết chương trình nhập thông tin tiêu thụ điện của khách hàng gồm:
Tên khách hàng (kiểu chuỗi)
Chỉ số cũ, chỉ số mới, đơn giá (số nguyên)
Và xuất thông tin lên màn hình gồm:
Tên khách hàng, tháng, số Kwh tiêu thụ, số tiền phải trả
Thuật toán:
nhập thông tin
tính toán :
số tiêu thụ = số mới - số cũ
số tiền phải trả = số tiêu thụ * đơn giá
xác định tháng (thời gian) trên đồng hồ hệ thống
xuất thông tincode
/************************************************** \
* *
* Chuong trinh tinh Hoa Don Tien Dien *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
#include<dos.h>
void main()
{
clrscr();
char ten_khachhang[100];
int chiso_cu,chiso_moi,don_gia,so_tieuthu,money;
//nhap thong tin
printf("\n Ten Khach Hang: ");
gets(ten_khachhang); // gan ky tu nhap vao bien
printf("\n Chi so cu: ");
scanf("%d",&chiso_cu);
printf("\n Chi so moi: ");
scanf("%d",&chiso_moi);
printf("\n Don gia: ");
scanf("%d",&don_gia);
// xu ly thong tin
so_tieuthu=chiso_moi-chiso_cu;
money=so_tieuthu*don_gia;
// khai bao thoi gian
struct date thoigian;
getdate(&thoigian);
// xuat thong tin
printf("\n ---------------------");
printf("\n Ten khach hang: %s",ten_khachhang);
printf("\n Hoa don tien dien thang: %d",thoigian.da_mon);
printf("\n So Kwh tieu thu: %d Kwh",so_tieuthu);
printf("\n So tien phai tra: %d vnd",money);
getch();
}
Bài 8 A - Chương 2:
Tính diện tích Hình Tam Giác khi nhập độ dài các cạnh
Thuật toán:
p=(a+b+c)/2;
dientich=sqrt(p*(p-a)*(p-b)*(p-c));
Code:
/************************************************** \
* *
* Tinh Dien Tich hinh Tam Giac *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int dientich,p,a,b,c;
printf("\n Tinh Dien Tich hinh Tam Giac");
printf("\n Nhap canh a: ");
scanf("%d",&a);
printf("\n Nhap canh b: ");
scanf("%d",&b);
printf("\n Nhap canh c: ");
scanf("%d",&c);
p=(a+b+c)/2;
dientich=sqrt(p*(p-a)*(p-b)*(p-c));
printf("\n -----------------------");
printf("\n Dien tich hinh Tam Giac la: %d",dientich);
getch();
}
Bài 8 B - Chương 2:
Tính chu vi - diện tích Hình Chữ Nhật khi nhập độ dài các cạnh
Thuật toán:
chuvi=(chieudai+chieurong)*2;
dientich=chieudai*chieurong;
Code:
/************************************************** \
* *
* Tinh Chu Vi-Dien Tich hinh Chu Nhat *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int dientich,chuvi,chieudai,chieurong;
printf("\n Tinh Chu Vi va Dien Tich hinh Chu Nhat");
printf("\n Nhap chieu dai: ");
scanf("%d",&chieudai);
printf("\n Nhap chieu rong: ");
scanf("%d",&chieurong);
chuvi=(chieudai+chieurong)*2;
dientich=chieudai*chieurong;
printf("\n --------------------------");
printf("\n Chu Vi hinh Chu Nhat la: %d",chuvi);
printf("\n Dien tich hinh Chu Nhat la: %d",dientich);
getch();
}
khigiadano
01-06-2008, 04:58 PM
Bài 3 - chương 3:
Cho 3 số thực, thay tất cả các số âm bằng trị tuyệt đối của nó
Thuật toán:
Đặt điều kiện: nếu số nào bé hơn 0 thì sẽ nhân với (-1) để có được trị tuyệt đối, ngược lại số dương thì nhập thế nào thì xuất thế ấy
code:
/************************************************** \
* *
* Cho 3 so thuc *
* Thay cac so Am bang Tri Tuyet Doi cua no *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float a,b,c;
printf("\n Nhap 3 so Thuc");
printf("\n Nhap so thu I: ");
scanf("%f",&a);
printf("\n Nhap so thu II: ");
scanf("%f",&b);
printf("\n Nhap so thu III: ");
scanf("%f",&c);
if(a<0) a=a*(-1);
if(b<0) b=b*(-1);
if(c<0) c=c*(-1);
printf("\n -----------------------");
printf("\n Tri tuyet doi cua 3 so la: %2.f . %2.f . %2.f",a,b,c);
getch();
}
Bài 4 - chương 3:
Viết phương trình tính giá trị của Hàm Số:
f(x)=2x^2 + 5x + 9 khi x >= 5
f(x)=-2x^2 +5x + 9 khi x < 5
Thuật toán:
Đặt điều kiện : nếu biến X nhập vào >= 5 thì ra tính và xuất kết quả ra PT trên, ngược lại thì tính và xuất ra kết quả PT dưới
code:
/************************************************** \
* *
* Giai PT: *
* 2x^2 + 5x + 9 khi x >= 5 *
* -2x^2 + 4x - 9 khi x < 5 *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int x,ketqua;
printf("\n Giai Phuong Trinh");
printf("\n Nhap X: ");
scanf("%d",&x);
if(x>=5)
{
ketqua=2*pow(x,2)+5*x+9;
printf("\n f(%d) = 2 x %d^2 + 5 x %d + 9 = %d",x,x,x,ketqua);
}
else
{
ketqua=(-2)*pow(x,2)+4*x-9;
printf("\n f(%d) = (-2) x %d^2 + 4 x %d - 9 = %d",x,x,x,ketqua);
}
getch();
}
Bài 5 - chương 3:
Viết chương trình nhập 3 cạnh của 1 Tam Giác. Hãy cho biết Tam Giác đó là Tam Giác gì ?
Thuật toán:
Xét điều kiện của 3 cạnh nhập vào
Nếu Tổng 2 cạnh bất kỳ cộng lại >= cạnh thứ 3 thì không phải là Tam Giác
Nếu có 2 cạnh = nhau nhưng không bằng cạnh thứ 3 là Tam Giác Cân
Nếu có 3 cạnh bằng nhau là Tam Giác Đều
Nếu tổng bình phương 2 cạnh kề bằng bình phương cạnh huyền là Tam Giác Vuông
Nếu Khác điều kiện của Tam Giác Cân và Tam Giác Vuông sẽ là Tam Giác Thường
code:
/************************************************** \
* *
* Nhap do dai 3 canh cua 1 Tam Giac *
* Xac dinh do la Tam Giac gi *
* Can - Deu - Vuong - Thuong *
* *
\************************************************* */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int x,y,z;
int x2,y2,z2;
// khai bao x2,y2,z2 de thay cho X binh phuong, Y binh phuong...
printf("\n Nhap 3 canh cua tam giac");
printf("\n Canh a: ");
scanf("%d",&x);
printf("\n Canh b: ");
scanf("%d",&y);
printf("\n Canh c: ");
scanf("%d",&z);
x2=pow(x,2); // Day la Ham tinh Binh Phuong
y2=pow(y,2); // Tinh binh phuong cac canh
z2=pow(z,2); // de lat nua xet Tam Giac Vuong theo dinh ly Pytago
if( ((x+y)<=z) || ((x+z)<=y) || ((y+z)<=x) )
// DK : Tong 2 canh <= canh thu 3 thi ko phai la Tam Giac
printf("\n Day ko phai la 1 tam giac");
else
{
if( ((x==y)&&(y!=z)) || ((x==z)&&(z!=y)) || ((y==z)&&(z!=x)) )
// DK : Co 2 canh bang nhau, nhung 3 canh khong bang nhau
printf("\n Tam Giac Can");
if( (x==y)&&(y==z) )
// DK : Co 3 canh bang nhau
printf("\n Tam Giac Deu");
if( ((x2+y2)==z2) || ((x2+z2)==y2) || ((y2+z2)==x2) )
// DK : Theo Pytago
//tong binh phuong 2 canh ke bang binh phuong canh huyen
printf("\n Tam Giac Vuong");
if( (x!=y) && (x!=z) && (y!=z) && ((x2+y2)!=z2) && ((x2+z2)!=y2) && ((y2+z2)!=x2) )
//DK : khac DK cua TAM GIAC CAN va TAM GIAC VUONG
printf("\n Tam Giac Thuong");
}
getch();
}
vBulletin® v3.8.3, Copyright ©2000-2012, Jelsoft Enterprises Ltd.