1. 程式人生 > 其它 >4.13程式設計練習

4.13程式設計練習

技術標籤:C++ Primer Plusc++

  1. 第一題:
    題目應該是直接輸出,沒有要求使用者自己輸入,不過我這裡使用使用者自己輸入,並使用了兩種讀取行的函式get和getline。
#include <iostream>
using namespace std;

int main() {

    char first_name[20];
    char last_name[20];
    char grade;
    int age;
    cout << "What is your first name?";
    cin.get
(first_name, 20).get(); cout << "What is your last name?"; cin.getline(last_name, 20); cout << "what letter grade do you deserve?"; cin >> grade; cout << "What is your age?"; cin >> age; cout << "Name: "
<< last_name << ", " << first_name << endl; cout << "Grade: "; grade = grade + 1; cout.put(grade); cout << endl; cout << "Age: " << age << endl; return 0; }

執行結果:

What is your first name?Betty Sue
What is your last name?
Yewe what letter grade do you deserve?B What is your age?22 Name: Yewe, Betty Sue Grade: C Age: 22
  1. 第二題
    重點考察string的I/O操作,使用getline輸入和直接cout輸出。
#include <iostream>
#include <string>
using namespace std;

int main() {

    string name;
    string dessert;

    cout << "Enter your name:\n";
    getline(cin, name);
    cout << "Enter your favorite dessert:\n";
    getline(cin, dessert);
    cout << "Enter your name: \n";
    cout << name << endl;
    cout << "Enter your favorite dessert:\n";
    cout << dessert << endl;
    cout << "I have some delicious " << dessert << " for you, " << name << ".\n";


    return 0;
}

執行結果:

Enter your name:
Dirk Hammernose
Enter your favorite dessert:
Radish Torte
Enter your name:
Dirk Hammernose
Enter your favorite dessert:
Radish Torte
I have some delicious Radish Torte for you, Dirk Hammernose.
  1. 第三題
    考察strcat函式。
#include <iostream>
#include <cstring>
using namespace std;

int main() {

    char first_name[20];
    char last_name[20];
    cout << "Enter your first name:";
    cin >> first_name;
    cout << "Enter your last name:";
    cin >> last_name;
    strcat(last_name, ", ");
    strcat(last_name, first_name);
    cout << "Here's the information in a single string: " << last_name << endl;

    return 0;
}

執行結果:

Enter your first name:Flip
Enter your last name:Fleming
Here's the information in a single string: Fleming, Flip
  1. 第四題
    第三題的換用string做。
#include <iostream>
#include <string>
using namespace std;

int main() {

    string first_name;
    string last_name;
    cout << "Enter your first name:";
    cin >> first_name;
    cout << "Enter your last name:";
    cin >> last_name;
    last_name = last_name + ", " + first_name;
    cout << "Here's the information in a single string: " << last_name << endl;

    return 0;
}

執行結果:

Enter your first name:Flip
Enter your last name:Fleming
Here's the information in a single string: Fleming, Flip
  1. 第五題
    考察結構struct。
#include <iostream>
using namespace std;
struct CandyBar
{
    char project[20];
    float weight;
    int power;
};

int main() {

    CandyBar snack =
            {
                "Mocha Munch",
                2.3,
                350
            };
    cout << snack.project << endl;
    cout << snack.weight << endl;
    cout << snack.power << endl;

    return 0;
}

執行結果:

Mocha Munch
2.3
350
  1. 第六題
    考察結構陣列,輸出的時候使用for迴圈會更好,但按教材順序來做,先不使用for迴圈。
#include <iostream>
using namespace std;
struct CandyBar
{
    char project[20];
    float weight;
    int power;
};

int main() {

    CandyBar snack[3] =
            {
                {"Mocha Munch",2.3,350},
                {"Bambi", 2.0, 330},
                {"Godzilla", 2.1, 340}
            };
    cout << "First snack:\n";
    cout << snack[0].project << endl;
    cout << snack[0].weight << endl;
    cout << snack[0].power << endl;
    cout << "Second snack:\n";
    cout << snack[1].project << endl;
    cout << snack[1].weight << endl;
    cout << snack[1].power << endl;
    cout << "Third snack:\n";
    cout << snack[2].project << endl;
    cout << snack[2].weight << endl;
    cout << snack[2].power << endl;

    return 0;
}

執行結構:

First snack:
Mocha Munch
2.3
350
Second snack:
Bambi
2
330
Third snack:
Godzilla
2.1
340
  1. 第七題
    如果結構中使用char定義字串char name[20],那麼在輸入的時候需要將getline(cin, snack.name)改成cin.getline(snack.name, 20)或者cin.get(snack.name, 20).get()。
#include <iostream>
#include <string>
using namespace std;
struct CandyBar
{
    string name;
    float length;
    float weight;
};

int main() {

    CandyBar snack;
    cout << "Enter name:";
    getline(cin, snack.name);
    cout << "Enter length:";
    cin >> snack.length;
    cout << "Enter weight:";
    cin >> snack.weight;
    cout << snack.name << endl;
    cout << snack.length << endl;
    cout << snack.weight << endl;

    return 0;
}

執行結果:

Enter name:William Wingate
Enter length:2.0
Enter weight:1.0
William Wingate
2
1
  1. 第八題
    這裡就將string換成char,算是解答第七題另外一種方法,並使用了new來建立結構變數,記得最後使用delete釋放記憶體。
#include <iostream>
using namespace std;
struct CandyBar
{
    char name[20];
    float length;
    float weight;
};

int main() {

    CandyBar* snack = new CandyBar;
    cout << "Enter name:";
    cin.get(snack->name, 20).get();
    cout << "Enter length:";
    cin >> snack->length;
    cout << "Enter weight:";
    cin >> snack->weight;
    cout << snack->name << endl;
    cout << snack->length << endl;
    cout << snack->weight << endl;
    delete snack;

    return 0;
}

執行結構:

Enter name:William Wingate
Enter length:2.0
Enter weight:1.0
William Wingate
2
1
  1. 第九題
    使用了陣列表示法和指標表示法輸出。
#include <iostream>
using namespace std;
struct CandyBar
{
    char project[20];
    float weight;
    int power;
};

int main() {

    CandyBar* snack = new CandyBar[3]
            {
                    {"Mocha Munch",2.3,350},
                    {"Bambi", 2.0, 330},
                    {"Godzilla", 2.1, 340}
            };
    cout << "First snack:\n";
    cout << snack[0].project << endl;
    cout << snack[0].weight << endl;
    cout << snack[0].power << endl;
    cout << "Second snack:\n";
    cout << (snack+1)->project << endl;
    cout << (snack+1)->weight << endl;
    cout << (snack+1)->power << endl;
    cout << "Third snack:\n";
    cout << snack[2].project << endl;
    cout << snack[2].weight << endl;
    cout << snack[2].power << endl;
    delete [] snack;

    return 0;
}

執行結果:

First snack:
Mocha Munch
2.3
350
Second snack:
Bambi
2
330
Third snack:
Godzilla
2.1
340
  1. 第十題
    array<float, 3> grade{}因為我編譯器的原因最後加上了{},書上介紹的並沒有加{},如果你要執行,視你自己的編譯器為準。
#include <iostream>
#include <array>
using namespace std;


int main() {

    array<float, 3> grade{};
    float avg;
    cout << "Enter first grade:";
    cin >> grade[1];
    cout << "Enter second grade:";
    cin >> grade[2];
    cout << "Enter third grade:";
    cin >> grade[3];
    avg = (grade[1] + grade[2] + grade[3]) / 3;
    cout << avg << endl;

    return 0;
}

執行結果:

Enter first grade:2.4
Enter second grade:2.5
Enter third grade:2.6
2.5