- 第一题:
题目应该是直接输出,没有要求用户自己输入,不过我这里使用用户自己输入,并使用了两种读取行的函数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
- 第二题
重点考察string的I/O操作,使用getline输入和直接cout输出。
#include <iostream>
#include <string>
using namespace std;
int main() {
string name;
string dessert;
cout << "Enter your name:
";
getline(cin, name);
cout << "Enter your favorite dessert:
";
getline(cin, dessert);
cout << "Enter your name:
";
cout << name << endl;
cout << "Enter your favorite dessert:
";
cout << dessert << endl;
cout << "I have some delicious " << dessert << " for you, " << name << ".
";
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.
- 第三题
考察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
- 第四题
第三题的换用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
- 第五题
考察结构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
- 第六题
考察结构数组,输出的时候使用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:
";
cout << snack[0].project << endl;
cout << snack[0].weight << endl;
cout << snack[0].power << endl;
cout << "Second snack:
";
cout << snack[1].project << endl;
cout << snack[1].weight << endl;
cout << snack[1].power << endl;
cout << "Third snack:
";
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
- 第七题
如果结构中使用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
- 第八题
这里就将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
- 第九题
使用了数组表示法和指针表示法输出。
#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:
";
cout << snack[0].project << endl;
cout << snack[0].weight << endl;
cout << snack[0].power << endl;
cout << "Second snack:
";
cout << (snack+1)->project << endl;
cout << (snack+1)->weight << endl;
cout << (snack+1)->power << endl;
cout << "Third snack:
";
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
- 第十题
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