2012年北理计算机复试上机

题目来源:https://blog.csdn.net/u014552756/article/details/55510814

代码原创

1.数字排序

#include<bits/stdc++.h>
using namespace std;
bool cmp(long long a, long long b){
	return a < b;
}
int main(){
	long long a[10];
	for(int i = 0; i < 10; i++){
		cin>>a[i];
		cin.get();
	}
	sort(a,a+10,cmp);
	for(int i = 0; i < 9; i++){
		cout << a[i] << ","; 
	}
	cout<<a[9]<<endl;
	return 0;
}

在这里插入图片描述
2.学生信息插入删除

#include<bits/stdc++.h>
using namespace std;
struct stu{
	int num;
	string name;
	char sex;
	int old; 
};
vector<stu> lst;
void inialize(){
	stu tmp;
	tmp.num = 10;
	tmp.name = "wes";
	tmp.sex = 'f';
	tmp.old = 23;
	lst.push_back(tmp);
	tmp.num = 20;
	tmp.name = "ert";
	tmp.sex = 'f';
	tmp.old = 45;
	lst.push_back(tmp);
	tmp.num = 30;
	tmp.name = "str";
	tmp.sex = 't';
	tmp.old = 89;
	lst.push_back(tmp);	
}
void del(int num){
	for(int i = 0; i < lst.size(); i++){
		if(lst[i].num == num){
			lst.erase(lst.begin() + i);
		}
	}
	return ;
}
bool cmp(stu a, stu b){
	return a.num > b.num;
}
int main(){
	inialize();
	string s;
	while(getline(cin,s)){
		char buf[50];
		for(int i = 0; i < s.size(); i++){
			if(s[i] == ' '){
				s.erase(s.begin()+i);
			}else{
				buf[i] = s[i];
			}
		}
		stu tmp;
		char op = buf[0];
		if(op == 'D'){
			sscanf(buf+1,"%d",&tmp.num);
			del(tmp.num);	
		}else{
			char t_name[40];
			char *p = strtok(buf+1,",");
			sscanf(p,"%d",&tmp.num);
			//cout << tmp.num << endl;
			p = strtok(NULL,",");
			sscanf(p,"%s",t_name);
			tmp.name = t_name;
			//cout << tmp.name << endl;
			p = strtok(NULL,",");
			sscanf(p,"%c",&tmp.sex);
			p = strtok(NULL,",");
			sscanf(p,"%d",&tmp.old);
			p = strtok(NULL,",");
			lst.push_back(tmp);
		}
		sort(lst.begin(),lst.end(),cmp);
		for(int i = 0; i < lst.size()-1; i++){
			cout << "(" << lst[i].num <<","<<lst[i].name
				<<","<<lst[i].sex<<","<<lst[i].old<<"),";
		}
		cout << "(" << lst[lst.size()-1].num <<","<<lst[lst.size()-1].name
			<<","<<lst[lst.size()-1].sex<<","<<lst[lst.size()-1].old<<")"<<endl;
	}
	
	return 0;
}


3.后序中序求先序

#include<bits/stdc++.h>
using namespace std;
void toPre(string post, string mid, string &pre){
	//cout << post <<" "<<mid<<" "<<pre<<endl;
	if(post.size() == 1){
		pre += post[0];
		return;
	}
	for(int i = 0; i < mid.size(); i++){
		if(mid[i] == post[post.size()-1]){
			pre += mid[i];
	 		toPre(post.substr(0,i), mid.substr(0,i),pre);
	 		toPre(post.substr(i, post.size() - i -1), mid.substr(i + 1), pre);
	 		break;
		}
	}
}
int main(){
	string post, mid, pre;
	cin >> post >> mid;
	toPre(post, mid, pre);
	cout << pre << endl;
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值