40 bài tập C

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ũ

pdf13 trang | Chia sẻ: oanh_nt | Lượt xem: 1514 | Lượt tải: 1download
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:

  • pdf40_bai_tap_c_tuananhk43_trathai_vn.pdf
Tài liệu liên quan