Hồ Chí Minh cần in một số tài liệu để phục vụ giảng dạy và nghiên cứu, chúng có thể là luận văn/báo cáo nghiên cứu khoa học hoặc là giáo trình giảng dạy.. Biết rằng mỗi loại tài liệu [r]
Trang 1Một số bài tập Upcoder
I Nhập & xuất:
1 Bài 1: Lấy chính xác 1 chữ số thập phân
Input: Nhập vào 3 số nguyên theo định dạng sau:
• Dòng 1: 2 số nguyên a và b
• Dòng 2: 2 số nguyên c và d
• Dòng 3: 2 số nguyên e và f
Output:
• Xuất ra 1 số duy nhất là kết quả của biểu thức: (a+b+c)/(d+e+f)
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int a,b,c,d,e,f;
cin>>a>>b;
cin>>c>>d;
cin>>e>>f;
printf("%.1f",(float)(a+b+c)/(d+e+f));
return 0;
}
Sử dụng lệnh printf của C:
ví dụ muốn xuất 2 chữ số thập phân của biến x, với x là biến
số thực thì sử dụng như sau: #include<stdio.h>
• printf("%.2f",x);
2 Bài 2: Bảng mã ASCII
Input:
• Dòng 1: chứa 1 ký tự
• Dòng 2: chưa 1 ký tự
Output:
• Xuất tổng nguyên của 2 ký tự trong input ra màn hình (dựa vào hệ 10 của ký tự trong bảng mã ascii)
#include<iostream>
using namespace std;
int main(){
char a,b;
cin>>a;
cin>>b;
cout<<(int)a+(int)b;
return 0;
}
3 giá trị tuyệt đối của số nguyên
Input:
• Nhập vào 1 số nguyên
Output:
• Xuất ra giá trị tuyệt đối của số nguyên đó
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;
cin>>n;
cout << abs(n);
return 0;
Trang 2}
1 số chính phương:
Nhập vào 1 số
Kiểm tra số đó có phải là số chính phương không?
Xuất: yes, nếu đó là số chính phương, ngược lại xuất no
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int x,i;
cin>>x;
i=sqrt(x);
if(i*i==x) cout<<"yes";
else cout<<"no";
return 0;
}
2 số nguyên tố
Nhập vào 1 số
Kiểm tra số đó có phải là số nguyên tố không?
Xuất: true, nếu đó là số nguyên tố, ngược lại xuất false
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int dem=0;
for( int i=1; i<=n; i++){
if(n%i==0) dem++;
}
if(dem==2) cout<<"true";
else cout<<"false";
return 0;
}
3 số hoàn hảo
Số hoàn hảo là số mà tổng ước số của nó (không tính nó) bằng chính nó
yêu cầu: nhập vào 1 số, xuất là Yes nếu nó là số hoàn hảo, ngược lại xuất No
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int tonguoc=0;
for (int i=1; i<n;i++){
if(n%i==0) tonguoc +=i;
}
if(tonguoc ==n) cout<<"Yes";
Trang 3else cout<<"No";
return 0;
}
4 nhập vào 2 số nguyên và 1 phép toán Yêu cầu thực hiện phép toán (là 1 trong 4 phép toán: +,-,*,%)
Input:
• Dòng 1: nhập vào 2 số nguyên A, B
• Dòng 2: Nhập vào 1 phép toán
Output:
• Biểu thức thực hiện phép toán
#include<iostream>
using namespace std;
int main(){
int a,b;
char c
cin>>a>>b;
cin>>c;
if(c=='+') cout<<a<<c<<b<<"="<<a+b;
else if(c=='-') cout<<a<<c<<b<<"="<<a-b;
else if(c=='*') cout<<a<<c<<b<<"="<<a*b;
else if(c=='%') cout<<a<<c<<b<<"="<<a%b;
return 0;
}
5 Chẳn lẻ
#include<iostream>
using namespace std;
int main(){
int x;
cin>>x;
if(x%2 == 0){
cout<<"chan";
}
else cout<<"le";
return 0;
}
6 Tìm sô lớn nhât và sô nhỏ nhất trong 3 sô đó
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
int max=a;
if (max<b) max=b;
if (max<c) max=c;
int min=a;
if(min>b) min=b;
if(min>c) min=c;
cout<<max<<" "<<min;
Trang 4
return 0;
}
7 Phương trình bậc nhất:
Giải phương trình Ax + B = 0 Với A, B là hai hệ sô kiểu số nguyên được nhập vào từ bàn phím
- Nếu phương trình vô nghiệm xuất kết quả: VN
- Nếu phương trình VSN xuất ra : VSN
- Nếu phương có nghiệm, xuất ra nghiệm (Lưu ý: kết quả xuất ra là số thực (lấy 2 chữ số thập phân)
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
if(a == 0){
if(b==0) cout<<"VSN";
else cout<<"VN";
}
else {
printf("%.2f",(float)-b/a);
}
return 0;
}
8 PT bậc 2:
Input:
- Gồm 3 dòng, mỗi dòng là 1 số nguyên, tương ứng với 3 hệ số a,b,c
Output:
- Nếu phương trình có nghiệm, xuất nghiệm lấy 4 chữ số thập (nếu có 2 nghiệm xuất mỗi nghiệm ở một hàng riêng biệt)
- Nếu phương trình vô nghiệm, xuất VN
- Nếu phương trình vô số nghiệm, xuát VSN
Lưu ý: nếu a=0, thì phương trình trở thành phương trình bậc 1
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main(){
int a,b,c;
cin>>a;
cin>>b;
cin>>c;
if(a==0){
if(b==0){
if(c==0) cout<<"VSN";
else cout<<"VN";
}
else {
printf("%.4f",(float)-c/b);
}
}
else{
int d=b*b-4*a*c;
Trang 5if (d<0) cout<<"VN";
else if (d==0){
float x=(float)-b/(2*a);
printf("%.4f",x);
}
else{
float x1 =(float)(-b+sqrt(d))/(2*a);
float x2 =(float)(-b-sqrt(d))/(2*a);
printf("%.4f\n%.4f",x1,x2);
}
}
return 0;
}
9 số tờ giấy A4 tối thiểu cần dùng
Khoa Công nghệ Thông tin - trường Đại học Sư phạm TP Hồ Chí Minh cần in một số tài liệu để phục vụ giảng dạy và nghiên cứu, chúng có thể là luận văn/báo cáo nghiên cứu khoa học hoặc là giáo trình giảng dạy Biết rằng mỗi loại tài liệu sẽ có những quy định khác nhau:
• Nếu là luận văn hoặc báo cáo khoa học thì phải in 1 mặt
• Nếu là giáo trình, thì có thể in trên cả 2 mặt để tiết kiệm chi phí
• Tất cả các loại tài liệu đều phải in trên giấy A4
Yêu cầu hãy tính số lượng giấy tối thiểu cần dùng để in hết tài liệu đó
Input:
• Gồm 3 số nguyên không âm: T, P và C Trong đó T là loại tài liệu (1 nếu là luận văn/báo cáo khoa học, 2 nếu là giáo trình), P là số trang của tài liệu và C là
số bản cần in (1 ≤ T ≤ 2, 1 ≤ P, C, ≤ 109)
Output:
• số tờ giấy A4 tối thiểu cần dùng
#include <iostream>
using namespace std;
int main(){
long T,P,C,A4;
cin>>T>>P>>C;
1<=T<=2;
if (T == 1)
{
A4 = P * C;
cout << A4 << endl;
}
else if (T == 2){
if (P % 2 == 0){
A4 = P / 2 * C;
} else{
A4 = (P+1) / 2 * C ; } cout << A4 << endl;
}
return 0;
}
10 Viết chương trình nhập vào 3 số nguyên là ngày tháng năm Hãy xác định ngày tháng năm có hợp lệ hay không
Lưu ý:
- Ngày phải tương ứng với tháng
- Tháng phải từ 1 đến 12
Trang 6- Năm phải >= 1900
- Năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100 Input: 3 số nguyên dương
Output: YES (hợp lệ), NO (không hợp lệ)
Vd:
Input: 28 9 2017
Output: YES
#include<iostream>
using namespace std;
int main(){
int d,m,y;
cin>>d>>m>>y;
if(y<1900 || m<1 ||m>12||d<1||d>31){
cout<<"NO";
}
else{
int daymax;
switch(m){
case 4: case 6: case 9: case 11:
daymax=30;
break;
case 1: case 3: case 7: case 8: case 10: case 12:
daymax=31;
break;
case 2:
if(y%400==0||(y%4==0&&y%100!=0)){
daymax=29;
}
else daymax=28;
break;
}
if(d<=daymax) cout<<"YES";
else cout<<"NO";
}
return 0;
}
11 giá trị nhất lớn
Input: 5 số nguyên a, b, c ,d, e (đều bé hơn 10^5)
Output: xuất ra số có giá trị nhất lớn trong 5 số trong Input
#include<iostream>
using namespace std;
int main(){
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
int max=a;
if(max<b) max=b;
if(max<c) max=c;
if(max<d) max=d;
if(max<e) max=e;
cout<<max;
return 0;
}
12 MAXMIN
Trang 7Input:
• Nhập vào 1 số gồm 4 chữ số
Output:
• Tính tổng chữ số nhỏ nhất và chữ số lớn nhất của số trong input
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a,b,c,d;
d=n%10;
c=(n/10)%10;
b=(n/100)%10;
a=n/1000;
int max,min;
max=a;min=a;
if(max<b) max=b;
if(max<c) max=c;
if(max<d) max=d;
if(min>b) min=b;
if(min>c) min=c;
if(min>d) min=d;
cout<<max+min;
return 0;
}
III Vòng lặp for…; while …; do…while
1 Nhập vào 1 dãy số, yêu cầu tính tổng các chữ số của dãy đó.
#include <iostream>
using namespace std;
int main() {
int n;
while (cin>>n){
int tongchuso=0;
while(n>0){
int r=n%10;
tongchuso += r;
n/=10;
}
cout<<tongchuso<<endl;
}
return 0;
}
2 Viết chương trình in ra màn hình ngôi sao (với chiều cao h nhập từ bàn phím)
// Ngôi sao tam giác
#include <iostream>
using namespace std;
int main() {
Trang 8int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}
return 0;
}
3 Viết chương trình in ra màn hình hình chữ nhật sao với độ dài 2 cạnh nhập vào từ bàn phím.
Input: 2 số nguyên dương a, b
Output: hình chữ nhật ngôi sao tương ứng độ dài 2 cạnh
#include <iostream>
using namespace std;
int main() {
unsigned long a,b;
cin>>a>>b;
for (int c=1 ; c<=a ; c++)
{
for (int d=1 ; d<=b ; d++)
cout<<"*";
if (c<a) cout<<endl;
}
}
4 Yêu cầu tìm UCLN của 2 số đó.
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
while(b>0){
int r=a%b;
a=b;
b=r;
}
cout<<a;
return 0;
}
/*Nhập vào 2 số nguyên a và b
Yêu cầu tìm UCLN của 2 số đó
*/
// giải thuật euclid:
//ucln(a,b) = a nếu b=0 //ucln(a,b) =ucln(b,a%b) nếu b>0
5 Xuất tổng các số lẻ từ 1 đến n
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int s=0;
for(int i=1;i<=n;i += 2){
Trang 9s +=i;
}
cout<<s;
return 0;
}
#include<iostream>
using namespace std;
int main(){
long n;
cin>>n;
int x;
while(n>=10){
n/=10;
x++;
}
cout<<x+1;
return 0;
}
của nó?
#include<iostream>
using namespace std;
int main(){
long n,a;
cin>>n;
long b = 0;
while(n > 0){
a = n % 10;
b = b * 10 + a;
n = n / 10;
}
cout<<b;
return 0;
}
#include<iostream>
using namespace std;
int main(){
long n,kq=0;
cin>>n;
while(n>0){
int r=n%10;
kq=kq+r;
n/=10;
}
cout<<kq;
return 0;
Trang 10}
9 Viết chương trình tính tổng số tự nhiên n và số ngược của nó?
Giải thích: kết quả ra 807 vì 453+354=807
#include<iostream>
using namespace std;
int main(){
long x,n;
cin>>x;
long z;
z=x;
long y=0;
while(x>0){
n=x%10; //gía trị chia lấy dư
y=y*10+n;//
x=x/10;
}
cout<<z+y;
return 0;
}