30/09/2018, 15:59

C++ Chương I:Bài Tập Căn Bản

BT1: Viết chương trình hiện ra màn hình dòng chữ: “Welcome C++”

#include <iostream>

int main(){
    std::cout << "Welcome C++" << std::endl;
    system("Pause");
    return 0;
}

BT2: Viết chương trình xuất ra màn hình hình vuông đặc kí tự ‘*’ có cạnh bằng a (với a nhập từ bàn phím)

#include <iostream>
int main(){
    int length;
    std::cout << "Enter length: ";
    std:: cin >> length;
    for (int i = 0; i < length; i++)
    {
        for (int j = 0; j < length; j++)
        {
            std::cout << "* ";
        }
        std::cout << "
";
    }
    system("Pause");
    return 0;
}

BT3:
• Viết chương trình nhập vào bán kính của hình tròn; xuất ra diện tích và chu vi của
hình tròn đó.
• Diện tích của hình tròn biết trước bằng cách nhập vào từbàn phím, tính và in ra bán
kính của hình tròn đó.

#include <iostream>
#include <cmath>
int main(){
    // nhập bán kính, tính diện tích và chu vi hình tròn
    double circle; 
    std::cout << "Enter circle radius: ";
    std:: cin >> circle;
    double acreage; // khai bao bien dien tich
    acreage = circle * circle * 3.14;// cong thuc tinh dien tich
    double perimeter; // khai bao bien chu vi
    perimeter = 2 * circle * 3.14; // cong thuc tính chu vi
    std::cout << "Acreage Circle: "<< acreage << std::endl;
    std::cout << "Perimeter Circle: "<< perimeter << std::endl;

    //nhập diện tích tính bán kính hình tròn
    std::cout << "Enter Acreage radius: ";
    std::cin >> acreage;
    circle = sqrt(acreage/3.14);
    std::cout << "Circle radius: " << circle << std:: endl;

    system("Pause");
    return 0;
}

BT4: Viết chương trình nhập vào đáy lớn, đáy nhỏ, chiều cao của hình thang; xuất ra diện tích của hình thang đó.

#include <iostream>

int main(){
    float bigBottoms, smallBottoms, height;
    std::cout << "Enter Trapezoid Big Bottoms: ";
    std::cin >> bigBottoms;
    std::cout << "Enter Trapezoid Small Bottoms: ";
    std::cin >> smallBottoms;
    std::cout << "Enter Trapezoid Height: ";
    std::cin >> height;

    float acreage = ((bigBottoms + smallBottoms) * height) / 2;
    std::cout << "Acreage Trapezoid: " << acreage << std::endl;
    system("Pause");
    return 0;
}

BT5: Chương trình tính giá trịbiểu thức Y = 3e^cos(t+1)(t là số nhập từ bàn phím)
HD: Hàm tính là exp(x), hàm tính cos(x) trong tập tin thư viện

#include <iostream>
#include <cmath>
int main(){
    //tinh bieu thuc y=3e^cos(t+1)
    double t,y;
    std::cout << "Enter a number: ";
    std::cin >> t;
    y = 3 * exp(cos(t+1));
    std::cout << "Y = " << y << std::endl;
    system("Pause");
    return 0;
}

BT6: Viết chương trình nhập vào 2 số nguyên và các phép toán +, -, *, /, %, >,<. In ra kết quả phép toán đó.

#include <iostream>

int main(){
    // tinh ket qua phep toan + - * / % > <
    int a,b;
    std::cout << "Enter a number A: ";
    std::cin >> a;
    std::cout << "Enter a number B: ";
    std::cin >> b;
    std::cout << "Total two number A & B: " << a + b << std::endl;
    std::cout << "Performance two number A & B: " << a - b << std::endl;
    std::cout << "Built two number A & B: " << a * b << std::endl;
    if(b != 0){
        std::cout << "Trade two number A & B: " << a / b << std::endl;
    }
    std::cout << "Mod two number A & B: " << a % b << std::endl;
    if(a > b){
        std::cout << "A" << ">" << "B" << std::endl;
    }else
    {
        std::cout << "A" << "<" << "B" << std::endl;
    }
    system("Pause");
    return 0;
}

BT 7: Viết chương trình nhập vào thông tin của một sinh viên bao gồm: mã số sinh viên, họ tên, quê quán, năm sinh, điểm trung bình các năm học; xuất ra thông tin của sinh viên vừa nhập.

#include <iostream>
#include <string>

int main(){
    int mssv, namSinh;
    char hoTen[50], queQuan[100];
    double diemTrungBinh;
    std::cout << "Enter MSSV: ";
    std::cin >> mssv;
    std::cout << "Enter Full Name: ";
    fflush(stdin);
    gets_s(hoTen);
    std::cout << "Enter Home Town: ";
    fflush(stdin);
    gets_s(queQuan);
    std::cout << "Enter Birthday: ";
    std::cin >> namSinh;
    std::cout << "Enter Point Average: ";
    std::cin >> diemTrungBinh;

    std::cout << "MSSV: " << mssv << std::endl;
    std::cout << "Full Name: " << hoTen << std::endl;
    std::cout << "Home Town: " << queQuan << std::endl;
    std::cout << "Birthday: " << namSinh << std::endl;
    std::cout << "Point Average: " << diemTrungBinh << std::endl;

    system("Pause");
    return 0;
}

BT 8: Viết chương trình nhập vào ba cạnh của một tam giác, tính và xuất ra diện tích của tam giác đó.

#include <iostream>
#include <cmath>
int main(){
    int a,b,c,chuvi;
    double dientich;
    std::cout << "Nhap Canh A: ";
    std::cin >> a;
    std::cout << "Nhap Canh B: ";
    std::cin >> b;
    std::cout << "Nhap Canh C: ";
    std::cin >> c;
    chuvi = a + b + c; // cong thuc tinh chu vi
    dientich = sqrt(chuvi * (chuvi - a) * (chuvi - b) * (chuvi - c)); // cong thuc tinh dien tich
    std::cout << "Dien Tich Hinh Tam Giac La: " << dientich << std::endl;
    system("Pause");
    return 0;
}

Tiến mới Post lần đầu! có gì sai sót A/E comment để Tiến sửa! BT này là Tiến tự code! A/E nào có code gọn hơn thì share lên cho mọi người cùng học! Chúc A/E “Dạy Nhậu Học” một ngày vui vẻ

Nguyễn Ngọc Tú viết 18:13 ngày 30/09/2018

BT 8: Viết chương trình nhập vào ba cạnh của một tam giác, tính và xuất ra diện tích của tam giác đó.

Bài này e nghĩ nên kiểm tra bất đảng thức tam giác xem 3 cạnh nhập vào có phải 3 cạnh của 1 tam giác không.

#include <iostream>
#include <cmath>
int main(){
    int a,b,c,chuvi;
    double dientich;
    std::cout << "Nhap Canh A: ";
    std::cin >> a;
    std::cout << "Nhap Canh B: ";
    std::cin >> b;
    std::cout << "Nhap Canh C: ";
    std::cin >> c;
    //Kiem tra bat dang thuc tam giac
    if( (a + b) < c || (a + c) < b || (b + c) < a ) {
        std::cout << "Tam Giac Khong Hop Le.";
    }
    else {
        chuvi = a + b + c; // cong thuc tinh chu vi
        dientich = sqrt(chuvi * (chuvi - a) * (chuvi - b) * (chuvi - c)); // cong thuc tinh dien tich
        std::cout << "Dien Tich Hinh Tam Giac La: " << dientich << std::endl;
    }
    system("Pause");
    return 0;
}
tntien.ecit viết 18:11 ngày 30/09/2018

BT 9: Một đoạn thẳng được biểu diễn bởi hai điểm trong mặt phẳng. Viết chương trình nhập vào hai điểm của một đoạn thẳng và xuất ra trung điểm của đoạn thẳng đó.

#include <iostream>

int main(){
    double xA, xB, yA, yB,x1, y1;
    std::cout << "Nhap xA: ";
    std::cin >> xA;
    std::cout << "Nhap yA: ";
    std::cin >> yA;
    std::cout << "Nhap xB: ";
    std::cin >> xB;
    std::cout << "Nhap yB: ";
    std::cin >> yB;
    x1 = (xA + xB) / 2;
    y1 = (yA + yB) / 2;
    std::cout << "Trung Diem I Cua Doan AB la: " << x1 << "," << y1 << std::endl;
    system("Pause");
    return 0;
}

BT 10: Viết chương trình nhập vào ba đỉnh của một tam giác. Xuất ra trọng tâm của tam giác đó.

#include <iostream>

int main(){
    double xA, xB, xC, yA, yB, yC, x1, y1;
    std::cout << "Nhap xA: ";
    std::cin >> xA;
    std::cout << "Nhap yA: ";
    std::cin >> yA;
    std::cout << "Nhap xB: ";
    std::cin >> xB;
    std::cout << "Nhap yB: ";
    std::cin >> yB;
    std::cout << "Nhap xC: ";
    std::cin >> xC;
    std::cout << "Nhap yC: ";
    std::cin >> yC;
    x1 = (xA + xB + xC) / 3;
    y1 = (yA + yB + yC) / 3;
    std::cout << "Trong Tam I cua tam giac la: " << x1 << "," << y1 << std::endl;
    system("Pause");
    return 0;
}

BT 11: Xét tam thức bậc 2 có dạng ax2+ bx + c. Viết chương trình nhập vào các hệ số của một tam thức bậc 2 và giá trịcủa biến sốx; xuất ra giá trịcủa tam thức bậc 2 đó.

#include <iostream>

int main(){
    float a, b, c, x,f;
    std::cout << "Nhap A: ";
    std::cin >> a;
    std::cout << "Nhap B: ";
    std::cin >> b;
    std::cout << "Nhap C: ";
    std::cin >> c;
    std::cout << "Nhap X: ";
    std::cin >> x;
    f = a * x * x + b * x + c;
    std::cout << "Gia Tri Tam Thuc Bac 2 La: " << f << std::endl;
    system("Pause");
    return 0;
}
Nguyễn Quốc Đạt viết 18:08 ngày 30/09/2018

Nếu mình viết “using std::cout; using std::cin;” ở đầu có khác gì “std::” ở mỗi dòng không anh? Em nghĩ thế dễ nhìn hơn chút.

tntien.ecit viết 18:09 ngày 30/09/2018

Nếu mình viết “using std::cout; using std::cin;” ở đầu có khác gì “std::” ở mỗi dòng không anh? Em nghĩ thế dễ nhìn hơn chút.

using namespace std;
Trong list video C++ của Đạt có nói về cái này! có sẻ trùng một số trường hợp nên gây lỗi…!

buithaiminh viết 18:12 ngày 30/09/2018

Không khác nhau bạn nhé. Lúc này chúng ta đang sử dụng using-declaration để chỉ rõ tên trong namespace std mà chúng ta muốn sử dụng. Ở đây là coutcin

using std::cout;
using std::cin;

Chỉ khi nào sử dụng using namespace std mới có thể sinh ra nhiều vấn đề như trùng tên chẳng hạn. Và có thể bạn không sử dụng hết tên của namespace std trong khi trình biên dịch thì lại thấy tất cả tên, điều này là dư thừa không cần thiết. Những sự xung đột như vậy làm mất đi ý nghĩa của việc sử dụng namespace. Bạn xem lại định nghĩa về namespace sẽ rõ hơn.

Đoạn code trên có thể viết lại theo ý @Newbie_D95 :

#include <iostream>

int main() {
    using std::cout;
    using std::cin;
    using std::endl;
    float a, b, c, x, f;
    cout << "Nhap A: ";
    cin >> a;
    cout << "Nhap B: ";
    cin >> b;
    cout << "Nhap C: ";
    cin >> c;
    cout << "Nhap X: ";
    cin >> x;
    f = a * x * x + b * x + c;
    cout << "Gia Tri Tam Thuc Bac 2 La: " << f << endl;
    system("Pause");
    return 0;
}

Xem đoạn code ở bài của bạn @tuancoi2506 này sẽ thấy using namespace std; (using-directive) khác với đoạn code trên using std::cout; (using-declaration) như thế nào: Sửa lỗi bài tìm số nguyên tố gần với số n nhập từ bàn phím?

tntien.ecit viết 18:00 ngày 30/09/2018

Chắc mình phải viết lại như bạn! chứ mỗi lần cout là phải viết lại std::cout! thanks bạn!

buithaiminh viết 18:06 ngày 30/09/2018

Thật ra khi mới học, để tránh rắc rối thì cứ viết đầy đủ cú pháp. Nhiều lúc trong khi code mà viết vắn tắt, tiết kiệm đôi ba dòng code sẽ xảy ra nhiều vấn đề liên quan rắc rối khác rất mất thời gian debug, đồng thời cũng khiến code không được trực quan khi chúng ta cần xem lại. Vậy thì nên ngắn gọn, vắn tắt khi nào? Khi chúng ta thực sự hiểu mình đang làm gì.

Bùi Thanh Tùng viết 18:15 ngày 30/09/2018

Hay quá. Cảm ơn chủ topic nhiều nha. Mìng đang tính lập topic xin 1 số bài tập căn bản của C++ thì thấy bài viết này của bạn.
Các bạn khác có thêm bài tập C++ căn bản thì góp vui vào để cùng Dạy Nhau Học nhé.
Cảm ơn các bạn nhiều.

tntien.ecit viết 18:12 ngày 30/09/2018

Thật ra khi mới học, để tránh rắc rối thì cứ viết đầy đủ cú pháp. Nhiều lúc trong khi code mà viết vắn tắt, tiết kiệm đôi ba dòng code sẽ xảy ra nhiều vấn đề liên quan rắc rối khác rất mất thời gian debug, đồng thời cũng khiến code không được trực quan khi chúng ta cần xem lại. Vậy thì nên ngắn gọn, vắn tắt khi nào? Khi chúng ta thực sự hiểu mình đang làm gì

Thanks bạn đã góp ý! những bài sau mình cố gắng ngắn gọn hơn!

Hay quá. Cảm ơn chủ topic nhiều nha. Mìng đang tính lập topic xin 1 số bài tập căn bản của C++ thì thấy bài viết này của bạn. Các bạn khác có thêm bài tập C++ căn bản thì góp vui vào để cùng Dạy Nhau Học nhé.Cảm ơn các bạn nhiều

Mình cố gắng code để úp lên cho mọi người xem!

Châu Minh viết 18:04 ngày 30/09/2018

cho e hỏi sdt:: để làm gì thế ạ

tntien.ecit viết 18:12 ngày 30/09/2018

cho e hỏi sdt:: để làm gì thế ạ

lên google search namespace std là hiểu rỏ bạn à!

Châu Minh viết 18:01 ngày 30/09/2018

[quote=“NotFound, post:12, topic:613”]
up google tìm kiếm namespace std be understood ro your à!
[/quote] ok tks you mình sẽ tìm xem

Bùi Thanh Tùng viết 18:09 ngày 30/09/2018

cho e hỏi sdt:: để làm gì thế ạ

NAMESPACE LÀ GÌ???
Chắc các bạn đã quá quen với thuật ngữ namespace, vì gần như trong bất cứ chương trình C++ nào các bạn cũng dùng đến câu lệnh “using namespace std;”. Vậy namespace là gì, và tại sao lại có câu lệnh trên trong hầu hết các chương trình của chúng ta?
Namespace (tạm dịch là không gian tên) là một cơ chế trong C++ cho phép chúng ta phân nhóm các thực thể như class, object, function thành những nhóm riêng biệt, mỗi nhóm đó được đặt cho một cái tên, gọi là không gian tên (namespace).
Ví dụ mình có namespace N, trong đó mình định nghĩa class C, object o và function f. Khi đó, mình có thể tham chiếu đến các thực thể này bằng cách viết N::C, N::o hay N::f. Điều này giúp cho chúng ta có thể phân biệt được các thực thể cùng tên nằm trong các namespace khác nhau. Chẳng hạn trong namespace N1 có class C, trong namespace N2 cũng có class C, khi đó ta có thể thể hiện rõ ra được là chúng ta đang ám chỉ đến class nào bằng cách viết tường minh N1::C hay N2::C.
Mỗi namespace có thể chứa trong đó một hay một số namespace khác, giống như một package có thể chứa các package khác trong ngôn ngữ Java. Điều này cho phép chúng ta định nghĩa ra những cấu trúc namespace phức tạp theo kiểu cây, và khi đó, khi cần tham chiếu đến một thực thể nào đó, ta sẽ viết theo kiểu: vehicles::cars::toyota::corolla::altis_2012 chẳng hạn.
Trong ngôn ngữ C++, người ta định nghĩa ra một số lượng lớn class, object, function mà lập trình viên hay dùng đến, và đặt chúng trong một namespace có tên là ‘std’ (viết tắt của standard). Một trong những thực thể quen thuộc nhất trong namespace std chính là đối tượng “cout”. Đối tượng này cho phép chúng ta hiển thị dữ liệu ra màn hình console (standard output) bằng toán tử <<. Ví dụ ta in dòng chữ “Hello World” ra màn hình bằng câu lệnh “std::cout << “Hello World”;”.
Mỗi khi phải tham chiếu đến một object, chúng ta cần chỉ rõ nó thuộc namespace nào để tránh nhầm lẫn. Tuy nhiên, C++ cho phép lập trình viên có một tiện ích đó là chỉ ra namespace mặc định mà người đó sẽ dùng trong phạm vi file .cpp mà người đó đang thao tác. Để làm điều đó, lập trình viên cần khai báo câu lệnh “using namespace abc;” ở ngay đầu file, trong đó ‘abc’ là tên của namespace anh ta muốn trở thành namespace mặc định. Chẳng hạn câu khai báo quen thuộc “using namespace std” sẽ cho phép chúng ta đặt namespace std làm mặc định và khi tham chiếu đến các thực thể trong đó thì không cần có tiền tố std:: ở phía trước nữa. Và vì vậy, câu lệnh in dòng chữ ra màn hình của chúng ta trở thành “cout << “Hello World”;”
Hãy viết, biên dịch và chạy thử hai chương trình sau xem kết quả có giống nhau không nhé:

//-------------- Program A --------------------------
#include <iostream>
int main () {
std::cout << "Hello World";
return 0;
}
//------------------------------------------------------
//--------------- Program B -------------------------
#include <iostream>
using namespace std;
int main () {
cout << "Hello World";
return 0;
}
//------------------------------------------------------

Chúc các bạn có những giây phút thú vị với ngôn ngữ lập trình C++.
Hãy share bài viết nếu bạn cảm thấy nó có ích nhé! Cảm ơn các bạn rất nhiều!
Nguồn: https://www.facebook.com/vietnamesecplusplus/posts/142447385937332

[quote=“NotFound, post:12, topic:613”]
lên google search namespace std là hiểu rỏ bạn à!
[/quote] Chuẩn đấy. Theo mình thì nên google trước nhé

Châu Minh viết 18:13 ngày 30/09/2018

NAMESPACE LÀ GÌ???

có thể mình chưa hiểu rõ về C++ học không chắc rồi. mình chỉ biết mấy cái cơ bản nhất thôi ạ

Bùi Thanh Tùng viết 18:04 ngày 30/09/2018

Mình cũng như bạn. Cũng mới bắt đầu tìm hiểu về C++ đây. Cùng cố gắng nhé

Châu Minh viết 18:04 ngày 30/09/2018

Mình cũng như bạn. Cũng mới bắt đầu tìm hiểu về C++ đây. Cùng cố gắng nhé

mình học chẳng chắc một ngôn ngữ nào cả toàn bị lỗi phần con trỏ với mảng thôi còn C++ mình học tới class là ngộp không biết học ntn cả ( tự học ) bạn học tới đâu rồi giúp mình với

Bùi Thanh Tùng viết 18:15 ngày 30/09/2018

mình học chẳng chắc một ngôn ngữ nào cả toàn bị lỗi phần con trỏ với mảng thôi còn C++ mình học tới class là ngộp không biết học ntn cả ( tự học ) bạn học tới đâu rồi giúp mình với

  • [quote=“chauminh, post:17, topic:613”]
    mình học chẳng chắc một ngôn ngữ nào cả
    [/quote] Theo mình thì không nên học nhiều ngôn ngữ lập trình nếu mới học. Tự học thì nên học chắc chắn một ngôn ngữ (C hoặc C++) đã. Chưa bò thì chạy sao nổi.
  • Phần con trỏ thì nên xem Video của bạn Đạt: từ bài 19 tới bài 21 rồi đọc bài Tìm hiểu về bản chất của con trỏ trên diễn đàn c việt xem có hiểu hơn không nhé. bản thân mình thấy hiểu được kha khá về con trỏ rồi .
  • Phần mảng thì xem bài 23 và bài 24 và các bài tiếp theo nữa. Chắc có lẽ sẽ hiểu thêm nhiều đó.
  • Còn về phần giúp đỡ thì mình không dám vì mình cũng mới bắt đầu học như bạn thôi. Chia sẻ thì được >> Giúp đỡ thì nhờ các đại ca trên Dậy Nhau Học Ciếm Cơm là được mà.
buithaiminh viết 18:06 ngày 30/09/2018

@chauminh Những bạn mới học lập trình nên bắt đầu từ bài học đầu tiên phần C (ý kiến của riêng mình): Mục lục các bài học và bài viết hay

Sau mỗi bài học cần làm đi làm lại các bài tập liên quan đến bài học đó, cho đến khi nhuần nhuyễn rồi hẵng chuyển qua bài học kế tiếp. Học lập trình cần có thời gian, không thể một sớm một chiều được.

Để tìm bài tập và ví dụ hãy sử dụng Google và cần học thêm tiếng Anh cơ bản. Ví dụ: http://lmgtfy.com/?q=printf+in+c+example

Châu Minh viết 18:07 ngày 30/09/2018

Theo mình thì không nên học nhiều ngôn ngữ lập trình nếu mới học

ok tks you mình cố gắng ha

Nguyễn Minh Dũng viết 18:12 ngày 30/09/2018

Chính xác rồi @NotFound, thời gian đầu việc viết std::cout có thể hơi phiền hà vài dài dòng. Nhưng nhanh thôi, mình sẽ thấy được cái lợi của nó

  • Mình sẽ định hình rõ, hàm nào, thuộc namspace nào (ít ra cũng hiểu rõ hơi khái niệm namespace)
  • Tránh bị gọi nhầm hàm, cái này rất đau đầu khi debug
  • Code dễ đọc hơn, vì mình phân tách rõ, mình đang sử dụng namespace std hay namespace xxx

Cái này là kinh nghiệm của Đạt thôi, các bạn thấy mình sai thì nhắc mình nhé.

Bài liên quan
0