1.input.txt文件里面有一段文章,由字符串和一些特殊字符构成。先把 input文件中的内容读入缓冲区,在从缓冲区中取字符,进行如下操作:
- 如果是字符,空格,输出
- 如果是’!’,删除前面一个字符
- 如果是’*’,删除前面 1行字符串
- 如果是’>’,讲前面一个单词的首字符,进行大小写转化
- 如果是数字,则不作任何操作
#include<iostream>
#include<fstream>
#include<vector>
#include<sstream>
using namespace std;
vector<string> v;
int main(){
ifstream infile("in.txt");
string s;
while(getline(infile,s)){
v.push_back(s);
}
for(int i=0;i<v.size();i++){
s=v[i];
if(s.find('!')!=string::npos){
int pos=s.find("!");
v[i]=s.substr(0,pos-1)+s.substr(pos);
}
if(s.find('*')!=string::npos){
if(i==0) cout<<"已在第一行无法删除";
else{
v.erase(v.begin()+i-1,v.begin()+i);
i--;
}
}
if(s.find('>')!=string::npos){
int pos=s.find('>');
string s1=s.substr(0,pos);//>前面的字符串
s1=s1.substr(0,s1.find_last_of(" "));
int pos1=s1.find(" ");//>的前一个单词前面的空格位置
string c=s.substr(pos1+1,1);
if(c[0]>'a'&&c[0]<'z') c[0]=c[0]-32;
else c[0]=c[0]+32;
//cout<<"字母"<<c<<endl;
s.replace(pos1+1,1,(char*)c.data());
v[i]=s;
}
}
for(int i=0;i<v.size();i++){
cout<<v[i]<<endl;
}
infile.close();
}
2.从键盘输入 N,建立 N*N矩阵,每个元素是一个字符串,为每个元素赋值。然后求出按字典序排列最大的元素所在的行列
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<cstdio>
using namespace std;
const int MAXN=100;
struct M{//为了排序方便,将矩阵化成一维处理
char s[MAXN];
int i,j;
bool operator <(const M &e) const{
if(strcmp(s,e.s)<0) return true;
else return false;
}
}M[MAXN];
int main(){
int N;
cin>>N;
int k=0;//M中的下标
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
scanf("%s",M[k].s);
M[k].i=i;
M[k].j=j;
k++;
}
}
sort(M,M+N*N);
cout<<M[N*N-1].i+1<<" "<<M[N*N-1].j+1<<endl;
}
3.已知二叉排序树用二叉链表存储,结点的关键字为 1正整数。从键盘输入结点的关键字(以 0表示结束)建立一棵二叉排序树,并输出其后序遍历序列
#include<iostream>
#include<vector>
using namespace std;
vector<int> v;
struct TreeNode{
int data;
TreeNode* left;
TreeNode* right;
TreeNode(int data):data(data),left(NULL),right(NULL){}
};
//x插入到以root为根结点的排序树中,从根结点不断的向下比
TreeNode* Insert(TreeNode* root,int n){
if(root==NULL) root=new TreeNode(n);
else if(n<root->data) root->left=Insert(root->left,n);
else if(n>root->data) root->right=Insert(root->right,n);
return root;
}
void PostOrder(TreeNode* root){
if(root==NULL) return ;
PostOrder(root->left);
PostOrder(root->right);
cout<<root->data<<" ";
}
int main(){
int n;
TreeNode* root=NULL;
while(cin>>n){
if(n==0) break;
else root=Insert(root,n);
}
PostOrder(root);
}