Bai tap C++ - Ptit

7
A01-02-03-04. A01.Nhập số tự nhiên n rồi tính tổng (lưu ý phép chia các số nguyên): S =1+ + +...+ A02.Nhập số tự nhiên n rồi tính các tổng sau: S=tổng các số tự nhiên không lớn hơn n, S1=tổng các số tự nhiên lẻ không lớn hơn n, S2=tổng các số tự nhiên chẵn không lớn hơn n. A03.Nhập số tự nhiên n rồi tính tổng các số tự nhiên không lớn hơn n và chia hết cho 7. A04. Nhập số tự nhiên n rồi tính tổng các số tự nhiên không lớn hơn n và không chia hết cho 7. #include<stdio.h> #include<conio.h> #include <iostream.h> Void main() { Int chon,n,i; do { clrscr(); cout << "\n 1. Nhap n = "; cout << "\n 2. Hien thi n : "; cout << "\n 3. Tinh tong S=1+1/2:1/3+…+1/n "; cout << "\n 4. Tinh tong S1 (Tong cac so tu nhien khong lon hon n): "; cout << "\n 5. Tinh tong S2 (Tong cac so tu nhien le khong lon hon n): "; cout << "\n 6. Tinh tong S3 (Tong cac so tu nhien chan khong lon hon n): "; cout << "\n 7. Tinh tong S4 (Tong cac so tu nhien khong lon hon n va chia het cho 7): "; cout << "\n 8. Tinh tong S5 (Tong cac so tu nhien khong lon hon n va khong chia het cho 7): "; cout << "\n 0. Thoat "; cout << "\n Moi ban chom (0-8): “; cin >> chon; switch (chon) { case 1 : cout << “\n n= “; cin >>n; break; case 2 : cout << “\n n= “<<n; break; case 3 : fload S=0; for (i=1,i<=n,i++) S+=(float) 1/i; Cout << “\n Tong S= “ <<S; break; case 4 : int S1=0; for (i=1,i<=n,i++) S1=S1+i; Cout << “\n Tong S1= “ <<S1; break; case 5 : int S2=0; for (i=1,i<=n,i++) { if (i%2==1) S2=S2+i; } Cout << “\n Tong S2= “ <<S2; break; case 6 : int S3=0; for (i=1,i<=n,i++) { if (i%2==0) S3=S3+i; } Cout << “\n Tong S3= “ <<S3; break; case 7 : int S4=0; for (i=1,i<=n,i++) { if (i%7==0) S4=S4+i; } Cout << “\n Tong S4= “ <<S4; break; case 8 : int S5=0; for (i=1,i<=n,i++) { if (i%7!=0) 1

Transcript of Bai tap C++ - Ptit

Page 1: Bai tap C++ - Ptit

A01-02-03-04. A01.Nhập số tự nhiên n rồi tính tổng (lưu ý phép chia các số nguyên): S =1+ + +...+

A02.Nhập số tự nhiên n rồi tính các tổng sau: S=tổng các số tự nhiên không lớn h ơn n, S1=tổng các số tự nhiên lẻ không lớn hơn n, S2=tổng các số tự nhiên chẵn không lớn hơn n. A03.Nhập số tự nhiên n rồi tính tổng các số tự nhiên không lớn hơn n và chia hết cho 7.

A04. Nhập số tự nhiên n rồi tính tổng các số tự nhiên không lớn hơn n và không chia hết cho 7.#include<stdio.h>#include<conio.h>#include <iostream.h>Void main() {Int chon,n,i;do {clrscr();cout << "\n 1. Nhap n = "; cout << "\n 2. Hien thi n : "; cout << "\n 3. Tinh tong S=1+1/2:1/3+…+1/n "; cout << "\n 4. Tinh tong S1 (Tong cac so tu nhien khong lon hon n): ";cout << "\n 5. Tinh tong S2 (Tong cac so tu nhien le khong lon hon n): ";cout << "\n 6. Tinh tong S3 (Tong cac so tu nhien chan khong lon hon n): ";cout << "\n 7. Tinh tong S4 (Tong cac so tu nhien khong lon hon n va chia het cho 7): ";cout << "\n 8. Tinh tong S5 (Tong cac so tu nhien khong lon hon n va khong chia het cho 7): ";cout << "\n 0. Thoat "; cout << "\n Moi ban chom (0-8): “;cin >> chon;switch (chon) { case 1 : cout << “\n n= “; cin >>n; break; case 2 : cout << “\n n= “<<n; break; case 3 : fload S=0; for (i=1,i<=n,i++) S+=(float) 1/i;

Cout << “\n Tong S= “ <<S; break; case 4 : int S1=0; for (i=1,i<=n,i++) S1=S1+i;

Cout << “\n Tong S1= “ <<S1; break; case 5 : int S2=0; for (i=1,i<=n,i++) { if (i%2==1) S2=S2+i; }

Cout << “\n Tong S2= “ <<S2; break; case 6 : int S3=0; for (i=1,i<=n,i++) { if (i%2==0) S3=S3+i; }

Cout << “\n Tong S3= “ <<S3; break; case 7 : int S4=0; for (i=1,i<=n,i++) { if (i%7==0) S4=S4+i; }

Cout << “\n Tong S4= “ <<S4; break; case 8 : int S5=0; for (i=1,i<=n,i++) { if (i%7!=0) S5=S5+i; }

Cout << “\n Tong S5= “ <<S5; break; case 0 : cout << “\n Bye, see you again !!! “; break; default: cout <<”\n De nghi nhap (0-8) ! “;}Getch();} while (chon !=0);}A05. Ba số dương a,b,c là độ dài các cạnh của một tam giác nếu tổng của 2 số bất kỳ lớn hơn số còn lại. Nhập 3 số a,b,c và kiểm tra xem chúng có thể là độ dài của các cạnh của một tam giác hay không.#include<stdio.h>#include<conio.h>#include <iostream.h>void main() {fload a,b,c;

1

Page 2: Bai tap C++ - Ptit

clrscr();cout << "\n Nhap ba so a,b,c : “;cout << "\n Nhap he so a = "; cin >>a;cout << "\n Nhap he so b = "; cin >>b;cout << "\n Nhap he so c = "; cin >>c; if ((a+b)>c && (b+c)>a && (a+c)>b) cout << “\n Ba so a,b,c la ba canh cua mot tam giac “; if ((a+b)<=c && (b+c)<=a && (a+c)<=b) cout << “\n Ba so a,b,c khong phai la ba canh cua mot tam giac “;getch();}A06. Nhập một số tự nhiên n rồi đếm các số tự nhiên không lớn hơn n và chia cho 3 dư 1 (tức là các số đồng dư với 1 mod 3).#include<stdio.h>#include<conio.h>#include <iostream.h>void main() {int n,I,C3D1=0;clrscr();cout << ”\n Nhap so tu nhien n : “;for (i=1,i<=n,i++) { if (i%3==1)C3D1++; }Cout << “\n So cac so tu nhien khong lon hon n va chia cho 3 du 1 la : “ <<C3D1;Getch();}A07. Hãy nhập 4 số thực a,b,c,d. Tìm giá trị lớn nhất của chúng và gán giá trị lớn nhất đó cho biến max. #include<stdio.h>#include<conio.h>#include <iostream.h>void main() {double a,b,c,d,max;clrscr();cout << "\n Nhap bon so thuc a,b,c,d : “;cout << "\n Nhap so a = "; cin >>a;cout << "\n Nhap so b = "; cin >>b;cout << "\n Nhap so c = "; cin >>c;cout << "\n Nhap so d = "; cin >>d; if (a>b && a>c && a>d) max=a; if (b>a && b>c && b>d) max=b; if (c>a && c>b && c>d) max=c; if (d>a && d>b && d>c) max=d;cout << “\n So thuc lon nhat trong cac so : (“<<a<<” , “<<b<<” , “<<c<<” , “<<d<<” la : max= “<<max;getch();}A09. Nhập 3 số thực a,b,c rồi giải và biện luận phương trình bậc 2 ax2 + bx + c = 0 .#include<stdio.h>#include<conio.h>#include<math.h>#include <iostream.h>void main() { float a,b,c,delta,x,x1,x2; clrscr(); cout << "\n Nhap he so a = "; cin >>a; cout << "\n Nhap he so b = "; cin >>b; cout << "\n Nhap he so c = "; cin >>c; delta = b*b - 4*a*c; if (delta < 0) cout << "\n Phuong trinh vo nghiem"; if (delta == 0) { x=-b/(2*a); cout << "\n Phuong trinh co nghiem kep x1 = x2 = "<<x; } if (delta > 0) { x1=(-b + sqrt(delta))/(2*a); x2=(-b - sqrt(delta))/(2*a); cout << "\n Phuong trinh co 2 nghiem phan biet la :"; cout << "\n\n x1 = "<<x1; cout << "\n\n x2 = "<<x2; } getch();}A10 . Viết chương trình C giải bài toán sau: trăm trâu trăm cỏ, trâu đứng ăn 5, trâu nằm ăn 3, lụ khụ trâu già, ba con ăn 1. Hỏi có bao nhiêu trâu

đứng, bao nhiêu trâu nằm và bao nhiêu trâu già? #include<stdio.h>#include<conio.h>

2

Page 3: Bai tap C++ - Ptit

#include <iostream.h>void main() {int i,j,k;clrscr(); for (i=1;i<=5;i++) for (j=1;j<=33;j++) for (k=1;k<=100;k++) if ((i+j+k)==100 && (i*5+J*3+K/3)==100) cout << “\n So trau dung : “<<i<<” , trau nam : “<<j<<” , trau gia : “<<k;getch();}A11. Nhập số tự nhiên n rồi tính n! theo công thức:

n! = 1 nếu n=0n! = n*(n-1)*(n-2)*...*2*1 nếu n>0

#include<stdio.h>#include<conio.h>#include <iostream.h>void main() {int i,n,gt=1;cout<<"\n Nhap gia tri n : "; cout<<"\n n= "; cin>>n; if (n==0) cout << “\n Gia tri giai thua : 0!=1 “; if (n>0) { for (i=1;i<=n;i++) gt=gt*i; cout << “\n Gia tri giai thua : “<<n<<” != “<<gt”; }getch();}A12. Viết chương trình tìm ước số chung lớn nhất của 2 số nguyên m, n theo thuật toán Euclid.#include <stdio.h>#include <conio.h> #include <iostream.h> int UCLN(int m, int n) {if(m==n)return m;else if(m>n)return UCLN(m-n,n);elsereturn UCLN(m,n-m);}void main() {clrscr();int m,n;cout<<"\n Nhap m = "; cin>>m;cout<<"\n Nhap n = "; cin>>n;cout<<"\n Uoc chung lon nhat cua "<<m<<" va "<<n<<" la "<<UCLN(m,n);getch(); } A13. Thời gian làm một việc nào đó là x giây. Hãy đọc x từ bàn phím và viết chương trình chuyển sang bao nhiêu giờ, phút,giây.#include<stdio.h>#include<conio.h>#include <iostream.h>void main() {long time,h,p,s;clrscr();cout << “\n Nhap vao so giay can doi : “;cout << “\n time = “; cin>>time; h=time/3600; p=(time%3600)/60; s=(time%3600)%60;cout <<”\n Thoi gian : “<<time<<” giay doi ra: “<<h<<” gio, “<<p<<” phut, “<<s<<” giay “;getch();}A14. Viết chương trình nhập số liệu cho ma trận các số thực A cấp mxn trong đó m, n là các số tự nhiên. Sau đó tìm ma trận chuyển vị B = (bij)

cấp nxm, bij = aji i = 1,2,...,n;j =1,2,...,mCho hiện 2 ma trận trên màn hình để tiện so sánh.

A15. Viết chương trình tính tích 2 ma trận các số thực A cấp mxn và B cấp nxk.A08-16-17. A08.Nhập số n và dãy các số thực a[0], a[1],..., a[n-1]. Sau đó tìm số lớn nhất trong dãy này. A16.Nhập số liệu cho dãy số thực a0 , a1 ,...,

an-1 và một số x bất kỳ. Đếm số lần xuất hiện của số x trong dãy trên. A17.Nhập số liệu cho dãy số thực a0 , a1 ,..., an-1 . Tìm số bé nhất trong dãy trên và vị trí của nó trong dãy.

#include<stdio.h>#include<conio.h>#include <iostream.h> void main() { int chon,n,I,j,vtmax,vtmin;double a[100],tg,max,min;do {

3

Page 4: Bai tap C++ - Ptit

clrscr();cout << "\n 1. Nhap so n – so phan tu cua day so : "; cout << "\n 2. Hien thi day so : "; cout << "\n 3. Tim so lon nhat cua day va vi tri cua no trong day "; cout << "\n 4. Tim so nho nhat cua day va vi tri cua no trong day "; cout << "\n 5. Tim so lan xuat hien cua so x trong day ";cout << "\n 6. Sap xep theo thu tu tang dan "; cout << "\n 0. Thoat “;cout << "\n Moi ban chom (0-6): “;cin >> chon;switch (chon) { case 1 : cout << “\n n= “; cin >>n; for (i=0;i<n;i++) { cout << “\n A[“<<i<<”]= “; cin >>a[i]; } break; case 2 : cout << “\n Day so la : “; for (i=0;i<n;i++) cout << “\n “<<a[i]<<” “; break; case 3 : max=a[0]; for (i=1,i<n,i++) { if (a[i]>max) max=a[i]; } for (i=1,i<n,i++) { if (a[i]==max) vtmax=i; }

Cout << “\n Phan tu lon nhat la : “<<max<<” o vi tri “<<vtmax<< cua day “; break; case 4 : min=a[0]; for (i=1,i<n,i++) { if (a[i]<min) min=a[i]; } for (i=1,i<n,i++) { if (a[i]==min) vtmin=i; }

Cout << “\n Phan tu nho nhat la : “<<min<<” o vi tri “<<vtmin<< cua day “; break; case 5 : double x; int xh=0; cout << “\n x= “; cin>>x: for (i=1,i<n,i++) { if (a[i]==x) xh++; }

Cout << “\n So lan “<<x<<” xuat hien “<<xh<<” lan “; break; case 6 : int S3=0; for (i=1,i<n,i++) for (j=i+1,j<n,j++) if (a[i]>a[j]) { tg=a[i]; a[i]=a[j]; a[j]=tg; }

Cout << “\n Day tang dan sau khi sap xep : “; for (i=1,i<n,i++) Cout <<a[i]<<” “; break; case 0 : cout << “\n Bye, see you again !!! “; break; default: cout <<”\n De nghi nhap (0-6) ! “;}Getch();} while (chon !=0);}A18. Nhập số liệu cho dãy số nguyên a0 , a1 ,..., an-1 Hãy đếm xem trong dãy có bao nhiêu số lẻ và bao nhiêu số chẵn.#include<stdio.h>#include<conio.h>#include <iostream.h> void main() { int chon,a[100],n,I,sole=0,sochan=0;do {clrscr();cout << "\n 1. Nhap n phan tu cua day so : "; cout << "\n 2. Hien thi day so : "; cout << "\n 3. Dem xem trong day co bao nhieu so le va bao nhieu so chan “;cout << "\n 0. Thoat “;cout << "\n Moi ban chom (0-3): “;cin >> chon;switch (chon) { case 1 : cout << “\n n= “; cin >>n;

4

Page 5: Bai tap C++ - Ptit

for (i=0;i<n;i++) { cout << “\n A[“<<i<<”]= “; cin >>a[i]; } break; case 2 : cout << “\n Day so la : “; for (i=0;i<n;i++) cout <<a[i]<<” “; break; case 3 : for (i=1,i<n,i++) { if (a[i]%2==1) sole++; } for (i=1,i<n,i++) { if (a[i]%2==0) sochan++; }

Cout << “\n Trong day so co : “<<sole<<” so le, “<<sochan<< so chan. “; Sole=0; sochan=0; break; case 0 : cout << “\n Bye, see you again !!! “; break; default: cout <<”\n De nghi nhap (0-6) ! “;}Getch();} while (chon !=0);}B01. Nhập số tự nhiên n rồi liệt kê các ước số của nó. Có bao nhiêu ước số?#include<stdio.h>#include<conio.h>#include <iostream.h> void main() { unsigned int n,i,dem=0; clrscr(); cout << "\n Nhap so tu nhien n = "; cin >>n; for (i = 1; i <= n; i++) if (n % i == 0) dem++; cout << "\n\n Co tat ca "<<dem<<" uoc so cua "<<n; cout << "\n\n Nhung uoc so cua "<<n<<" la : "; for (i = 1; i <= n; i++) if (n % i == 0) cout <<i<<" "; getch(); }B02. Nhập 2 số tự nhiên m,n rồi kiểm tra xem chúng có nguyên tố cùng nhau không. (Hai số nguyên tố cùng nhau là 2 số có USCLN là 1)#include <stdio.h>#include <conio.h>#include <iostream.h>int UCLN(unsigned int m, unsigned int n) {if(m==n)return m;else if(m>n)return UCLN(m-n,n);elsereturn UCLN(m,n-m);}void main() {clrscr();unsigned int m,n;cout<<"\n Nhap m = "; cin>>m;cout<<"\n Nhap n = "; cin>>n; if (UCLN(m,n) ==1) cout<<"\n "<<m<<" va "<<n<<" la hai so nguyen to cung nhau"; if (UCLN(m,n) !=1) cout<<"\n "<<m<<" va "<<n<<" khong phai la hai so nguyen to cung nhau";getch();} B03. Tìm tất cả các số có 3 chữ số abc sao cho tổng lập phương của các chữ số thì bằng chính số đó, nghĩa là: abc = a3 + b3 + c3 (3) .Có bao

nhiêu số như vậy?#include <stdio.h>#include <conio.h>#include <iostream.h>void main() {int abc,a,b,c,xh;clrscr();cout << "\n Nhung so co ba chu so thoa man la : “; for (a=1;a<10;a++) for (b=0;b<10;b++) for (c=0;c<10;c++) { abc=a*100+b*10+c; if (abc==a*a*a+b*b*b+c*c*c) {

5

Page 6: Bai tap C++ - Ptit

xh++; cout << “\n “<<abc<< “ “; } } cout << “\n Co “<<xh<<” so thoa man nhu vay. “;getch();}B04. Nhập một số nguyên dương n, sau đó viết ra màn hình số đó dưới dạng nhị phân.#include <stdio.h>#include <conio.h>#include <iostream.h> void main() { int n,i,j,a[20]; clrscr(); cout << "\n Nhap so nguyen duong n = "; cin>>n; if (n>0) cout << "\n So "<<n<<" duoi dang nhi phan la: "; i=0; while(n>0){ a[i]=n%2; n=n/2; i++; } for(j=i-1;j>=0;j--) cout <<a[j]; getch(); }

6