thư việniostream.h
công dụng khi co nhập suất dũ liệu(nói chung cú có cin or cout bạn cứ sử dụng hàm này,thừa còn hơn thiếu),
thư viện conio.hcông dụng nếu bạn sử dung lệnh xóa màn hình clrscr (có lạc rang sẽ có rượu )
và lệnh dừng màn hình getch() , gotoxy(x, y)(trong chương trình đặt con trỏ màn hình tại vị trí cột x dòng y
để đảm bảo dòng chữ luôn luôn hiện ra tại đúng một vị trí trên màn hình.) và 1 số công dụng nữa bạn tự
nghiên cứu nhé!
thư viện iomanip.h dùng để Định dạng thông tin cần in ra màn hình
ví dụ các lệnh như :endl tương đương với \n (xuống dòng)
setw(n): Bình thường các giá trị được in ra bởi lệnh cout << sẽ thẳng theo lề trái với độ rộng phụ thuộc vào
độ rộng của giá trị đó. Phương thức này qui định độ rộng dành để in ra các giá trị là n cột màn hình. Nếu n
lớn hơn độ dài thực của giá trị, giá trị sẽ in ra theo lề phải, để trống phần thừa (dấu cách) ở trước.
setprecision(n): Chỉ định số chữ số của phần thập phân in ra là n. Số sẽ được làm tròn trước khi in ra
setiosflags(ios::showpoint): Phương thức setprecision chỉ có tác dụng trên một dòng in. Để cố định các giá trị
đã đặt cho mọi dòng in (cho đến khi đặt lại giá trị mới) ta sử dụng phương thức
setiosflags(ios::showpoint)(và 1 số định dạng nữa bạn tự tìm hiểu)
thư viện stdio.h để sử dụng các hàm printf() và scanf() chỉ cần thiết với các bạn thích chơi trội lập trình theo
kiểu cũ
13 trang |
Chia sẻ: oanh_nt | Lượt xem: 1606 | Lượt tải: 1
Nội dung tài liệu 40 bài tập C, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Sưu tầm bởi boy_dt3; nguồn trathai.vn
thư viện iostream.h
công dụng khi co nhập suất dũ liệu(nói chung cú có cin or cout bạn cứ sử dụng hàm này,thừa còn hơn thiếu),
thư viện conio.h công dụng nếu bạn sử dung lệnh xóa màn hình clrscr (có lạc rang sẽ có rượu )
và lệnh dừng màn hình getch() , gotoxy(x, y)(trong chương trình đặt con trỏ màn hình tại vị trí cột x dòng y
để đảm bảo dòng chữ luôn luôn hiện ra tại đúng một vị trí trên màn hình.) và 1 số công dụng nữa bạn tự
nghiên cứu nhé!
thư viện iomanip.h dùng để Định dạng thông tin cần in ra màn hình
ví dụ các lệnh như :endl tương đương với \n (xuống dòng)
setw(n): Bình thường các giá trị được in ra bởi lệnh cout << sẽ thẳng theo lề trái với độ rộng phụ thuộc vào
độ rộng của giá trị đó. Phương thức này qui định độ rộng dành để in ra các giá trị là n cột màn hình. Nếu n
lớn hơn độ dài thực của giá trị, giá trị sẽ in ra theo lề phải, để trống phần thừa (dấu cách) ở trước.
setprecision(n): Chỉ định số chữ số của phần thập phân in ra là n. Số sẽ được làm tròn trước khi in ra
setiosflags(ios::showpoint): Phương thức setprecision chỉ có tác dụng trên một dòng in. Để cố định các giá trị
đã đặt cho mọi dòng in (cho đến khi đặt lại giá trị mới) ta sử dụng phương thức
setiosflags(ios::showpoint)(và 1 số định dạng nữa bạn tự tìm hiểu)
thư viện stdio.h để sử dụng các hàm printf() và scanf() chỉ cần thiết với các bạn thích chơi trội lập trình theo
kiểu cũ
thư viên math.h
1. Các hàm số học
abs(x), labs(x), fabs(x) : trả lại giá trị tuyệt đối của một số nguyên, số nguyên dài và số thực.
pow(x, y) : hàm mũ, trả lại giá trị x lũy thừa y (xy).
exp(x) : hàm mũ, trả lại giá trị e mũ x (ex).
log(x), log10(x) : trả lại lôgarit cơ số e và lôgarit thập phân của x (lnx, logx) .
sqrt(x) : trả lại căn bậc 2 của x.
atof(s_number) : trả lại số thực ứng với số viết dưới dạng xâu kí tự s_number.
2. Các hàm lượng giác
sin(x), cos(x), tan(x) : trả lại các giá trị sinx, cosx, tgx.
thư viến string.h sử lí sâu chuỗi ký tự
thư viện doc.h sử dụng
khi có hàm delay(n)(Để dòng chữ chạy không quá nhanh chương trình sử dụng hàm trễ tạm dừng trong n
phần nghìn giây)(và 1 só công dụng nữa tớ cũng chưa bít hỏi thử madifo xem!!
Đáp án Bài 2. Một người gửi tiết kiệm a đồng với lãi suất s% một tháng (tính lãi hàng tháng). Việt
một chương trình tính và in ra màn hình hai cột song song, cột thứ nhất là số tháng đã gửi, cột thứ
hai tổng số tiền (cả vốn và lãi) ứng với số tháng ở cột thứ nhất cho một khoảng thời gian từ 1 đến
t tháng, với a, s, t được nhập từ bàn phím.
#include
#include
void main(){
float a, s, kq;
int t;
cout>a;
cout>s;
cout>t;
kq = a;
cout<<"+---+-----------------+"<<endl
<<"| T | Tien von va lai |"<<endl
<<"+---+-----------------+"<<endl;
for(int i=1; i<=t; i++){
kq *= (1+s/100);
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
cout<<"|"<<setw(2)<<i<<" |"
<<setw(17)<<setprecision(2)<<setiosflags(ios::showpoint | ios::fixed)
<<kq
<<"|"<<endl;
}
cout<<"+---+-----------------+"<<endl;
}
khi nhập lãi xuất, nếu lãi xuất là 0,7 % / tháng thì hãy nhập 0.7 (chứ không phải nhập là 0.007)
khi đó sau mỗi tháng tiền lãi và vốn sẽ = tiền tháng trước + tiền tháng trước x lãi suất
đó chính là công thức trên: kq *= (1 + s/100)
Bài 3. Một người gửi tiết kiệm à đồng với lãi suất là s% một tháng trong kỳ hạn 6 tháng (6 tháng
tính lãi một lần). Viết chương trình tính và in ra màn hình hai cột song song, cột thứ nhất là số
tháng đã gửi, cột thứ hai là tổng tiền (cả vốn và lãi) ứng với số tháng ở cột thứ nhất cho một
khoảng thời gian từ 6 tháng đến t tháng, với a, s, và t được nhập từ bàn phím. (Biết rằng nếu lĩnh
không chắn kỳ nào thì không được tính lãi kỳ ấy).
#include
#include
void main(){
float a, s, kq;
int t;
cout>a;
cout>s;
cout>t;
kq = a;
cout<<"+---+-----------------+"<<endl
<<"| t | Tien von va lai |"<<endl
<<"+---+-----------------+"<<endl;
for(int i=1; i<=t; i++){
if(i%6==0)
for(int k=0;k<6;k++)kq *= (1+s/100);
cout<<"|"<<setw(2)<<i<<" |"
<<setw(17)<<setprecision(2)<<setiosflags(ios::showpoint | ios::fixed)
<<kq
<<"|"<<endl;
}
cout<<"+---+-----------------+"<<endl;
}
Đáp án Bài 4. Cho x là một số thực, hãy xây dựng hàm tính và in ra màn hình hai cột song song,
cột thứ nhất là giá trị của đối số, cột thứ hai là giá trị của hàm f ứng với đối số ở cột thứ nhất:
Sau đó, viết một chương trình nhạp từ bán phím một mảng gồm n số thực, và gọi hàm đã lập được
ở trên với đối số là các số vừa nhập.
#include
#include
#include
const float PI=4.1415;
//Ham nhap mang cac so thuc
void nhapMang(float *a,char *name, int n){
for (int i=0; i<n;i++)
{
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
cout<<name<<"["<<i+1<<"]=";
cin>>a[i];
}
}
//Ham tinh gia tri cua ham F theo cong thuc
//Neu X<=0 thi F(x)=0
//Neu 0<X<=2 thi F(x)=x*x-x
//Neu x>2 thi F(X)=(x*x-sin(x*x*PI))
float f(float x)
{
if (x<=0)
return 0;
else
if (x<=2)
return float(pow(x,2)-x);
else
return float(pow(x,2)-sin(pow(x,2)*PI));
}
//Than ham main
void main(){
float a[10], x;
int n;
cout>n;
//Goi ham nhap mang
nhapMang(a,"a",n);
//Dinh dang hien thi so thuc
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
//In gia tri cua mang tuong ung voi gia tri ham F(X)
//Hien thi hai cot song song
cout<<"+-----------+-----------------+"<<endl
<<"| X | F(X) |"<<endl
<<"+-----------+-----------------+"<<endl;
for(int i=0; i<n; i++)
{
cout<<"|"<<setw(10)<<a[i]<<" |";
cout<<setw(17)<<f(a[i])<<"|"<<endl;
}
cout<<"+----------+------------------+"<<endl;
}
Bài 5. Viết chương trình tính và in ra màn hình số tiền điện tháng 10/99 của n khách hàng theo
các chỉ số trên đồng hồ điện của tháng 9 và của tháng 10 được nhập vào từ bàn phím (phải kiểm
tra để đảm bảo rằng chỉ số của tháng sau phải lớn hơn chỉ số của các tháng trước).
Biết rằng: 50 số đầu tiền giá 500 đồng/số, 100 số tiếp theo giá 800 đồng/số, 100 số tiếp theo nữa
giá 1000 đồng/số, 100 số tiếp theo nữa giá 1200 đồng/số, và từ số thứ 351 trở đi giá 1500
đồng/số.
Sửa đầu bài 1 tý cho đơn giản: nhập số lượng điện tiêu thụ, tính số tiền phải trả theo đơn giá trên
(chưa có thuế VAT), VAT =10%
/*đơn giá:
từ số: đơn giá
0-50: 500
51-150: 800
151-250: 1000
251-351: 1200
351 - ...: 1500 */
#include
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
#include
void main(){
int n;
float t=0;
cout<<"nhap luong dien tieu thu: ";
cin>>n;
if(n>350)t+=(n-=350)*1500.0;
if(n>250)t+=(n-=250)*1200.0;
if(n>150)t+=(n-=150)*1000.0;
if(n> 50)t+=(n-= 50)* 800.0;
if(n> 0)t+=(n )* 500.0;
cout<<"tien dien: "
<<setprecision(0)
<<setiosflags(ios::fixed)
<<(t*1.1);
}
Giờ nếu nhập 2 chỉ số thì trừ nó đi cho nhau thì sẽ ra lượng điện tiêu thụ
động tác kiểm tra số sau lớn hơn số trước thiết nghĩ rất đơn giản, để các bạn sv tự làm
Khi học đến phần mảng, chúng ta sẽ nhập số người tương ứng là số phần tử của mảng, sau đó vận dụng bài
này để tính tiền điện cho từng người (từng giá trị trong mảng)
chú ý: t là số tiền phải trả, t*1.1 là số tiền đã có thuế 10%
Bài 7. Viết chương trình giải phương trình bậc hai ax2+bx+c=0 với a, b, c bất kỳ được nhập vào từ
bàn phím. In ra màn hình phương trình bậc hai với các hệ số đã nhập, giá trị của delta và các
nghiệm thức của nó (nếu cố), ngươcij lại thì in là không có nghiệm thực.
chú ý: nếu a=0 thì sẽ thành pt bậc nhất, nên tiện đây đưa luôn bài gpt b1
#include
#include
void main(void)
{
float a,b;
cout<<"Nhap 2 he so cua pt bac nhat:";
cin>>a>>b;
if(a!=0)
cout<<"pt co 1 nghiem thuc x="<<(-b/a);
else
if(b==0)
cout<<"pt lay nghiem nao cung dc";
else
cout<<"pt vo nghiem";
}
giờ nếu a khác 0 thì có pt bậc 2:
#include
#include
#include
void main(void)
{
float a,b,c,d,x1,x2;
cout<<"nhap 3 hs cua ptb2: ";
cin>>a>>b>>c;
d=b*b-4*a*c;
if(d>=0){
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
x1=(-b-sqrt(d))/(2*a);
x1=(-b+sqrt(d))/(2*a);
cout<<"pt co 2 nghiem thuc"<<endl
<<"nghiem thuc 1="<<x1<<endl
<<"nghiem thuc 2="<<x2;
}
else{
cout<<"pt k co nghiem thuc"<<endl
<<"pt co 2 nghiem phuc lien hop"<<endl;
float thuc,ao;
thuc=-b/2/a;
ao=sqrt(-d)/2/a;
cout<<"nghiem ao 1="<<thuc<<"-i"<<ao<<endl;
<<"nghiem ao 2="<<thuc<<"+i"<<ao<<endl;
}
}
Các bạn hãy vận dụng kiến thức của mình để kết hợp thành 1 bài hoàn chỉnh đủ theo đúng nghĩa với a, b, c
bất kỳ
Bài 8. Năm 1999, dân số nước ta là 76 triệu người, tỷ lệ tăng tự nhiên là k% một năm. Lập một
chương trình in ra màn hình hai cột song song, cột thứ nhất là năm, cột thứ hai là dân số của năm
tương ứng ở cột một cho đến khi dân số tăng s lần so với năm 1999. Các số k và s được nhập vào
từ bàn phím.
Giải:
#include
#include
#include
#include
void main(void)
{
clrscr();
int k; //% tang dan so hang nam
float s;//So lan tang
cout>k;
cout>s;
long dansocu=76000000,dansomoi;
dansomoi=dansocu;
int nam=1999;
//Thiet lap dinh dang
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
cout<<"\n------------------------------------------";
cout<<"\n"<<setw(20)<<"NAM"<<setw(20)<<"DAN SO";
cout<<"\n------------------------------------------";
while(dansomoi<=s*dansocu)
{
cout<<"\n"<<setw(20)<<nam<<setw(20)<<dansomoi;
dansomoi=dansomoi+dansomoi*((float)k/100);
nam++;
}
cout<<"\n------------------------------------------\n";
getch();
}
Bài 10. Xây dựng một hàm sắp xếp theo thứ tự tăng dần một mảng gồm n số thực. Viết chương
trình để nhập n số thực từ bàn phím, sử dụng hàm sắp xếp nói trên, và in ra màn hình hai cột song
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
song, một cột là mảng chưa sắp xếp, một cột là mảng đã được sắp xếp.
Giải:
#include
#include
#include
#include
void NhapMang(float a[],float b[],int n)
{
cout<<"\nNhap mang\n";
for (int i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
b[i]=a[i];
}
}
void InMang(float a[],float b[],int n)
{
cout<<setw(10)<<"TT";
cout<<setw(20)<<"Mang chua sap xep";
cout<<setw(20)<<"Mang da sap xep";
cout<<"\n-----------------------------------------------------";
for (int i=0;i<n;i++)
{
cout<<endl<<setw(10)<<i+1<<setw(20)<<a[i]<<setw(20)<<b[i];
}
cout<<"\n-----------------------------------------------------\n";
}
void SapXep(float a[],int n)
{
//Sap xep tang dan
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if (a[i]>a[j])
{
float tg;
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
}
void main(void)
{
clrscr();
float a[100],b[100];
int n;
cout<<"Nhap N=";
cin>>n;
NhapMang(a,b,n);
SapXep(b,n);
//Thiet lap dinh dang
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
InMang(a,b,n);
getch();
}
Bài 11. Xây dựng một hàm sắp xếp thep thứ tự giảm dần một mảng gồm n số thực. Viết chương
trình để nhập n số thực từ bàn phím, sử dụng hàm sắp xếp nói trên, và in ra màn hình hai cột song
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
song, một cột là mảng chưa sắp xếp, một cột là mảng đã được sắp xếp.
Giải:
#include
#include
#include
#include
void NhapMang(float a[],float b[],int n)
{
cout<<"\nNhap mang\n";
for (int i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
b[i]=a[i];
}
}
void InMang(float a[],float b[],int n)
{
cout<<setw(10)<<"TT";
cout<<setw(20)<<"Mang chua sap xep";
cout<<setw(20)<<"Mang da sap xep";
cout<<"\n-----------------------------------------------------";
for (int i=0;i<n;i++)
{
cout<<endl<<setw(10)<<i+1<<setw(20)<<a[i]<<setw(20)<<b[i];
}
cout<<"\n-----------------------------------------------------\n";
}
void SapXep(float a[],int n)
{
//Sap xep giam dan
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if (a[i]<a[j])
{
float tg;
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
}
void main(void)
{
//clrscr();
float a[100],b[100];
int n;
cout<<"Nhap N=";
cin>>n;
NhapMang(a,b,n);
SapXep(b,n);
//Thiet lap dinh dang
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
InMang(a,b,n);
//getch();
}
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
Bài 12. Cho F là một số thực lớn hơn 2, và S=1/2+1/3+…+1/n. Hãy xây dựng một hàm để tìm giá
trị lớn nhất của n sao cho S<=F. Viết một chương trình để nhập vào từ bàn phím m số thực Fi, sử
dụng hàm nói trên đối với các hàm Fi đã nhập và in ra màn hình thành ba cột song song: các giá
trị của Fi, n, và S tương ứng.
Giải:
#include
#include
#include
#include
int max(double f, double &s)
{
int i=1;
s=0;
while(s<=f)
{
s+=(double)1/double(i++);
}
return i;
}
void main(void)
{
clrscr();
double f[100], s[100];
int n,i;
cout>n;
for(i=0;i<n;i++)
{
cout>f[i];
}
//Thiet lap dinh dang
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
clrscr();
cout<<endl<<setw(10)<<"F"<<setw(10)<<"MAX"<<setw(10)<<"S";
cout<<"\n--------------------------------";
for(i=0;i<n;i++)
{
cout<<endl<<setw(10)<<f[i]<<setw(10)<<max(f[i],s[i]);
cout<<setw(10)<<s[i];
}
cout<<"\n--------------------------------\n";
getch();
}
Bài 11 (chế lại đầu bài): Nhập n phần tử số thực từ bàn phím, in mảng ra màn hình, sắp xếp giảm
dần, in mảng vừa sắp xếp.
Code:
#include //khai bao thu vien su dung luong nhap xuat
#include //thu vien dinh dang nhap xuat
#include //thu vien cac ham toan hoc
#include //thu vien cung cap cac ham ve man hinh, ban phim
void NhapMang(float a[], int n){
cout << "Nhap mang" << endl; //thong bao qua trinh nhap bat dau
for (int i = 0; i < n ; i++){ //vong lap duyet tu chi so 0 den n-1
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
cout << "a[" << i << "] = "; //moi lan: thong bao phan tu sap duoc
nhap
cin >> a[i]; //nhap gia tri tu ban phim cho phan tu thu
i
} //ket thuc vong lap
} //ket thuc ham NhapMang
void InMang(float a[], int n){
//Thiet lap dinh dang
cout << setiosflags(ios::showpoint|ios::fixed);
cout << setprecision(2);
//in tung phan tu cua mang, cach nhau boi dau cach (space)
for (int i = 0; i < n; i++)cout << a[i] << " ";
cout << endl;
}
void SapXep(float a[], int n){
//Sap xep giam dan
for(int i = 0; i < n-1; i++)
for(int j = i+1; j<n; j++)
if (a[i] < a[j]){
float tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
void main(void)
{
clrscr(); //xoa man hinh
float a[100]; //khai bao bien mang a co 100 phan tu số thực
int n; //khai bao bien n luu so luong phan tu trong mang
cout << "Nhap N = "; //thong bao cho nguoi dung nhap so luong
cin >> n; //nhap gia tri cho bien n tu ban phim
NhapMang(a,n); //nhap n gia tri cho tung phan tu cua mang
cout << "Mang truoc khi sap xep:"<<endl;
InMang(a,n); //in mang truoc khi sap xep
SapXep(a,n); //sap xep mang
cout << "Mang sau khi sap xep:"<<endl;
InMang(a,n); //in mang sau khi da sap xep
getch(); //cho nguoi dung an phim bat ky de thoat
}
Chú ý: nếu muốn sắp xếp tăng dần thì thay toán tử so sánh nhỏ hơn trong đoạn code trên bởi toán
tử so sánh lớn hơn.
Cụ thể hàm sắp xếp tăng dần sẽ là:
Code:
void SapXep(float a[], int n){
//Sap xep tăng dần
for(int i = 0; i < n-1; i++)
for(int j = i+1; j<n; j++)
if (a[i] > a[j]){
float tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
Còn sắp xếp giảm dần sẽ là:
Code:
void SapXep(float a[], int n){
//Sap xep tăng dần
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
for(int i = 0; i < n-1; i++)
for(int j = i+1; j<n; j++)
if (a[i] < a[j]){
float tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
@admin: malyfo chế lại đầu bài tí, vì thiết nghĩ động tác in 2 cột song song không toát lên vấn đề, ở đây vấn
đề là đưa ra cách nhập 1 mảng n phần tử
và cách sắp xếp 1 mảng n phần tử (tăng hoặc giảm)
trước khi sắp xếp và sau khi sắp xếp ta đều gọi hàm in toàn bộ giá trị của mảng ra màn hình => giúp thấy
được ý nghĩa của việc sắp xếp
-------------------------------------------------------------------------------------
Bài 11 (chế lại đầu bài): Nhập n phần tử số thực từ bàn phím, in mảng ra màn hình, sắp xếp giảm
dần, in mảng vừa sắp xếp.
Ta làm bài trên theo cách đưa quá trình nhập số lượng phần tử vào trong hàm nhập bằng cách khai báo đối
số của hàm nhập: đối số n là tham chiếu
#include //khai bao thu vien su dung luong nhap xuat
#include //thu vien dinh dang nhap xuat
#include //thu vien cac ham toan hoc
#include //thu vien cung cap cac ham ve man hinh, ban phim
void NhapMang(float a[], int &n){ // n là tham chiếu
cout << "Nhap N = "; //thong bao cho nguoi dung nhap so luong
cin >> n; //nhap gia tri cho bien n tu ban phim
cout << "Nhap mang" << endl; //thong bao qua trinh nhap bat dau
for (int i = 0; i < n ; i++){ //vong lap duyet tu chi so 0 den n-1
cout << "a[" << i << "] = "; //moi lan: thong bao phan tu sap duoc
nhap
cin >> a[i]; //nhap gia tri tu ban phim cho phan tu thu
i
} //ket thuc vong lap
} //ket thuc ham NhapMang
void InMang(float a[], int n){
//Thiet lap dinh dang
cout << setiosflags(ios::showpoint|ios::fixed);
cout << setprecision(2);
//in tung phan tu cua mang, cach nhau boi dau cach (space)
for (int i = 0; i < n; i++)cout << a[i] << " ";
cout << endl;
}
void SapXep(float a[], int n){
//Sap xep giam dan
for(int i = 0; i < n-1; i++)
for(int j = i+1; j<n; j++)
if (a[i] < a[j]){
float tg = a[i];
a[i] = a[j];
a[j] = tg;
}
}
void main(void)
{
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
clrscr(); //xoa man hinh
float a[100]; //khai bao bien mang a co 100 phan tu số thực
int n; //khai bao bien n luu so luong phan tu trong mang
NhapMang(a,n); //nhap số lượng n và gia tri cho tung phan tu cua
mang
cout << "Mang truoc khi sap xep:"<<endl;
InMang(a,n); //in mang truoc khi sap xep
SapXep(a,n); //sap xep mang
cout << "Mang sau khi sap xep:"<<endl;
InMang(a,n); //in mang sau khi da sap xep
getch(); //cho nguoi dung an phim bat ky de thoat
}
Bài 16. Hãy xây dựng một hàm để nhập từ bàn phím một mảng số thực. Viết một chương trình sử
dụng hàm đã xây dựng được ở trên để nhập số liệu cho hai mảng số thực, một mảng có n phẩn tử,
và một mảng có m phần tử, in ra màn hình hai cột song song, mỗi cột là một mảng với ô cuối cùng
là tổng của các phần tử trong mảng, và cuối cùng là tổng của hai mảng.
Giải:
#include
#include
#include
//Do bài yêu cầu nhập hai mang
//Chúng ta cho thêm tham số name để hiển thị tên mạng khi nhập
void nhapMang(double *a,char *name, int n){
for (int i=0; i<n;i++)
{
cout<<name<<"["<<i+1<<"]=";
cin>>a[i];
}
}
void main(){
double a[100],b[100];
int n,m,i;
//Nhập số lượng phần tử mảng A
cout>n;
//Nhập số lượng phần tử mảng B
cout>m;
//Nhap hai mang a[N], b[M]
nhapMang(a,"a",n);
nhapMang(b,"b",m);
// Thiết lập định dạng
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
//Max chua so phan tu lon hon
int max=m>n?m:n;
double s1=0.0,s2=0.0;//Tong mang a la s1, tong mang b la s2
cout<<endl<<setw(5)<<"TT"<<setw(10)<<"A"<<setw(10)<<"B";
cout<<"\n---------------------------------";
for(i=0;i<max;i++)
{
if ((i<m) && (i<n))
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<a[i]<<setw(10)<<b[i];
s1=s1+a[i];
s2=s2+b[i];
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
}
//Luc nay chi con phan tu cua mang A hoac B
else if (i<n)//Neu i<n thi In phan tu cua mang a
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<a[i];
s1=s1+a[i];
}
else if (i<m)//Neu i<m thi In phan tu cua mang b
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<" "<<setw(10)<<b[i];
s2=s2+b[i];
}
}
cout<<"\n---------------------------------";
cout<<endl<<setw(5)<<"Tong:"<<setw(10)<<s1<<setw(10)<<s2<<endl;
cout<<"Tong: s1+s2="<<s1+s1<<endl;
}
Viết chương trình giải bài toán cổ điển sau:
Vừa gà vừa chó 36 con
Bó lại cho tròn, đếm đủ 100 chân
Hỏi có bao nhiêu gà, bao nhiêu chó
Gọi số gà là x, số chó là y
x+y=36
Mỗi con gà có hai chân, chó có bốn chân. Số chân gà và chân chó là:
x*2+y*4=100
Vì vậy
#include
int main()
{
int ga,cho;
for(ga=1;ga<=35;ga++)
for(cho=1;cho<=24;cho++)
if ((ga+cho==36)&&(ga*2+cho*4==100))
cout<<"Ga="<<ga<<"\nCho"<<cho<<endl;
}
5. Viết chương trình giải bài toán cổ điển sau:
Trăm trâu, trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba,
Ba trâu già ăn một
Hỏi mỗi loại trâu có bao nhiêu con.
Gọi x là số trâu đứng, y là trâu năm, z là trâu già
x+y+z=100
Do trâu đứng ăn năm, trầu nằm ăn 3 và ba trâu già ăn một
x*5+y*3+z/3=100
Số trâu đứng tối là là 16 vì tối thiểu phải có 3 trâu già (3 trâu già ăn một bó), và một trâu năm. Nếu có 20
trâu đứng thì sẽ ăn hết 20*5=100 bó cỏ, như vậy 20-3(trâu già)-1 (trâu nằm)=16.
// Tram trau tram co.
//Trau Dung an 5.
//Trau nam an 3.
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
//Trau gia 3 con an 1.
#include
#include
int main()
{
int Dung,Nam,Gia;
for (Dung=1;Dung<=16;Dung++)
for (Nam=1;Nam <33;Nam++)
for (Gia=3;Gia<=100;Gia+=3)
if(Dung+Nam+Gia==100&&5*Dung+3*Nam+Gia/3==100)
{
cout<<"\nTrau Dung="<<Dung;
cout<<" Trau nam="<<Nam;
cout<<" Trau gia="<<Gia;
}
cout<<endl;
}
Viết chương trình nhập vào từ bàn phím bán kính R của hình cầu. Hãy tính và in ra diện tích và thể
tích hình cầu đó:
#include
#include
float main()
{
const float PI=3.1415;
float s,v,r;
//Yêu cầu nhập r>0, trong khi r<=0 thì nhập lại r
do
{
cout>r;
}while(r<=0);
s=4*PI*r*r;
v=4*PI*r*r*r/3;
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
cout<<"\nV="<<v;
cout<<"\nS="<<s<<endl;
}
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
Các file đính kèm theo tài liệu này:
- 40_bai_tap_c_tuananhk43_trathai_vn.pdf