Yêu cầu viết chương trình nhập vào 2 phân số, yêu cầu xuất phân số tổng của 2 phân số đó (phân số tổng được rút gọn, sau đó xuất ra màn hình).. Nếu input có phân số nào có mẫu bằng 0 th[r]
Trang 11 FCT_Swap
2 số nguyên a và b, mỗi số cách nhau 1 khoảng trắng 2 số nguyên a và b đã hoán đổi giá trị, mỗi số cách nhau 1
khoảng trắng
#include<iostream>
using namespace std;
void hoanvi(int &a, int &b);
int main(){
int a,b;
cin>>a>>b;
hoanvi(a,b);
cout<<a<<" "<<b;
return 0;
}
void hoanvi(int &a, int&b){
int c=a;
a=b;
b=c;
}
2 MANG3
Dòng 1: Nhập vào N là số lượng phần tử của mảng
Dòng 2: N số nguyên (mỗi số cách 1 khoảng trắng)
Yêu cầu xuất tổng các số chính phương ra màn hình
4
1 2 3 4
5
#include<iostream>
#include<cmath>
#include<stdio.h>
using namespace std;
bool isSCP(int n);
int main(){
int n, a[1000];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int s=0;
for(int i=0;i<n;i++){
if(isSCP(a[i]) == true){
s += a[i];
}
}
cout<<s;
return 0;
}
bool isSCP(int n){
int d=sqrt(n);
if(d*d==n) return true;
else return false;
}
3 MANG4
- Dòng 1: Nhập vào N là số lượng phần tử của mảng
- Dòng 2: N số nguyên (mỗi số cách 1 khoảng trắng)
Yêu cầu xuất tổng các số nguyên tố ra màn hình
3
1 2 3
5
Trang 2#include<iostream>
#include<cmath>
using namespace std;
bool isSNT(int n);
int main(){
int n, a[1000];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int s=0;
for(int i=0;i<n;i++){
if(isSNT(a[i]) == true){
s += a[i];
}
}
cout<<s;
return 0;
}
bool isSNT(int n){
int dem=0;
for( int i=1;i<=n;i++){
if(n%i ==0) dem++;
}
if(dem ==2) return true;
else return false;
}
4 UCLN2:Cho hai số nguyên không âm a và b, hãy tìm ước số chung lớn nhất của a và b
Gồm 2 số a và b cách nhau một khoảng trắng (0 ≤ a,
b ≤ 1018)
Số nguyên dương duy nhất là ước số chung lớn nhất của a và b
#include<iostream>
using namespace std;
long UCLN(long a,long b);
int main(){
long a,b;
cin>>a>>b;
cout<<UCLN(a,b)<<endl;
return 0;
}
long UCLN(long a, long b){
while (b>0){
long r=a%b;
a=b;
b=r;
}
return a;
}
5 XUATSNT
Nhập vào 1 số nguyên n, yêu cầu xuất tất cả số nguyên tố từ 1 đến n (mỗi số cách 1 khoảng trắng) - nếu không có số nào, xuất -1
Trang 3#include<iostream>
using namespace std;
bool isSNT(int n);
int main(){
int n;
cin>>n;
if(n<2){
cout<<-1;
}
else {
for(int i=1;i<=n; i++){
if(isSNT(i)==true){
cout<<i<<" ";
}
}
}
return 0;
}
bool isSNT(int n){
int dem=0;
for(int i=1;i<=n;i++){
if(n%i==0) dem++;
}
if(dem==2) return true;
else return false;
}
6 DAONGUOC1
Nhập vào 1 dãy số, tìm số có số đảo ngược của nó là lớn nhất
123
12
1
341
123
#include<iostream>
using namespace std;
int soDaoNguoc(int n);
int main(){
int x, a[100], n=0;
while (cin>>x) a[n++]=x;
int kq=0;
for(int i=0;i<n;i++){
//Tìm số đảo của từng phần tử
//lưu lại số đảo ngược lớn nhất
x=soDaoNguoc(a[i]);
if(x>kq) kq=x;
}
cout<<soDaoNguoc(kq);
return 0;
}
int soDaoNguoc(int n){
int kq=0;
while (n>0){
int r=n%10;
kq=kq*10+r;
n/=10;
} return kq;
}
7 DAYSNT
Cho 1 dãy các số nguyên ,Hãy tìm số nguyên tố lớn nhất nhỏ hơn hoặc bằng K
dòng 1: số nguyên K
dòng 2 : dãy số nguyên
dòng 2 : số nguyên tố lớn nhất mà không lớn hơn K, nếu không có in ra -1
Trang 49
5 4 7 11 10 13
7
#include<iostream>
using namespace std;
bool isSNT(int n);
int main(){
int k,x, a[100], n=0;
cin>>k;
while (cin>>x) a[n++]=x;
int kq =-1;
for(int i=0;i<n;i++){
x=a[i];//x là số đang xét
if(isSNT(x)==true && x<=k){
//x là SNT và ko lớn hơn k
if(x>kq) kq =x;
}
}
cout<<kq;
return 0;
}
bool isSNT(int n){
int dem=0;
for(int i=1;i<=n;i++){
if(n%i==0) dem++;
}
if(dem==2) return true;
else return false;
}
8 PhanSo
xây dựng 1 cấu trúc Phân Số (gồm tử và mẫu là số nguyên) với yêu cầu, xây dựng các hàm sau:
- Nhập, xuất phân số
- Hàm rút gọn
Viết chương trình nhập vào N phân số, yêu cầu tìm xuất phân số nhỏ nhất (sau khi tối giản)
- Dòng 1: số N
- N dòng tiếp theo, mỗi dòng gồm 2 số nguyên là
tử và mẫu của 1 phân số
Phân số nhỏ nhất (sau khi tối giản)
2
1 2
2 4
1/2
#include <iostream>
using namespace std;
struct PhanSo{
int tu, mau;
};
void nhapPS(PhanSo &p);
void xuatPS(PhanSo p);
void rutGon(PhanSo &p);
int UCLN(int a, int b);
int main(){
int n;
PhanSo a[100];
cin >> n;
for(int i = 0; i < n; i++){
nhapPS(a[i]);
void nhapPS(PhanSo &p){
cin >> p.tu >> p.mau;
} void xuatPS(PhanSo p){
cout << p.tu << "/" << p.mau; }
void rutGon(PhanSo &p){
int x = UCLN(p.tu, p.mau);
p.tu /= x;
p.mau /= x;
} int UCLN(int a, int b){
while (b > 0){
int r = a % b;
a = b;
b = r;
} return a;
Trang 5}
PhanSo kq;
kq.tu = a[0].tu;
kq.mau = a[0].mau;
for(int i = 1; i < n; i++){
if (kq.tu * a[i].mau > a[i].tu * kq.mau){
kq.tu = a[i].tu;
kq.mau = a[i].mau;
}
}
rutGon(kq);
xuatPS(kq);
return 0;
}
}
9 PhanSo1
Một phân số gồm tử và mẫu (tử và mẫu là 2 số nguyên lớn hơn bằng 0 và bé hơn 100)
Yêu cầu viết chương trình nhập vào 2 phân số, yêu cầu xuất phân số tổng của 2 phân số đó (phân số tổng được rút gọn, sau đó xuất ra màn hình)
Nếu input có phân số nào có mẫu bằng 0 thì xuất kết quả ra -1
Dữ liệu đầu vào: gồm 2 dòng, mỗi dòng gồm 2 số nguyên cách nhau tối thiểu 1 khoảng trắng
Dữ liệu đầu ra: gồm 1 dòng duy nhất chứa phân số tổng (sau khi rút gọn) của 2 phân số ban đầu, xuất theo
dạng: tửsố/mẫusố
1 2
1 3
5/6
1 2
1 0
-1
#include<iostream>
using namespace std;
struct phanso{
int tu, mau;
};
int UCLN(int a,int b);
int main(){
phanso p1,p2;
cin>>p1.tu>>p1.mau;
cin>>p2.tu>>p2.mau;
if(p1.mau==0||p2.mau==0){
cout<<-1;
}
else {
phanso tong;
tong.tu=p1.tu*p2.mau+p2.tu*p1.mau;
tong.mau=p1.mau*p2.mau;
//chưa được rút gọn
int x=UCLN(tong.tu,tong.mau);
tong.tu/=x;
tong.mau/=x;
cout<<tong.tu<<"/"<<tong.mau;
}
return 0;
}
int UCLN(int a,int b){
while (b>0){
int r=a%b;
a=b;
b=r;
} return a;
}
10 DAYSNT
Cho 1 dãy các số nguyên ,Hãy tìm số nguyên tố lớn nhất nhỏ hơn hoặc bằng K
Trang 6dòng 1: số nguyên K
dòng 2 : dãy số nguyên dòng 2 : số nguyên tố lớn nhất mà không lớn hơn K, nếu không có in ra -1
9
5 4 7 11 10 13
7
#include<iostream>
using namespace std;
bool isSNT(int n);
int main(){
int k,x, a[100], n=0;
cin>>k;
while (cin>>x) a[n++]=x;
int kq =-1;
for(int i=0;i<n;i++){
x=a[i];//x là số đang xét
if(isSNT(x)==true && x<=k){
//x là SNT và ko lớn hơn k
if(x>kq) kq =x;
}
}
cout<<kq;
return 0;
}
bool isSNT(int n){
int dem=0;
for(int i=1;i<=n;i++){
if(n%i==0) dem++;
}
if(dem==2) return true;
else return false;
}