4.13编程练习

  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
posted @ 2021-01-27 18:21  小Aer  阅读(79)  评论(0编辑  收藏  举报