4.13程式設計練習
阿新 • • 發佈:2021-01-28
技術標籤:C++ Primer Plusc++
- 第一題:
題目應該是直接輸出,沒有要求使用者自己輸入,不過我這裡使用使用者自己輸入,並使用了兩種讀取行的函式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:\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.
- 第三題
考察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:\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
- 第七題
如果結構中使用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:\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
- 第十題
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