KTLT_05
Câu 1. Viết chương trình nhập vào tổng số giờ, xuất ra màn hình số tuần, số ngày và số giờ
tương ứng.
Ví dụ khi chạy chương trình:
Nhap so gio: 1000
5 tuan, 6 ngay, 16 gio
Nhap so gio: 25
1 ngay, 1 gio
Code:
#include <bits/stdc++.h>
using namespace std;
int main(){
int gio,day,s,k;
cout<<"Nhap so gio:";
cin>>gio;
s = gio / 168;
day = (gio % 168) / 24;
k = (gio % 168) % 24;
if(s != 0)
cout <<s<<" tuan" <<",";
if(day != 0)
cout <<day<<" ngay"<<",";
if(k != 0)
cout <<k<<" gio";
return 0;
}
Câu 2. Nhập vào một số nguyên dương n, tính tổng các ước nguyên tố của n.
Ví dụ khi chạy
chương trình:
Nhap n = 9
Tong cac uoc nguyen to cua 9 la: 3
Nhap n = 14
Tong cac uoc nguyen to cua 14 la: 9
Code:
#include <bits/stdc++.h>
using namespace std;
bool songuyento(int n)
{
int count = 0;
for(int i = 1 ; i <= n ; i++)
{
if(n % i == 0)
count++;
}
if(count == 2)
return true;
return false;
}
int main()
{
int n;
cout<<"Nhap n:";
cin>>n;
int sum = 0;
for(int i = 1 ; i <= n ; i++)
{
if(n % i == 0)
{
if(songuyento(i) == 1)
sum = sum + i;
}
}
cout<<"Tong cac uoc nguyen to cua "<<n<<" la:"<<sum;
return 0;
}
Câu 3. Nhập vào tử số, mẫu số (đều khác 0) của một phân số. Hãy cho ra dạng rút gọn của phân
số này. Chọn dạng xuất thích hợp trong trường hợp mẫu số bằng 1 và phân số có dấu.
Nhap tu so, mau so: -3 -15
Rut gon: 1/5
Nhap tu so, mau so: 8 -2
Rut gon: -4
Code:
#include <bits/stdc++.h>
using namespace std;
int UCLN(int a , int b)
{
while(a != b)
{
if(a > b)
a = a - b;
else
b = b - a;
}
return a;
}
int main()
{
int a,b;
cin>>a>>b;
int k = UCLN(abs(a),abs(b));
double s = abs(a) / k;
double p = abs(b) / k;
if(a > 0 && b > 0)
{
if(p != 1)
cout<<s<<"/"<<p;
else
cout<<s;
}
if(a < 0 && b < 0)
{
if(p != 1)
cout<<s<<"/"<<p;
else
cout<<s;
}
if(a > 0 && b < 0)
{
if(p != 1)
cout<<"-"<<s<<"/"<<p;
else
cout<<"-"<<s;
}
if(a < 0 && b > 0)
{
if(p != 1)
cout<<"-"<<s<<"/"<<p;
else
cout<<"-"<<s;
}
if(a == 0 && b != 0)
cout<<"Error";
return 0;
}
Câu 4. Viết chương trình mô phỏng hàm ROUND của Excel, dùng làm tròn một số thực (kiểu
double) với một số n cho trước:
- Nếu 𝑛 > 0 số làm tròn sẽ có n chữ số thập phân
- Nếu 𝑛 = 0 số làm tròn sẽ là số nguyên gần nhất.
- Nếu 𝑛 < 0 số làm tròn là số nguyên hay làm tròn phần nguyên (𝑛 = −1 hàng chục, 𝑛 = −2
hàng trăm, 𝑛 = −3 hàng nghìn, …).
Ví dụ các kết quả khi chạy chương trình:
Nhap so thuc x: 3.1415926535
Do chinh xac: 7
3.1415927
Nhap so thuc x: 21.5
Do chinh xac: -1
20
Nhap so thuc x: -4.932
Do chinh xac: 0
-5
Code:
#include <bits/stdc++.h>
using namespace std;
void ROUND(double number , int k)
{
if(k == 0)
cout<<fixed<<setprecision(0)<<number;
if(k > 0)
cout<<fixed<<setprecision(k)<<number;
if(k < 0)
{
int z = number,i = 0,s;
while(z != 0)
{
int t = z % 10;
i++;
z = z / 10;
if(i == abs(k))
{
if(number > 0)
{
if(t >= 5)
{
for(int j = 1 ; j <= abs(k) ; j++)
s = (z + 1)*pow(10,i);
break;
}
if(t < 5 && t >= 0)
{
for(int j = 1 ; j <= abs(k) ; j++)
s = (z % 10)*pow(10,i);
break;
}
}
else
{
if(abs(t) >= 5)
{
for(int j = 1 ; j <= abs(k) ; j++)
s = (z - 1)*pow(10,i);
break;
}
if(abs(t) < 5 && abs(t) >= 0)
{
for(int j = 1 ; j <= abs(k) ; j++)
s = (z % 10)*pow(10,i);
break;
}
}
}
}
cout<<s;
}
}
int main()
{
double number;
int num_digits;
cout<<"Nhap so thuc x:";
cin>>number;
cout<<"Do chinh xac:";
cin>>num_digits;
ROUND(number,num_digits);
return 0;
}