codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* Bài 17/66/SBT Trường CNTP:Viết chương trình nhập số nguyên lớn N (khai báo:long N) có k chữ số . - Tìm chữ số hàng đầu tiên của N. - Tính tổng các chữ số của N. - Tìm chữ số lớn nhất trong k chữ số đó. - Đếm số chữ số của N. - N có phải là số có các chữ số khác nhau đôi một không ? . 630.cpp */ /* Tác giả: Nguyễn Việt Nam Sơn Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé. Mong giúp đỡ được Bạn trên con đường Học Lập Trình. TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN */ // Các thư viện sử dụng trong chương trình . #include<stdio.h> #include<conio.h> #include<Windows.h> #define MAX 100 // Hàm nhập vào số nguyên lớn . void NhapN(long &n) { printf("\nNhap Vao So Nguyen : "); scanf("%ld",&n); } // Hàm xuất ra số nguyên . void XuatN(long n) { printf("So Ban Vua Nhap Vao La:%ld",n); } // Hàm trả về giá trị từng chữ số của số vừa nhập và được lưu vào trong mảng 1 chiều . int XuLyDuLieu(int a[],long n) { int i=0; while(n!=0) { a[i]=n%10; n=n/10; i++; } return i; } // Hàm liệt kê các chữ số . void LietKeCacChuSo(int a[],long n) { int s=XuLyDuLieu(a,n); printf("\nCac Chu So Cua So %ld La:",n); for(int k=s-1;k>=0;k--) { printf("%4d",a[k]); } } // Hàm tìm chữ số đầu tiên . void ChuSoDauTien(int a[],long n) { int s=XuLyDuLieu(a,n); printf("\nChu So Dau Tien Cua %ld La:%d",n,a[s-1]); } // Hàm tính tổng tất cả các chữ số . void TongCacChuSo(int a[],long n) { int s=XuLyDuLieu(a,n); int tong=0; for(int k=s-1;k>=0;k--) { tong+=a[k]; } printf("\nTong Cac Chu So Cua So %ld La:%d",n,tong); } // Hàm tìm chữ số lớn nhất . void ChuSoLonNhat(int a[],long n) { int s=XuLyDuLieu(a,n); int max=a[0]; for(int k=1;k<s;k++) { if(a[k]>max) { max=a[k]; } } printf("\nChu So Lon Nhat Cua So %ld La:%d",n,max); } // Hàm đếm số lượng chữ số . void DemSoChuSo(int a[],long n) { int s=XuLyDuLieu(a,n); printf("\nSo Luong Cac Chu So Cua So %ld La:%d",n,s); } // Hàm hoán vị 2 số nguyên . void HoanVi(int &x,int &y) { int temp=x; x=y; y=temp; } // Hàm kiểm tra xem các chữ số có khác nhau đôi một hay không ? /* Để kiểm tra được thì đầu tiên ta đi sắp xếp mảng chứa các chữ số của số vừa nhập tăng dần . Sau đó cho vòng lặp chạy từ k = 1 -> < s (giá trị truyền về của i) . Khởi tạo 1 biến đếm = 0.Đặt điều kiện nếu a[k]!=a[k-1] thì biến đếm tăng lên 1 đơn vị . Nếu biến đếm mà bằng đúng số lượng các chữ số trong mảng - 1 tức là đếm = s-1 => Các chữ số hoàn toàn khác nhau đôi một . Nếu đếm không bằng s-1 => Có tồn tại chữ số giống nhau . */ void KiemTraChuSoKhacNhauDoiMot(int a[],long n) { int s=XuLyDuLieu(a,n); int dem=0; // Sắp mảng tăng dần bằng thuật toán Interchange Sort . for(int k=0;k<s;k++) { for(int l=k+1;l<s;l++) { if(a[k]>a[l]) { HoanVi(a[k],a[l]); } } } // Đặt điều kiện . printf("\nSo %ld Co Cac Chu So Khac Nhau Doi Mot Hay Khong ? ",n); for(int k=1;k<s;k++) { if(a[k]!=a[k-1]) { dem++; } } if(dem==s-1) { printf("\nYES"); } else { printf("\nNO"); } } // Hàm MeNu . void MeNu() { int a[MAX]; long n,tieptuc; quaylai:NhapN(n); printf("\n"); XuatN(n); printf("\n"); LietKeCacChuSo(a,n); printf("\n"); ChuSoDauTien(a,n); printf("\n"); TongCacChuSo(a,n); printf("\n"); ChuSoLonNhat(a,n); printf("\n"); DemSoChuSo(a,n); printf("\n"); KiemTraChuSoKhacNhauDoiMot(a,n); printf("\n"); printf("\nBan co muon tiep tuc thuc hien chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!"); tieptuc=getch(); if(tieptuc=='c'||tieptuc=='C') { system("cls"); goto quaylai; } } // Hàm chính . void main() { MeNu(); }
Private
[
?
]
Run code
Submit