北京理工大学复试上机--2008
1、存储一组姓名,如Apple Tom Green Jack要求能排序、按字母顺序插入、并显示。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string s;
vector<string> v;
while(cin >> s) {
v.push_back(s);
if(getchar() == '\n') {//使用if是为了可以输入多组
sort(v.begin(), v.end());
for(int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
v.clear();
}
}
return 0;
}
2、输入文件名及路径创建该文件,并把从键盘输入的内容保存到该文件,最后将该文件的路径、该文件名及文件中的内容输出到屏幕。
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int main() {
string name, path;
cin >> name >> path;
ofstream outfile;
outfile.open(path + name);
cout << "请输入要保存的内容:" << endl;
string str;
while (getline(cin, str)) {
outfile << str << endl;
}
outfile.close();
fstream infile(path + name);
cout << "Path: " << path << endl << "Name: " << name << endl;
while(getline(infile, str)) {
cout << str << endl;
}//输出的第一行总有空格 不知为啥??
return 0;
}
3、设计捕获两种不同类型的异常,一个是被0除,另一个是数组越界。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
double division(int a, int b) {
if (b == 0) {
throw "0不能做除数";
}
return (a / b);
}
void err(int i, int n, int num, int a[]) {
if(i > n) {
throw "数组越界";
}
else a[i] = num;
}
int main() {
int a, b;
cout << "输入被除数和除数:";
cin >> a >> b;
try {
cout << division(a, b) << endl;
}
catch(const char* msg) {
cout << msg << endl;
}
cout << "输入数组长度:";
int n, num, i = 0;
cin >> n;
int arr[n];
while(cin >> num) {
try {
arr[i++] = num;
if(i > n) throw "数组越界";
}
catch(const char* e) {
cout << e << endl;
}
}
return 0;
}
PS:这个捕获异常,我尽力了 不懂!!!!T_T T_T
4、设计一个程序能计算一个日期加上若干天后是什么日期。
输入: 输入四个整数分别表示年月日和累加的天数。
输出: 按yyyy-mm-dd的形式输出。
2008 2 3 100 2008-05-13
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int year, month, day, add;
while(cin >> year >> month >> day >> add) {
int nday;
while(add > 0) {
nday = day + add;
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
switch(month) {
case 1 : add -= 31 - day; break;
case 2 : add -= 29 - day; break;
case 3 : add -= 31 - day; break;
case 4 : add -= 30 - day; break;
case 5 : add -= 31 - day; break;
case 6 : add -= 30 - day; break;
case 7 : add -= 31 - day; break;
case 8 : add -= 31 - day; break;
case 9 : add -= 30 - day; break;
case 10 : add -= 31 - day; break;
case 11 : add -= 30 - day; break;
case 12 : add -= 31 - day; break;
}
if(add > 0) {
month++;
day = 0;
}
if(month > 12) {
year++;
month = 1;
}
}
else {
switch(month) {
case 1 : add -= 31 - day; break;
case 2 : add -= 28 - day; break;
case 3 : add -= 31 - day; break;
case 4 : add -= 30 - day; break;
case 5 : add -= 31 - day; break;
case 6 : add -= 30 - day; break;
case 7 : add -= 31 - day; break;
case 8 : add -= 31 - day; break;
case 9 : add -= 30 - day; break;
case 10 : add -= 31 - day; break;
case 11 : add -= 30 - day; break;
case 12 : add -= 31 - day; break;
}
if(add > 0) {
month++;
day = 0;
}
if(month > 12) {
year++;
month = 1;
}
}
}
printf("%d-%02d-%02d\n", year, month, nday);
}
return 0;
}