1.第一题
#include <iostream>
using namespace std;
int main()
{
char fn[20];
char ln[20];
char grade;
int age = 0;
cout << "What is your first name? ";
cin.getline(fn, 20);
cout << "What is your last name? ";
cin.getline(ln, 20);
cout << "What letter grade do you deserve? ";
cin >> grade;
cout << "What is your age?" ;
cin >> age;
cout << "Name: " << ln << ", " << fn << endl;
cout << "Grade: " << char(grade + 1) << endl;
cout << "Age: " << age << endl;
return 0;
}
考察的点有:
- 字符串的输入问题:getline()和get()函数的用法,我这里用的是getline()读取一行字符串,它通过换行符来确定行尾,并且不保存换行符,所以可以连续使用getline(),但是get()是不能连续使用的。
- char型和int型:char型实质上就是int型,所以对grade+1直接输出的话,输出的结果是整数值,而不是char型字符C。
结果图:
2. 第二题
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
string dessert;
cout << "Enter your name: " << endl;
getline(cin, name);
cout << "Enter your favorite dessert: " << endl;
getline(cin, dessert);
cout << "I have some delicious " << dessert;
cout << " for you, " << name << "." << endl;
return 0;
}
考察的点:
- string字符串的输入:因为istream类在string类还没出现之前就有了,其中的getline()只考虑了int,double等,没有考虑string,所以对于string字符串采用getline(cin,string变量名)的形式输入字符串。
结果图:
3. 第三题
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char fn[20];
char ln[20];
cout << "Enter your first name: ";
cin.getline(fn, 20);
cout << "Enter your first name: ";
cin.getline(ln, 20);
strcat_s(ln, ", ");
strcat_s(ln, fn);
cout << "Here's the information in a single string: " << ln << endl;
return 0;
}
这里要注意的是用strcat_s,不要用strcat! 微软在2005后建议用一系统所谓安全的函数,已经用strcat_s取代strcat了,其他的函数也是类似。
结果图:
4. 第四题
#include<iostream>
#include<string>
using namespace std;
int main()
{
string fn;
string ln;
cout << "Enter your first name: ";
getline(cin,fn);
cout << "Enter your first name: ";
getline(cin,ln);
string fulln = ln + ", " + fn;
cout << "Here's the information in a single string: " << fulln << endl;
return 0;
}
考察点:
string对象可以直接通过+进行字符串拼接。
结果图:
5. 第五题
#include <iostream>
#include <string>
using namespace std;
struct CandyBar
{
string name;
float weight;
int calorie;
};
int main()
{
CandyBar snack = { "Mocha Munch",2.3,350 };//初始化snack
cout << "snack的品牌:" << snack.name << endl;
cout << "snack的重量:" << snack.weight << endl;
cout << "snack的卡路里含量:" << snack.calorie << endl;
return 0;
}
考察点:使用句点运算符.来访问结构中的成员变量。
结果图:
6. 第六题
#include <iostream>
#include <string>
using namespace std;
struct CandyBar
{
string name;
float weight;
int calorie;
};
int main()
{
CandyBar arr[3] = { {"Dove",5.5,400},
{"UHA", 4.2, 210},
{"M&M", 2.2, 320}
};
for (int i = 0; i < 3; i++)
{
cout << "#" << i + 1 << ":" << endl;
cout << "品牌:" << arr[i].name << endl;
cout << "重量:" << arr[i].weight << endl;
cout << "卡路里含量:" << arr[i].calorie << endl;
}
return 0;
}
考察点:结构数组中每个元素都是一个结构,因此对于每个数据元素可以使用句点运算符来访问成员变量。
结果图:
7. 第七题
#include<iostream>
#include<string>
using namespace std;
struct Pizza
{
string name;
float dia;
float weight;
};
int main()
{
Pizza pizza;
cout << "请输入披萨公司的名称:";
getline(cin, pizza.name);
cout << "请输入披萨的直径:";
cin >> pizza.dia;
cout << "请输入披萨的重量:";
cin >> pizza.weight;
cout << endl<< "信息如下:" << endl;
cout << "披萨公司的名称:" << pizza.name << endl;
cout << "披萨的直径:" << pizza.dia << endl;
cout << "披萨的重量:" << pizza.weight << endl;
return 0;
}
结果图:
8. 第八题
#include<iostream>
#include<string>
using namespace std;
struct Pizza
{
string name;
float dia;
float weight;
};
int main()
{
Pizza *pizza = new Pizza;
cout << "请输入披萨的直径:";
cin >> pizza->dia;
cin.get();
cout << "请输入披萨公司的名称:";
getline(cin, pizza->name);
cout << "请输入披萨的重量:";
cin >> pizza->weight;
cout << endl << "信息如下:" << endl;
cout << "披萨公司的名称:" << pizza->name << endl;
cout << "披萨的直径:" << pizza->dia << endl;
cout << "披萨的重量:" << pizza->weight << endl;
delete pizza;
return 0;
}
考察点:
- 动态分配new要注意与delete成对使用,释放内存,避免造成内存泄漏!!!
- 动态内存分配时,分配的是地址,使用的是指针,因此访问结构成员变量时不能使用句点运算符了,而是要用箭头运算符。
- 之所以让我们先输入直径,考察的是输入数字再输入字符串的知识,要记住,先输入数字后,换行符仍保留在输入队列中,因此要用cin.get();跳过换行符读取字符串!
结果图:
9. 第九题
#include<iostream>
#include<string>
using namespace std;
struct CandyBar
{
string name;
float weight;
int calorie;
};
int main()
{
/*CandyBar arr[3] = { {"Dove",5.5,400},
{"UHA", 4.2, 210},
{"M&M", 2.2, 320}
};*/
CandyBar *arr = new CandyBar[3];
*arr = { "Dove",5.5,400 };
*(arr + 1) = { "UHA", 4.2, 210 };
*(arr + 2) = { "M&M", 2.2, 320 };
for (int i = 0; i < 3; i++)
{
cout << "#" << i + 1 << ":" << endl;
cout << "品牌:" << (arr+i)->name<< endl;
cout << "重量:" << (arr + i)->weight << endl;
cout << "卡路里含量:" << (arr + i)->calorie << endl;
}
delete[] arr;
return 0;
}
考察点:
- new要和delete成对使用,且这里是数组,要用delete[]
- 动态分配使用的是指针,注意这里要用箭头运算符访问成员变量。
结果图:
10. 第十题
#include<iostream>
#include<array>
using namespace std;
int main()
{
array<double, 3> grades;
double avg = 0;
for (int i = 0; i < 3; i++)
{
cout << "请输入第" << i + 1 << "次40米跑的成绩:";
cin >> grades[i];
}
for (int i = 0; i < 3; i++)
{
double total = 0;
total = total + grades[i];
avg = total / 3;
}
cout << "平均成绩为:" << avg << endl;
return 0;
}
考察点:
- array模板的使用:定义以及访问array数组元素的方法
结果图: