



















Preview text:
  lOMoAR cPSD| 58583460 CODE MẪU   LEVEL 1  1.Ktra năm nhuận:  int xetnam (int n)  {  if (n>0) 
{ if (n%4==0 && n%100 !=0 || n%400==0) 
return 1;//nhuan else return 2;//khong  nhuan  }  else  return 0;  }  2.độ dài tam giác: 
int xetTamGiac(float a, float b, float c) 
{ if (a>0 && b>0 && c>0 && a+b>c && b+c>a && a+c>b)  {   return 1;   }  else  return 0;} 
3.đổi chữ thương thành hoa. Ngược lại  char kiTu (char x)  { 
if ('A' <= x && x <=  'Z') return x +(32);  else   return x-(32);  } 
4.làm tròn(phần lẻ >=0.5 làm tròn lên)      lOMoAR cPSD| 58583460
int Baitoanlamtron(double a)  {  float temp;  temp = a-  (int)a; 
if (temp < 0.5 && temp !=0.5)  {   return (int)a;   }  else return  a+1;  } 
4.xuất ra số nguyên lớn nhất nhưng nhỏ hơn a (a=3.2->3, a=5->4) 
int tinhToan (double a)  {  float temp; temp  = a - (int)a; if  (temp!=0)  {  return (int)a;  }  else   return a-1;  }  LEVEL 2 
1.Xác định là tam giác gì (thg,cân,vuông,đều,vuông cân) 
int xetTamGiac(float a, float b, float c) 
{ if (a>0 && b>0 && c>0 && a+b>c && b+c>a && a+c>b)  {   if (a==b && b==c ) 
return 1;// "tam giac deu"      lOMoAR cPSD| 58583460
 if (a==b || a==c || b==c) 
 if (a*a+b*b == c*c || a*a+c*c == b*b || b*b+c*c == a*a) 
return 2;// "tam giac vuong can" else 
 return 4;// "tam giac can " else 
 if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) 
return 3;// "tam giac vuong" else 
 return 5; // "tam giac thuong"  }  else 
 return 0;// "khong phai la tam giac"  2.giải pt bậc 2   
int giaiPt (float a, float b, float c, float &x1, float & x2)  { 
if (a == 0) if (b==0) if (c==0) 
return 4;// phuong trinh co vo so nghiem 
else return 0;// "phuong trinh vo  nghiem"  else  { 
 x1= -c/b; return 1;// "phuong trinh  co 1 nghiem    }     else  { 
 float denta = b*b-4*a*c;  if (denta <0)  return 0; else      lOMoAR cPSD| 58583460    if (denta =0) 
 { x1=-b/2*a; return 3;// phuong trinh  co nghiem kep 
 } else x1= (-b+ sqrt(denta))/(2*a); x2=(-b- 
sqrt(denta))/(2*a); return 2;// phuong trinh co 2  nghiem pham biet   }   if (a==0)  if (b==0)  if(c==0)  return 4;  else  return 0;  else {  x1=-c/b; return 1;  }  else  {  float denta =b*b-4*a*c; if  (denta<0)  return 0;  else  if (denta =0){  x1=-b/2*a; return 3;  }else 
x1=(-b+sqrt (denta))/(2*a); x2=(-b-sqrt 
(denta))/(2*a); return 2;      lOMoAR cPSD| 58583460 }  }  3. Sau một giây: 
void xuLy(int& h, int& m, int& s)  } s += 1;  if (s == 60)  {  s = 0;  m +=  1;  if (m == 60)  { m = 0; h +=  1;  if (h == 24)  { h = 0;  }  }  }  } 
void xuat(int h, int m, int s) 
{ printf("%d %d %d", h, m, s); }  LEVEL 3  1.Tổng ước số  int tinhTong (int n)  {  int i= 1; int  s=0; while  (i<=n)  {  if (n%i==0)  s=s+i; i=i+1;     }  return s;  }  2.Tổng các chữ số      lOMoAR cPSD| 58583460 int tinhTong(int n) {  int total=0;  do{  total=total +n%10;  n=n/10; }while (n>10);  return total;  } 
3.Xuất ra số ngược lại:  int tinhTong(int n) {  int total =0;  do {  total =total *10 +n 
%10; n=n/10; } while (n>0);  return total ;   } 
4.Tổng số nguyên chia hết cho a không chia hết cho b: 
int tinhTong (int a, int b, int n)  {  int i=1; int s=0;  if (ab  while (i<=n){ 
if (i%a==0 && i%b!=0)  s=s+i;  i=i+1;  }return s;  }else  return 0;  }  LEVEL 5 
1. Chữ số lớn nhât:      lOMoAR cPSD| 58583460
int timChusoLonnhat (int n)  { int max =  0; while  (n!=0)  { int x=n % 10;  n=n/10; if  (x>max)  { max = x;  }     } return  max;  } 
2. Đếm số NT có trong n  int demSonguyenTo (int n)  { int demNT =  0; while (n>0)  {  int a = n%10;  int demKNt=0;  if (a<2){  demKNt ++;  } else  for (int i =2;i  { if (a%i==0)  demKNt ++;  } if  (demKNt==0)  demNT++;  n=n/10;  } return  demNT;  }  bool xetTangdan (int n)  { bool check; check  =true; int chuSocuoi  =n%10; 
int x=n/10; while (x!=0){ int 
soKecuoi =x%10; x=x/10; 
if (soKecuoi >= chuSocuoi) 
3. Xét tăng dần trong n      lOMoAR cPSD| 58583460 { check =false;  break;  }else  { chuSocuoi =soKecuoi;  }  } return  check;  } 
4. In ra n số đầu tiên trong Fibonnacci 
int lietKeFibonacci (int n)  {  int x=0;  int y=1;  int z;  if(n==0||n==1){  z=n;  } else   for (int i=2;i  x=y;  y=z;  z=x+y;  } return  z;  } 
void xuat (int kq, int n){ 
for (int i=0;ilietKeFibonacci (i)<< " "; }  LEVEL 5 
1.Liệt kê các số NT nhỏ hơn n:  bool laNt (int x)  { int dem  =0; 
for (int i=1; i<=x;i++)  if (x%i==0)  dem ++; if  (dem ==2)   return true;  else    return false;  } 
void lietKesoNT (int n ){ 
for (int i=1;i if (laNt (i) == true)   xuat (i);  }      lOMoAR cPSD| 58583460 void xuat (int x) { cout <  } 
2. Đếm các số NT nhỏ hơn n: 
int demSoHH (int n){  int dem =0; 
for (int i = 1; i( laHH(i)==true)  dem ++;  }return dem;  } bool laHH (int  x)  {  int i =1;  int s=0; 
for (int i =1; iif (x%i==0)  s=s+i;   if (s==x )  return true;  else   return false;  }  3.Tìm ước sô MAX của n 
int soLelonNhat (int n)  { int max  =0; 
for (int i=1;i<=n;i++){ 
if (n%i==0 && i%2!=0)   if (i>max)   max =i;  }return max;  } 
void congPhanso (int a, int b, int c, int d ,int &tu,int &mau){  int UCLN; int  x= a*d+c*b;  int y =b*d; if  (x==0){ mau  =0;  }else {  while (x!=y)  {  if (x >y)  x=x-y;  else    y=y-x;  }UCLN =x; tu =  (a*d+c*b)/UCLN;  mau = (b*d)/UCLN; 
4.Tính a/b+c/d (xuất ra phân số tối giản)  }      lOMoAR cPSD| 58583460    } 
void xuat (int tu ,int mau) 
{ cout << tu << "/" << mau;  } 
5.Tích 2 chữ số = 2 lần tổng của 2 chữ số đó (10->99) 
void lietKe (int n){ 
for (int i=10; i<=n;i++){ if  (check (i)==true)  xuat (i);  }  } bool check (int  x){  int i=x/10; int j  =x%10; if  (i*j==2*(i+j)){  return true;  }return false;  }  void xuat (int x){ 
cout << x << " ";  }  6.Tổng giai thừa int  tongGiaithua (int n)  {  int s=0; int giaithua =1; for 
(int i=1;i<=n;i++){ giaithua 
= giaithua*i; s=s+giaithua;  }return s;  }  7. tổ hợp 
int ToHop (int n, int k)  { 
if (k==0 || k==n) return 1; 
return (ToHop(n-1, k-1)+ ToHop (n-1,k )) ;  } 
8.khoảng cách giữa hai ngày vừa nhập  int main (){  int  d1,m1,y1,d2,m2,y2;  nhap (d1,m1,y1); nhap  (d2,m2,y2); 
int kq = kcGiuahaiNgay (d1,m1,y1,d2,m2,y2);  xuat (kq);  return 0;  } 
int tinhSongay (int d, int m,int y){//tinh so ngay tu 1/1/1 den 1/1/y      lOMoAR cPSD| 58583460 int kc = 0;  for (int i =1;i  if (namNhuan (i)==true){  kc=kc+366;  }else   kc= kc+365; kc= kc + 
songayTudauNam (d,m,y); return 
kc; } bool namNhuan (int y){ 
if ((y%4==0 && y%100 !=0) || y%400==0){  return true;   } else  return false; 
} int songayTudauNam (int d, int m , int  y){ 
int soNgay =d; for (int i =1;isoNgaytrongThang (i,y); return soNgay; 
} int soNgaytrongThang (int m,int  y){  if (m==2){  if (namNhuan(y)==true){  return 29;  }else  return 28; 
}else if (m==4||m==6||m==9||m==11){  return 30;  }else  return 31;  } 
int kcGiuahaiNgay (int d1, int m1, int y1,int d2,int m2,int y2){  int kc1 = tinhSongay  (d1,m1,y1); int kc2 =  tinhSongay (d2,m2,y2); int  soNgay = abs(kc1-kc2); return  soNgay;  }  bool laNt (int n){  if(n<=1)   return false;  for (int i=2;i<=sqrt  (n);i++) if (n%i==0)  return false;  return true;   }  
void thuaSonguyenTo (int n )  {      lOMoAR cPSD| 58583460
for(int i=2;i<=n;i++) while 
(n%i == 0 && laNt(i) ) { 
9.Phân tích n thành thừa số nguyên tố  xuat (i); n /= i;   }   }  LEVEL 6 
1. Vị trí đầu tiên của X 
int viTriCuaX(int x,int n,int a[]){  int viTri; 
for (int i=0;iif (a[i]==x){  viTri=i; break;  }viTri =-1;  }return viTri;  } 
2. Đảo ngược mảng 
void daoNguoc (int a[], int n){  int x=0; int y=n-1;  while (x=a[x]; a[x]=a[y];  a[y]=tam;  x++;  y--;  }  } 
void xuat (int a[], int n){ for (int  i=0;i} 
3. Liệt kê các số chẵn trong mảng thuộc [x,y] cho trc void 
lietKeSoChanThuocDoanXY(int a[],int n,int x,int y){ for (int i=0;i(x<=a[i]&&a[i]<=y) if (a[i]%2==0) cout << a[i]<<" ";  }  LEVEL 7 
1.Tìm số NT đầu tiên trong mảng      lOMoAR cPSD| 58583460 int laNT (int x){ if  (x<2) return 0;  for (int i=2;i  if (x%i==0)  return 0;  return 1;  } 
int soNguyenToDauTien (int a[],int n){  for (int i=0;i  if (laNT(a[i]==1))  return a[i];  return -1;  } 
2. Tìm số NT cuối cùng trong mảng  int laNT (int x){ if  (x<2) return 0;  for (int i=2;i  if (x%i==0)  return 0;  return 1;  } 
int soNguyenToCuoiCung (int a[],int n){ 
for (int i=n-1;i>=0;i--) if 
(laNT(a[i]==1)) return a[i];  return -1;  }  3.Tính TBC mảng 
float trungBinhCongNT (int a[],int n){  int tong =0; int dem =0;  float trungBinhCong; for 
(int i=0;i(laNT(a[i])==1){  tong =tong +a[i];  dem++;  }  }  if (dem ==0){  trungBinhCong=0; 
}else trungBinhCong=(float )tong/dem;  return trungBinhCong;  }      lOMoAR cPSD| 58583460
bool dauTienSoChan(int x){  bool kTra;  int y=0;  while (x>0){  y=x%10;  x=x/10;  } if (y%2==0)  return true;  return false;  } 
void lietKeChuSoDauTienSoChan (int a[],int n){ 
for (int i=0;i) if (dauTienSoChan  (a[i])==true) 
4.Hãy liệt kê giá trị trong mảng 1 chiều có chữ số đầu tiên là số chẵn cout <<  a[i]<<" ";  } 
5.dãy cấp số cộng 
int capSoCong (int a[],int n){  int congSai=a[1]-a[0]; for 
(int i=2;i=a[i]-a[i-1]; if (hieu  !=congSai) return 0;  }return 1;  }    5. Số HH =số NT;      lOMoAR cPSD| 58583460 bool laNT (int x){  if (x<2)  return false;  for (int i=2;i  if (x%i==0){  return false;  }  }  return true;  } bool laHH (int  x){ if (x<0)  return false;  int sum =1; for (int  i=2;i*i<=x;i++)  if (x%i==0){  sum +=i;  }  if (sum ==x)  return true;  return false; 
} int hoanHaoBangNguyenTo(int a[],int  n){ int demHH=0;      lOMoAR cPSD| 58583460 int demNT=0;  for (int i=0;i  if (laNT(a[i])==true)  demNT++;  if (laHH(a[i])==true)  demHH++;  } if  (demNT!=demHH)  return 0;  return 1;    LEVEL 8 
1.Tồn tại 2 giá trị 0 liên tiếp 
int soKhongLienTiep (int a[],int n){  for (int i=0; i 
if (a[i]==0 && a[i+1]==0){  return 1;  break;  }return 0;  } 
2. giá trị đầu tiên mang tính chất số gánh 
int giaTriDauTienSoGanh (int a[],int n){  int x; for (int  i=0;i  for (int j=n-1;j  if(a[i]==a[j])  x=a[i];  }   }return x;   } 
3.tìm giá trị đầu tiên trong mảng có chữ số đầu tiên lẻ 
int giaTriDauTien (int a[],int n){ int giaTri;       lOMoAR cPSD| 58583460 for (int i=0;i  if(a[i]%10 %2!=0){  giaTri =a[i];  break;  }giaTri =0;  }return giaTri;    
4. Đổi chỗ max ->min trong mảng 
int timMin (int a[], int n){  int viTri=0; for (int 
i=1;i(a[viTri]>a[i])  viTri=i;  return viTri;  } 
int timMax(int a[], int n){  int viTri=0; for (int  i=1;i(a[viTri]  viTri=i;  return viTri;  } 
void hoanVi (int &x, int&y)  { int tam=x;  x=y;  y=tam;  } 
void hoanDoiMaxMin (int a[],int n){  int min =timMin (a, n);  int max =timMax (a, n);  hoanVi(a[min],a[max]);  } 
void xuat (int a[], int n){ for (int  i=0;ia[i]<< " ";  }  5.Max âm lớn nhất  int amLonNhat(int a[],int n){  int maxAm; 
for (int i=0;iif (a[i]<0)  maxAm=a[i];  break;  }  if (maxAm !=0) 
for (int i=0;i(a[i]>maxAm &&a[i]<0)      lOMoAR cPSD| 58583460 maxAm=a[i]; return  maxAm;  }  6.NT lớn nhất:  bool laNT (int x){ if  (x<2) return false;  for (int i =2;i  if (x%i==0) return  false;  return true;  } 
int nguyenToLonNhat (int a[],int n){  int max;  max =0; 
for (int i=0;i&& a[i]>max){ max = a[i];  }  }  return max;  } 
7.Tìm UCLN trong mảng 
int ktraUCLN (int x, int y){  if (x==0 || y==0){  return x +y;  }while (x!=y){ if  (x>y){ x-=y;  }else { y- =x;  }  } return x;  } 
int uocChungLonNhat (int a[],int n){  int x=a[0]; 
for (int i=0;iktraUCLN (x,a[i]);  } return x;  }      lOMoAR cPSD| 58583460
void timDoan (float a[], int n,int &x, int &y){ 
float min= timMin(a,n); float max= 
timMax(a,n); x = (int) min; // min lam 
tron xuog if (min<0) //-3.4->-4 if(min-x 
!=0) x--; // max lam tron if (max>0){ 
int phannguyen =(int) max; float phanle 
= max-phannguyen; if (phanle>0){  y=phannguyen +1;  8.Tìm đoạn [a,b]  }else y= phannguyen;  }else  y=int (max);  } 
float timMin (float a[], int n){  float min =a[0]; for (int  i=1;i(a[i]  return min;  } 
float timMax (float a[], int n){  float max=a[0]; for (int 
i=1;i(a[i]>max) max=a[i];  return max;  } 
9.Minh họa thoa tác cập nhat-xóa-chèn      lOMoAR cPSD| 58583460 int main (){ int n; int  a[200]; int k;//vitri  K int x;//phan tu X  nhap (a, n, k,x);  xoaPhanTu (a,n,k);  xuat (a,n);  chenPhanTu (a,n,k,x);  xuat (a,n);  return 0;  } 
void nhap (int a[], int &n, int &k, int &x){  cin >>n;  for (int  i=0;i>  a[i]; cin >> k; cin  >> x;  } 
void xoaPhanTu (int a[],int &n, int k){  for (int i=k;ia[i]=a[i+1];  n--;  } 
void chenPhanTu (int a[],int &n, int k,int x){ 
for (int i=n-1;i>=k;i--) a[i+1]=a[i];   a[k]=x;  n++;  } 
void xuat (int a[],int n){  for (int i=0;i 
cout << a[i]<< " ";  } 
10.chèn x sao cho đảm bảo tăng dần 
void chenX (int a[],int &n,int x){ for (int  i=0;ix){ for (int  j=n;j>i;j--){  a[j]=a[j-1];  }a[i]=x;  break;  }else  a[n]=x;  }  } 
11.Trộn xen kẽ 2 mảng