Bài đăng

Đang hiển thị bài đăng từ 2017

in hình chữ nhật rỗng

Đề bài:  INPUT 3  4 OUTPUT **** *    * **** Giải: #include<iostream> using namespace std; int a,b; int main() { cin >> a >> b; for ( int i = 0 ; i < a; i ++ ) { for ( int j = 0 ; j < b; j ++ ) { if (i == 0 || i == a - 1 ) cout << "*" ; else if (j == 0 || j == a) cout << "*" ; else cout << " " ; } cout << endl; } }

tam giác cân ngược rỗng

Đề bài: INPUT 3 OUPUT *****   *  *     * Giải: #include<iostream> using namespace std; int n; int main(){ cin >> n; int a = ( 2 * n - 1 ); for ( int i = 1 ;i <= n;i ++ ) { for ( int j = 1 ;j <= a;j ++ ) { if (i == 1 ) cout << "*" ; else if ((j == i) || (j == a + 1 - i)) cout << "*" ; else cout << " " ; } cout << endl; } }

tam giác cân ngược

Đề bài: nhập vào chiều cao in ra tam giác cân ngược INPUT 3 OUTPUT *****   ***     *     Giải: #include<iostream> using namespace std; int n; int main() { cin >> n; int a = ( 2 * n - 1 ); for ( int i = 1 ; i <= n; i ++ ) { for ( int j = 1 ; j <= a; j ++ ) { if (i == 1 ) cout << "*" ; else if ((j < i) || (j > a + 1 - i)) cout << " " ; else cout << "*" ; } cout << endl; } }

in hình cả sao và số

Input 4 Output 1*** 12** 123* 1234 Giải: #include<iostream> using namespace std; int n; void in () { for ( int i = 1 ; i <= n; i ++ ) { for ( int j = 1 ; j <= i; j ++ ) cout << j; for ( int l = n - 1 ; l >= i; l -- ) cout << "*" ; cout << endl; } } int main() { cin >> n; in (); }

vẽ tam giác sao vuông cân

Đề bài: Vẽ tam giác vuông cân Input 5 Output * *  * * *  * *  *  *  * *  *  *  *  * Bài giải: #include<iostream> using namespace std; int n; void vetamgiac() { for ( int i = 0 ; i < n; i ++ ) { for ( int j = 0 ; j <= i; j ++ ) cout << "* " ; cout << endl; } } int main() { cin >> n; vetamgiac(); }

Phân tích một số thành các thừa số nguyên tố

Đề bài: Viết chương trình phân tích một số  nguyên thành các thừa số  nguyên tố. INPUT 28 OUTPUT 2 2 7 Giải: #include<iostream> using namespace std; int n; void input (){ cin >> n; } void phantich(){ int i = 2 ; while (n > 1 ){ if (n % i == 0 ){ cout << i << " " ; n = n / i; } else { i ++ ; } } } int main(){ input (); phantich(); }

Dạng bài tập về vẽ hình bằng số

Đề bài: Viết chương trình nhập vào n và in ra hình theo quy luật INPUT 5 OUTPUT 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 Giải: #include<iostream> using namespace std; int a[ 100 ][ 100 ]; int n; void input (){ cin >> n; } void output(){ int r = 0 ; int index = 1 ; while (index < n * n){ for ( int i = r; i < n - r - 1 ; i ++ ) a[r][i] = index ++ ; for ( int i = r; i < n - r - 1 ; i ++ ) a[i][n - r - 1 ] = index ++ ; for ( int i = n - r - 1 ; i >= r + 1 ; i -- ) a[n - r - 1 ][i] = index ++ ; for ( int i = n - r - 1 ; i >= r + 1 ; i -- ) a[i][r] = index ++ ; r ++ ; } if (n % 2 != 0 ){ a[n / 2 ][n / 2 ] = n * n; } for ( int i = 0 ; i < n; i ++ ){ for ( int j = 0 ; j < n; j ++ ) cout << a[i][j] << " " ; cout << endl; } } int main(){ input (); output(); } // chuc b hoc tot N.L

Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số

Đề bài: Viết chương trình C cho phép nhập vào một số nguyên n và thực hiện đổi vị trí của chữ cái đầu tiên và chữ cái cuối cùng. Lưu ý trong trường hợp chữ số cuối cùng là 0 thì khi đổi chỗ sẽ được loại bỏ (ví dụ 9800 -> 809) INPUT 1234 OUTPUT 4321 Giải: #include<iostream> using namespace std; int n; int a[ 100 ]; void doivtri() { int i = 0 ; while (n > 0 ) { a[i] = n % 10 ; n = n / 10 ; i ++ ; } if ( a[ 0 ] != 0 ) cout << a[ 0 ]; for ( int j = i - 2 ; j >= 1 ; j -- ) cout << a[j]; cout << a[i - 1 ]; } int main() { cin >> n; doivtri(); }

bảng cửu chương

Đề bài: Viết chương trình C cho phép người dùng nhập vào n (với n nằm trong khoảng từ 1-9), thực hiện in ra bảng cửu chương của n. (mỗi phần tử cách nhau một khoảng trắng) INPUT 5 OUTPUT 5 10 15 20 25 30 35 40 45 50 Giải: #include<iostream> using namespace std; int main(){ int n,a; cin >> n; for ( int i = 1 ; i <= 10 ; i ++ ){ a = n * i; cout << a << " " ; } return 0 ; }

Tìm giá trị lớn nhất trong ba số

Đề bài: Viết chương trình C cho phép nhập vào ba số và tìm giá trị lớn nhất trong ba số đó. INPUT 10 20 30 OUTPUT 30 Giải: #include<stdio.h> int main () { int a,b,c, max ; scanf( " %d " " %d " " %d " , & a, & b, & c); max = a; if ( b > max ) { max = b; } if ( c > max ) { max = c; } printf( " %d " , max ); return 0 ; }

Chuyển đơn vị đo nhiệt độ C và F

Đề bài: Công thức chuyển đơn vị đo nhiệt độ từ C sang F như sau: F = (C * 9 / 5) + 32 Viết chương trình C cho phép nhập vào nhiệt độ đo theo độ C, thực hiện chuyển sang đơn vị đo độ F và in ra màn hình. (Lưu ý luôn lấy 2 chữ số thập phân sau dấu chấm phẩy) INPUT 24 OUTPUT 75.20 Giải #include<iostream> #include<iomanip> using namespace std; int main() { int c; cin >> c; float t; t = ( float ) 9 / 5 ; float F = ( float )( c * t) + 32 ; cout << fixed << setprecision( 2 ) << F; return 0 ; }

Đếm chữ số chẵn và chữ số lẻ

Đề bài: Nhập một số nguyên dương N không quá 9 chữ số. Hãy đếm xem N có bao nhiêu chữ số lẻ và bao nhiêu chữ  số  chẵn INPUT 12345678 OUTPUT 4 4 Giải: #include<stdio.h> int main(){ int n; int a[ 10 ]; int i; scanf( " %d " , & n); int schan = 0 , sle = 0 ; while (n > 0 ) { a[i] = n % 10 ; n = n / 10 ; i ++ ; } for ( int j = 0 ; j < i; j ++ ) { if ( a[j] % 2 == 0 ) { schan ++ ; } else sle ++ ; } printf( " %d \n " ,sle); printf( " %d " ,schan); return 0 ; }

Dạng bài tập về vẽ hình bằng số

Đề bài:  Viết chương trình nhập vào n và in ra hình theo quy luật INPUT 5 OUTPUT 1 2 3 4 5 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 5 4 3 2 1 Giải: #include<iostream> using namespace std; int a[ 100 ][ 100 ]; int n; int d = 1 ; int r = 0 ; void input () { cin >> n; } void output() { while (r < n) { for ( int i = r; i < n - r - 1 ; i ++ ) { a[r][i] = d ++ ; } for ( int i = r; i < n - r - 1 ; i ++ ) { a[i][n - r - 1 ] = d -- ; } for ( int i = n - r - 1 ; i >= r + 1 ; i -- ) { a[n - r - 1 ][i] = d ++ ; } for ( int i = n - r - 1 ; i >= r + 1 ; i -- ) { a[i][r] = d -- ; } r ++ ; } if (n % 2 != 0 ) { a[n / 2 ][n / 2 ] = 1 ; } for ( int i = 0 ; i < n; i ++ ) { for ( int j = 0 ; j < n; j ++ ) cout << a[i][j] << " " ; cout << endl; } } int main() { input (); output(); }

Tìm số Amstrong trong khoảng cho trước

đề bài: Viết chương trình cho phép nhập vào hai số nguyên dương và tìm tất cả các số Amstrong (là số có tổng các lũy thừa bậc n của các chữ số của nó bằng chính nó - với n là số chữ số) nằm trong khoảng đó (nếu không tồn tại số nào thì in ra 0) INPUT 10 1000 OUTPUT 153 370 371 407 bài giải: #include <iostream> #include <cmath> using namespace std; int n, m; void input () { cin >> n >> m; } int socs( int x) { int dem = 0 ; while (x > 0 ) { x = x / 10 ; dem ++ ; } return dem; } bool isAmstrong( int x) { int tmp = x; int soMu = socs(x); int tong = 0 ; while (x > 0 ) { int t = x % 10 ; int mut = pow (t, soMu); tong += mut; x /= 10 ; } if (tong == tmp) return true; return false; } void findAmstrong() { int dem = 0 ; if (n < m) { for ( int i = n; i <= m; i ++ ) { if (isAmstrong(i)) { dem ++ ; cout << i << " " ; } } } else { for ( int i

Tìm số Strong trong khoảng cho trước

Đề bài : Viết chương trình cho phép nhập vào hai số nguyên dương và tìm tất cả các số Strong (là số có tổng giai thừa các chữ số bằng chính nó) nằm trong khoảng đó (nếu không tồn tại số nào thì in ra 0) INPUT 1 1000 OUTPUT 1 2 145 Giải : #include<iostream> using namespace std; int n,m; void input () { cin >> n; cin >> m; } int giaithua( int n) { int t = 1 ; for ( int i = 1 ; i <= n; i ++ ) { t = t * i; } return t; } int tong( int n) { int tong = 0 ; int m = n; while (n > 0 ) { int t = n % 10 ; tong = tong + giaithua(t); n = n / 10 ; } if (tong == m) return 1 ; else return 0 ; } int main() { input (); if (n <= m) { for ( int i = n; i <= m; i ++ ) { if (tong(i)) cout << i << " " ; } } else { for ( int i = m; i <= n; i ++ ) { if (tong(i)) cout << i << " " ; } } return 0 ; }

Đếm số nguyên tố (theo thứ tự từ nhỏ đến lớn) trong mảng một chiều

Đề bài: Cho dãy số A có n phần tử chỉ bao gồm các số nguyên dương (không quá 9 chữ số). Hãy xác định các số nguyên tố trong dãy và đếm xem mỗi số xuất hiện bao nhiêu lần. INPUT 10 1 2 3 3 2 1 3 2 7 8 OUTPUT 2 3 3 3 7 1 Giải: #include<iostream> #include<cmath> using namespace std; int n; int a[ 100 ]; void input () { cin >> n; for ( int i = 0 ; i < n; i ++ ) cin >> a[i]; } bool nto( int x) { if (x < 2 ) return false; for ( int i = 2 ; i <= sqrt(x); i ++ ) if (x % i == 0 ) return false; return true; } bool NotInArray( int t, int b[ 100 ], int m) { for ( int i = 0 ; i < m; i ++ ) if ( t == b[i] ) return false; return true; } int dem( int x) { int dem = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (a[i] == x) dem ++ ; } return dem; } void output() { int b[ 100 ]; int m = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (NotInArray(a[i],b,m) && nto(a[i]))

Tích ma trận với ma trận chuyển vị

Đề bài: Cho ma trận A chỉ gồm các số nguyên dương cấp N*M. Hãy viết chương trình tính tích của A với ma trận chuyển vị của A. Dữ liệu vào: dòng đầu tiên ghi hai số n và m; n dòng tiếp theo ghi các phần tử của ma trận Dữ liệu ra: ma trận tích INPUT 2 2 1 2 3 4 OUTPUT 5 11 11 25 Giải: #include<iostream> using namespace std; int a[ 100 ][ 100 ]; int b[ 100 ][ 100 ]; int c[ 100 ][ 100 ]; int n,m; void input () { cin >> n >> m; for ( int i = 0 ; i < n; i ++ ) for ( int j = 0 ; j < m; j ++ ) cin >> a[i][j]; } void cvi() { for ( int i = 0 ; i < n; i ++ ) { for ( int j = 0 ; j < m; j ++ ) { b[j][i] = a[i][j]; } } } void tich() { for ( int i = 0 ; i < n; i ++ ) { for ( int j = 0 ; j < n; j ++ ) { for ( int l = 0 ; l < m; l ++ ) { c[i][j] += a[i][l] * b[l][j]; } } } for ( int i = 0 ; i < n; i ++ ) { for ( int j = 0 ; j < n; j ++ ) { cout <

Đếm số nguyên tố (theo thứ tự từ nhỏ đến lớn) trong mảng một chiều

Đề bài: Cho dãy số A có n phần tử chỉ bao gồm các số nguyên dương (không quá 9 chữ số). Hãy xác định các số nguyên tố trong dãy và đếm xem mỗi số xuất hiện bao nhiêu lần INPUT 10 1 2 3 3 2 1 3 2 7 8 OUTPUT 2 3 3 3 7 1 giải: #include<iostream> #include<cmath> using namespace std; int n; int a[ 100 ]; void input () { cin >> n; for ( int i = 0 ; i < n; i ++ ) cin >> a[i]; } bool nto( int x) { if (x < 2 ) return false; for ( int i = 2 ; i <= sqrt(x); i ++ ) if (x % i == 0 ) return false; return true; } bool NotInArray( int t, int b[ 100 ], int m) { for ( int i = 0 ; i < m; i ++ ) if ( t == b[i] ) return false; return true; } int dem( int x) { int dem = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (a[i] == x) dem ++ ; } return dem; } void output() { int b[ 100 ]; int m = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (NotInArray(a[i],b,m) && nto(a[i]))

Liệt kê các phần tử xuất hiện nhiều hơn một lần trong mảng

Đề bài:  Viết chương trình C cho phép nhập vào mảng một chiều n phần tử (n>1) và thực hiện in ra các phần tử xuất hiện nhiều hơn 1 lần trong mảng theo thứ tự xuất hiện (Nếu không có phần tử nào thỏa mãn in ra 0) INPUT 7 2 3 3 2 1 9 5 OUTPUT 2 3 Giải: #include<iostream> using namespace std; int n; int a[ 1000 ]; void input () { cin >> n; for ( int i = 0 ; i < n; i ++ ) cin >> a[i]; } bool NotInArray( int t, int b[ 100 ], int m ) { for ( int i = 0 ; i < m; i ++ ) { if (t == b[i]) return false; } return true; } int dem( int x) { int dem = 0 ; for ( int i = 0 ; i < n; i ++ ) if (a[i] == x) dem ++ ; return dem; } void output() { int b[ 100 ]; int m = 0 ; int d = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (NotInArray(a[i], b, m) && dem(a[i]) > 1 ) { d ++ ; b[m ++ ] = a[i]; } } for ( int i = 0 ; i < m; i ++ ) cout << b[i] << " "

Liệt kê các phần tử xuất hiện nhiều hơn một lần trong mảng

Đề bài: Viết chương trình C cho phép nhập vào mảng một chiều n phần tử (n>1) và thực hiện in ra các phần tử xuất hiện nhiều hơn 1 lần trong mảng theo thứ tự xuất hiện (Nếu không có phần tử nào thỏa mãn in ra 0) INPUT 7 2 3 3 2 1 9 5 OUTPUT 2 3 Giải:  #include<iostream> using namespace std; int n; int a[ 1000 ]; void input () { cin >> n; for ( int i = 0 ; i < n; i ++ ) cin >> a[i]; } bool NotInArray( int t, int b[ 100 ], int m ) { for ( int i = 0 ; i < m; i ++ ) { if (t == b[i]) return false; } return true; } int dem( int x) { int dem = 0 ; for ( int i = 0 ; i < n; i ++ ) if (a[i] == x) dem ++ ; return dem; } void output() { int b[ 100 ]; int m = 0 ; int d = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (NotInArray(a[i], b, m) && dem(a[i]) > 1 ) { d ++ ; b[m ++ ] = a[i]; } } for ( int i = 0 ; i < m; i ++ ) cout << b[i] << " " ;

Liệt kê các giá trị xuất hiện trong mảng

Đề bài:  Viết chương trình C cho phép nhập vào mảng một chiều n phần tử (n>1) và thực hiện in ra các giá trị có trong mảng theo thứ tự xuất hiện INPUT 7 2 3 3 2 1 9 5 OUTPUT 2 3 1 9 5 Giải: #include<iostream> using namespace std; int n; int a[ 1000 ]; void input () { cin >> n; for ( int i = 0 ; i < n; i ++ ) cin >> a[i]; } bool NotInArray( int a, int b[ 100 ], int m ) { for ( int i = 0 ; i < m; i ++ ) { if (a == b[i]) return false; } return true; } void ptukhac() { int b[ 100 ]; int m = 0 ; for ( int i = 0 ; i < n; i ++ ) { if (NotInArray(a[i], b, m)) { b[m ++ ] = a[i]; } } for ( int i = 0 ; i < m; i ++ ) cout << b[i] << " " ; } int main() { input (); ptukhac(); }

Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số

Đ ề bài: Viết chương trình C cho phép nhập vào một số nguyên n và thực hiện đổi vị trí của chữ cái đầu tiên và chữ cái cuối cùng. Lưu ý trong trường hợp chữ số cuối cùng là 0 thì khi đổi chỗ sẽ được loại bỏ (ví dụ 9800 -> 809) INPUT 1234 OUTPUT 4321 Giải: #include<iostream> using namespace std; int n; int a[ 100 ]; void doivtri() { int i = 0 ; while (n > 0 ) { a[i] = n % 10 ; n = n / 10 ; i ++ ; } if ( a[ 0 ] != 0 ) cout << a[ 0 ]; for ( int j = i - 2 ; j >= 1 ; j -- ) cout << a[j]; cout << a[i - 1 ]; } int main() { cin >> n; doivtri(); }

Tìm số đẹp (lộc phát)

Đề bài: Một số được gọi là “lộc phát” nếu chỉ có các chữ số 0,6,8. Nhập vào một số nguyên dương không quá 9 chữ  số, hãy kiểm tra xem đó có phải số  lộc phát hay không. Nếu đúng in ra 1, sai in ra 0 INPUT 6068 OUTPUT 1 giải: #include <iostream> using namespace std; int n; bool ktlocphat( int n) { while (n > 0 ) { int t = n % 10 ; if (t != 0 && t != 6 && t != 8 ) return false; n = n / 10 ; } return true; } int main() { cin >> n ; if (ktlocphat(n)) cout << "1" ; else cout << "0" ; }

Tìm số đẹp (thuận nghịch và chia hết cho 10)

Đề bài: Một số được coi là đẹp nếu nếu nó có tính chất thuận nghịch và tổng chữ số chia hết cho 10. Bài toán  đặt ra là cho trước số chữ số. Hãy đếm xem có bao nhiêu số đẹp với số chữ số như vậy INPUT 2 OUTPUT 1 Giải : #include <iostream> #include <cmath> using namespace std; int n; bool ThuanNghich( int x) { int tmp = x; int dao = 0 ; while (x > 0 ) { dao = dao * 10 + x % 10 ; x /= 10 ; } if (dao == tmp) return true; return false; } bool tongchia10( int n) { int tong = 0 ; while (n > 0 ) { int t = n % 10 ; tong = tong + t; n = n / 10 ; } if (tong % 10 == 0 ) return true; return false; } int main() { cin >> n; int dem = 0 ; for ( int i = pow ( 10 ,n - 1 ); i < pow ( 10 ,n); i ++ ) if (ThuanNghich(i) && tongchia10(i)) dem ++ ; cout << dem; }

Số đẹp tăng giảm

Đề bài: Một số được gọi là số tăng giảm nếu số đó có các chữ số thỏa mãn hoặc tăng dần, hoặc giảm dần từ trái qua phải. Hãy đếm các số  nguyên tố  là số  tăng giảm với số  chữ  số  cho trước INPUT 2 O UTPUT 20 Giải bài: #include<iostream> #include<cmath> using namespace std; int n; bool nto ( int x) { if (x < 2 ) return false ; for ( int i = 2 ; i <= sqrt(x); i ++ ) if (x % i == 0 ) return false ; return true ; } //1234 -> 4, 123, 3 < 4 bool tang ( int x) { int t = x % 10 ; x /= 10 ; while (x > 0 ) { if (t <= x % 10 ) return false ; t = x % 10 ; x /= 10 ; } return true ; } bool giam ( int x) { int t = x % 10 ; x /= 10 ; while (x > 0 ) { if (t >= x % 10 ) return false ; t = x % 10 ; x /= 10 ; } return true ; } void tanggiam () { cin >> n; int dem = 0 ; for ( int i = pow( 10 , n - 1 ); i < pow( 10 , n); i ++ ) { if (nto(i) && ( t

Tìm số đẹp (số thuận nghịch lộc phát)

Đề bài : Một số được coi là số đẹp nếu nó là số thuận nghịch, có chứa ít nhất một chữ số 6, và tổng các chữ số của nó có chữ số cuối cùng là 8.  Viết chương trình liệt kê và đếm xem trong một đoạn giữa hai số nguyên cho trước có bao nhiêu số đẹp như vậy INPUT 1  500 OUTPUT 161 Giải: #include<iostream> using namespace std; int n,m; void input () { cin >> n >> m; } bool sodep ( int n) { int m = n; int dao = 0 ; int dem = 0 ; int tong = 0 ; while (n > 0 ) { int t = n % 10 ; if (t == 6 ) dem ++ ; dao = dao * 10 + t; tong = tong + t; n = n / 10 ; } if (dao == m && dem >= 1 && tong % 10 == 8 ) return true ; return false ; } int main () { input(); int dem = 0 ; if ( n >= m ) { for ( int i = m; i <= n; i ++ ) { if (sodep(i)) { dem ++ ; cout << i << " " ; } } cout << dem; } else { for ( int i = n; i <

Tìm UCLN BCNN

Đề bài:  Tìm ước chung lớn nhất và bội chung nhỏ nhất của hai số nguyên dương a và b INPUT 12 18 OUTPUT 6 36 Giải: #include<iostream> using namespace std; int a,b,c; void input () { cin >> a >> b; } int UCLN ( int a, int b) { while ( a != b) { if (a > b) a = a - b; else b = b - a; } return a; } int BCNN ( int a, int b) { c = a * b / UCLN(a,b); return c; } int main () { input(); int t = UCLN(a, b); cout << t; int h = BCNN(a,b); cout << " " << h; }

Đếm số thuần nguyên tố trong một khoảng

#include<iostream> #include<cmath> using namespace std; int n,m; void input (){ cin >> n >> m; } bool nto ( int x){ if (x < 2 ) return false ; for ( int i = 2 ; i <= sqrt(x); i ++ ) if (x % i == 0 ) return false ; return true ; } bool ktra ( int x){ int tong = 0 ; bool cs = true ; while (x > 0 ){ int t = x % 10 ; if (t != 2 && t != 3 && t != 5 && t != 7 ) cs = false ; tong = tong + t; x = x / 10 ; } if (nto(tong) && cs == true ) return true ; return false ; } int main (){ input(); int dem = 0 ; if ( n >= m ){ for ( int i = m; i <= n; i ++ ){ if ( ktra(i) && nto(i) ) dem ++ ; } cout << dem; } else { for ( int i = n; i <= m; i ++ ){ if ( ktra(i) && nto(i) ) dem ++ ; } cout << dem; } }