C++ Primer Plus 课后练习 - 第四章

个人练习,仅供参考,欢迎大家提出意见,指出错误!喜欢的点个赞吧!

Practice 1

//请求输入名字,成绩,年龄等,并输出(需要向下调整成绩)

#include <iostream>

int main()
{
  using namespace std;

  char first_name[20];
  char last_name[20];
  char grade;
  int age = 0;
  cout << "What is your first name?" << endl;
  cin >> first_name;
  cout << "What is your last name?" << endl;
  cin >> last_name;
  cout << "What letter grade do you deserve?" << endl;
  cin >> grade;
  cout << "What is your age?" << endl;
  cin >> age;

  char next_grade = grade + 1;  
  //grade自增1即可获得下个字母的ASCII码,将其赋给char即可获得相应字符
  //若直接输出 grade+1 会输出该ASCII码

  cout << "Name: " << last_name << ", " << first_name << endl;
  cout << "Grade: " << next_grade << endl;
  cout << "Age: " << age << endl;
  return 0;
  
}

Practice 2

//使用 string 类完成练习1

#include <iostream>
#include <string>

int main()
{
  using namespace std;

  string first_name, last_name;
  char grade;
  int age = 0;

  cout << "What is your first name?" << endl;
  getline(cin, first_name);
  cout << "What is your last name?" << endl;
  getline(cin, last_name);
  cout << "What letter grade do you deserve?" << endl;
  cin >> grade;
  cout << "What is your age?" << endl;
  cin >> age;

  grade ++; //与上题不同,这里用了自增运算符达到同样的效果

  cout << "Name: " << last_name << ", " << first_name << endl;
  cout << "Grade: " << grade << endl;
  cout << "Age: " << age << endl;
  return 0;
}

Practice 3

//使用 char 数组和 cstring 头文件进行字符串拼接

#include <iostream>
#include <cstring>

int main()
{
  using namespace std;

  char first_name[20];
  char last_name[20];
  char full_name[45] = ""; 
  //踩坑:一定要初始化,否则输出结果不正确
  const char link[3] = ", ";

  cout << "Enter first name: " << endl;
  cin >> first_name;

  cout << "Enter last name: " << endl;
  cin >> last_name;

  strcat(full_name, first_name);
  strcat(full_name, link);
  strcat(full_name, last_name);

  cout << "Full name is" << full_name << endl;
  return 0;
}

Practice 4

//使用 string 对象和 string 头文件实现上题

#include <iostream>
#include <string>

int main()
{
  using namespace std;

  string first_name = "";
  string last_name = "";
  string link = ", ";
  cout << "Enter your first name:" << endl;
  getline(cin, first_name);
  cout << "Enter your last name:" << endl;
  getline(cin, last_name);

  string full_name = first_name + link + last_name;

  cout << "Your full name is: " << full_name << endl;
}

Practice 5

//声明一个结构并初始化之

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
  string band;
  double weight;
  int cal;
};

int main()
{
  CandyBar snack = {
    "Mocha Munch",
    2.3,
    350
  };

  cout << snack.band << endl << snack.weight << endl << snack.cal << endl;
  return 0;
}

Practice 6

//声明一个结构数组并初始化之

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
  string band;
  double weight;
  int cal;
};

int main()
{

  CandyBar snacks[3] = {
    {
      "Mocha Munch A",
      2.3,
      350
    },
    {
      "Mocha Munch",
      2.311,
      350
    },
    {
      "Mocha Munch",
      2.3,
      550
    },
  };

  cout << snacks[0].band << endl << snacks[1].weight << endl << snacks[2].cal << endl;
  return 0;
}

Practice 7

//声明一个结构并初始化

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
  string band;
  double weight;
  int cal;
};

int main()
{
  CandyBar snack;

  cout << "Enter band: " << endl;
  getline(cin, snack.band);

  cout << "Enter weight: " << endl;
  cin >> snack.weight;

  cout << "Enter cal: " << endl;
  cin >> snack.cal;

  cout << snack.band << endl << snack.weight << endl << snack.cal << endl;
  return 0;
}

Practice 8

//使用 new 生成一个结构数组并初始化

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
  string band;
  double weight;
  int cal;
};

int main()
{
  CandyBar* snack = new CandyBar;

  cout << "Enter weight: " << endl;
  (cin >> snack -> weight).get(); // 混合输入数字和面向行的字符串会导致问题,需要再进行一次 get()

  cout << "Enter band: " << endl;
  getline(cin, snack -> band);


  cout << "Enter cal: " << endl;
  cin >> snack -> cal;

  cout << snack -> band << endl << snack -> weight << endl << snack -> cal << endl;
  return 0;
}

Practice 9

//使用 new 生成一个结构数组并初始化之

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
  string band;
  double weight;
  int cal;
};

int main()
{

  CandyBar* snacks = new CandyBar [3];

  snacks[0] = {
      "Mocha Munch A",
      2.3,
      350
  };

  snacks[1] = {
      "Mocha Munch A",
      2.3111,
      350
  };

  snacks[2] = {
      "Mocha Munch A",
      2.3111,
      550
  };

  cout << snacks[0].band << endl << snacks[1].weight << endl << snacks[2].cal << endl;
  return 0;
}

Practice 10

//使用 array 对象创建数组并存入数据

#include <iostream>
#include <array>

int main()
{
  using namespace std;
  array<double, 3> grades;
  cout << "Enter three grades:" << endl;

  double sum = 0;

  for(int i = 0; i < 3; i++){
    cin >> grades[i];
    sum += grades[i];
  }

  cout << "Times: " << 3 << endl << "Average: " << (sum / 3) << endl;
  return 0;

}

欢迎访问 Github 仓库地址

阅读 246

推荐阅读

学习与共同学习

0 人关注
9 篇文章
专栏主页