Bài tập C++ có lời giải/Câu lệnh điều kiện

Bài 1: Giải phương trình bậc nhất ax + b = 0 (a, b nhập 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ấy 2 chữ số thập phân

VD:

Input
Output
2
3
-1.5
#include <iostream>
#include <stdio.h>  
using namespace std;

void PTB1 (double a , double b) {
	if (a == 0) {
		if (b == 0)
		    cout << "VSN";
		else cout << "VN";
	}
	else 
	   printf("%.2f",-b/a);
}
int main() {  
	double a , b;
	cin >> a >> b;
	PTB1(a , b);	
	return 0;
}

Bài 2: Giải phương trình bậc hai ax2 + bx + c = 0 (A, B nhập 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ấy 2 chữ số thập phân

VD:

Input
Output
3
-10
8
2.00
1.33
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main() {  
    float a , b , c , delta;
    cin >> a >> b >> c;
    if (a==0) {
        if (b==0 && c==0) 
            cout << "VSN";
        if (b==0 && c!=0) 
            cout << "VN";
        if (b!=0) 
            printf("%.4f",-c/b);
    }   
    else {
        delta = (b*b) - 4*a*c;
        if (delta < 0) 
            cout << "VN";
        if (delta == 0) 
            cout << (-b/(2*a));
        if (delta > 0)
            cout << ( ( (-b) + sqrt(delta) ) /2 *a ) << endl << ( ( (-b) - sqrt(delta) ) /2 *a ) << endl;
        }        
        return 0;
}

Bài 3: Nhập vào 1 số nguyên, yêu cầu xuất ra chữ số hàng trăm của số đó, nếu không có thì xuất ra 0.

VD:

Input
Output
1234
2
#include <iostream>
using namespace std;
int main()
{
	int n, i;
	cin >> n;
	i = 0;
	if (n < 100) {
		cout << i << endl;
	}
	else {
		i = n / 100 % 10;
		cout << i << endl;
	}
	return 0;
}

Bài 4: 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ó (YES) hợp lệ hay không (NO)?

Lưu ý:

  • Ngày phải tương ứng với tháng
  • Tháng phải từ 1 đến 12
  • Năm phải từ 1900 trở đi
  • 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

VD:

Input
Output
28 9 2017
YES
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >>c;
    if ((c >= 1900)
    && ((((c%400 == 0) || (c%4 == 0 && c%100 != 0))
    && a==29 && b==2) || ((b==1 || b==3 || b==5|| b==7 || b==8 || b==10 || b==12)
    && a<32) || (b==2 && a<29) || ((b==4 || b==6 || b==9 || b==11) && a<31)))
        cout<<"YES";
    else
        cout<<"NO";    
return 0;
}

Bài 5: Kiểm tra số đó có phải là số chính phương không?

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    unsigned int i=sqrt(n);
    if(n==i*i){
        cout<<"yes";
    }
    else{
        cout<<"no";
    }
    return 0;
}

Bài 6: Nhập vào năm sinh của một người, cho biết người này tuổi gì? (Giáp Tí, Ất Sửu, Bính Dần, Đinh Mão,...)

#include <iostream>
using namespace std;
 
int main() {
    int namsinh;
    string can, chi;
    cin >> namsinh;
    cout << "Năm sinh: " << namsinh << endl;   
    switch (namsinh % 10) {
            case 0:
                can = "CANH";
                break;
            case 1:
                can = "TÂN";
                break;
            case 2:
                can = "NHÂM";
                break;
            case 3:
                can = "QUÝ";
                break;
            case 4:
                can = "GIÁP";
                break;
            case 5:
                can = "ẤT";
                break;
            case 6:
                can = "BÍNH";
                break;
            case 7:
                can = "ĐINH";
                break;
            case 8:
                can = "MẬU";
                break;
            case 9:
                can = "KỶ";
                break;
    }            
        switch(namsinh % 12){
            case 0:
                chi = "THÂN";
                break;
            case 1:
                chi = "DẬU";
                break;
            case 2:
                chi = "TUẤT";
                break;
            case 3:
                chi = "HỢI";
                break;
            case 4:
                chi = "TÝ";
                break;
            case 5:
                chi = "SỬU";
                break;
            case 6:
                chi = "DẦN";
                break;
            case 7:
                chi = "MẸO";
                break;
            case 8:
                chi = "THÌN";
                break;
            case 9:
                chi = "TỴ";
                break;
            case 10:
                chi = "NGỌ";
                break;
            case 11:
                chi = "MÙI";
                break;
        }    
    cout << "Tuổi: " << can << " " << chi << endl;
    return 0;
}

Bài 7: Cho điểm toán, lý, hóa của một học sinh. Hãy tính điểm trung bình của học sinh này và cho biết em này xếp loại học lực gì theo tiêu chuẩn sau:

  • ĐTB >= 8 : xếp loại GIỎI
  • 8 > ĐTB >= 6.5 : xếp loại KHÁ
  • 6.5 > ĐTB >= 5 : xếp loại TRUNG BÌNH
  • 5 > ĐTB >= 3.5 : xếp loại YẾU
  • 3.5 > ĐTB : xếp loại KÉM
#include <iostream>
using namespace std;
int main () {
    float dToan, dLy, dHoa, dtb;
    cin >> dToan >> dLy >> dHoa;
    if (dToan > 10 || dLy > 10 || dHoa > 10 || dToan < 0 || dLy < 0 || dHoa < 0) 
        cout << "Diem khong hop le. Vui long nhap lai." << endl;
    else {
        cout << "Diem Toan: " << dToan << endl;
        cout << "Diem Ly: " << dLy << endl;
        cout << "Diem Hoa: " << dHoa << endl;
        
        dtb = (dToan + dLy + dHoa)/3;
        cout << "Diem trung binh 3 mon: " << std::setprecision(3) << dtb << endl;        

        if (dtb >= 8) {
            cout << "Xep loai: GIOI" << endl;
        }    
        else if (dtb >= 6.5) {
            cout << "Xep loai: KHA" << endl;
        }
        else if (dtb >= 5) {
            cout << "Xep loai: TB" << endl;
        }    
        else if (dtb >= 3.5) {
            cout << "Xep loai: YEU" << endl;
        } 
        else {
            cout << "Xep loai: KEM" << endl;
        }
    }
  return 0;
}