#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <string>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <stack>
using namespace std;
#define maxSize 101
实现字符串的逆转 P194 例6.1
//
//void reverse(char *s)
//{
// int len=strlen(s);
// for(int i=0;i<=len/2;i++)
// {
// char t;
// t=*(s+i);
// *(s+i)=*(s+len-1-i);
// *(s+len-i-1)=t;
// }
//}
//
//int strlen(char *s)
//{
// int len=0;
// while(*(s++))
// {
// len++;
// }
// return len;
//}
//int main()
//{
// char ch[maxSize];
// cin>>ch;
// reverse(ch);
// //cout<<strlen(ch);
// cout<<ch;
//}
//
将数组中的元素重新排列,以满足所有的偶数在前,奇数在后 P203 例6.7
//void Exchange(int *arr,int n)
//{
// int i=0;
// int j=n-1;
// while(i<j)
// {
// while(i<j&&*(arr+i)%2==0)
// {
// i++;
// }
// while(i<j&&*(arr+j)%2==1)
// {
// j--;
// }
// int t;
// t=*(arr+i);
// *(arr+i)=*(arr+j);
// *(arr+j)=t;
// }
//}
//int main()
//{
// int n;
// cin>>n;
// int arr[maxSize];
// for(int i=0;i<n;i++)
// cin>>arr[i];
// Exchange(arr,n);
// for(int i=0;i<n;i++)
// cout<<*(arr+i)<<" ";
//}
//
//13
//20 21 43 32 24 21 55 56 54 43 47 49 30
//20 30 54 32 24 56 55 21 43 43 47 49 21
//
用指针变量输出二维数组的值 P205 例6.8
//int main()
//{
// int arr[3][4]={
// 2,4,6,8,
// 10,12,14,16,
// 18,20,22,24};
// int *p;
// p=arr[0]; //或p=*a;
// for(int i=1;i<=12;i++)
// {
// cout<<*(p+i-1)<<" ";
// if(i%4==0)
// cout<<endl;
// }
//}
//
输出二维数组任意元素的值 P206 例6.9
//int main()
//{
// int a[3][4]={
// 1,3,5,7,
// 9,11,13,15,
// 17,19,21,23,
// };
// int x,y;
// cin>>x>>y;
// cout<<*(*(a+x)+y)<<endl;
//}
//
把字符串t复制到字符串s中 P207 6.10
//int main()
//{
// char t[maxSize],s[maxSize];
// cin>>t;
// for(int i=0;*(t+i)!=0;i++)
// {
// *(s+i)=*(t+i);
// }
// cout<<s<<endl;
//}
//
比较两个字符串的函数 P208 6.11
//int strcmp(char *s,char *t)
//{
// int len1=strlen(s);
// int len2=strlen(t);
// if(len1!=len2)
// return 1; //两个字符串不相同
// for(int i=0;i<len1;i++)
// {
// if(*(s+i)!=*(t+i))
// {
// return 1;
// }
// }
// return 0;
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// char ch1[maxSize],ch2[maxSize];
// cin>>ch1>>ch2;
// int d=strcmp(ch1,ch2);
// if(d==1)
// cout<<"两个字符不相同"<<endl;
// else
// cout<<"两个字符相同"<<endl;
//}
//
将输入的字符串输出,直到输入的字符串为end P209 6.12
//int strcmp(char *s,char *t)
//{
// int len1=strlen(s);
// int len2=strlen(t);
// if(len1!=len2)
// return 1; //两个字符串不相同
// for(int i=0;i<len1;i++)
// {
// if(*(s+i)!=*(t+i))
// {
// return 1;
// }
// }
// return 0;
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// while(1)
// {
// char ch1[maxSize],ch2[maxSize];
// cin>>ch1;
// if(strcmp(ch1,"end")==0)
// break;
// cin>>ch2;
// cout<<ch1<<endl;
// cout<<ch2<<endl;
// }
//}
//
找到字符在字符串中首次出现的位置 P213 6.15
//int main()
//{
// char ch[maxSize];
// char t;
// cin>>ch;
// cin>>t;
// int flag=0;
// for(int i=0;*(ch+i)!=0;i++)
// {
// if(*(ch+i)==t)
// {
// cout<<i<<endl;
// flag=1;
// }
// }
// if(flag==0)
// cout<<"no match found!"<<endl;
//}
//
编写字符串连接函数 P214 6.16
//char *strcat(char *str1,char *str2)
//{
// int k=0;
// for(int i=0;*(str1+i)!=0;i++)
// k=i;
// cout<<k<<endl;
// for(int i=0;*(str2+i)!=0;i++)
// {
// *(str1+k+1+i)=*(str2+i);
// }
// return str1;
//}
//int main()
//{
// char str1[maxSize];
// char str2[maxSize];
// cin>>str1>>str2;
// char *p=str1; //必须要申请一个指针!!因为函数返回一个地址!!
// p=strcat(str1,str2);
// for(int i=0;*(p+i)!=0;i++)
// cout<<*(p+i);
//}
//
根据星期数返回星期英文 P215 6.17
//char week[9][maxSize]={"0","Monday","Tuesday","Wednsday","Thursday","Friday","Saturday","Sunday"}; //注意是申请二维数组!
//int main()
//{
// int s;
// cin>>s;
// cout<<week[s]<<endl;
//}
//
将一批字符数组排序 P216 6.18
//void sort(char *a[],int n)
//{
// for(int i=n-1;i>0;i--)
// {
// for(int j=1;j<=i;j++)
// {
// if(strcmp(a[j-1],a[j])>0)
// {
// char *s=a[j-1];
// a[j-1]=a[j];
// a[j]=s;
// }
// }
// }
//}
//int main()
//{
// char *book[maxSize]={"FoxBase","ORACLE","PASCL Language","Windows","DBase","C Language"};
// sort(book,6);
// for(int i=0;i<6;i++)
// cout<<book[i]<<endl;
//}
//
找出给定的字符串开头的所有单词 P218
//void Search(char *words[],char *pattern,int n)
//{
// int len=strlen(pattern);
// int cnt;
// for(int i=0;i<n;i++)
// {
// cnt=0;
// for(int j=0;j<len;j++)
// {
// if(*(*(words+i)+j)!=*(pattern+j))
// {
// break;
// }
// else
// {
// cnt++;
// }
// }
// if(cnt==len)
// {
// cout<<*(words+i)<<endl;
// }
// }
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
查找以给定的字符串开头的所有单词 //P218 6.20
//int main()
//{
// char *words[maxSize]={"the","triacetin","triangle","triable","trail","triable"};
// Search(words,"tri",6);
//}
//
顺序查找 P220 6.21
//int Search(int *a,int n,int d)
//{
// int i;
// for(i=0;i<n;i++)
// {
// if(*(a+i)==d)
// {
// return i;
// }
// }
// return -1;
//}
//int main()
//{
// int n,d,d0,a[maxSize];
// cin>>n>>d0;
// for(int i=0;i<n;i++)
// {
// cin>>a[i];
// }
// d=Search(a,n,d0);
// if(d!=-1)
// cout<<d<<endl;
// else
// cout<<"not found!"<<endl;
//}
//
折半查找字符串 P220 6.22
//int Search(char *a[],int n,char *d) //注意折半查找的数组必须顺序排列!!!
//{
// int low=0;
// int high=n-1;
// int mid;
// while(low<high)
// {
// mid=low+(high-low)/2;
// cout<<*(a+mid)<<endl;
// if(strcmp(*(a+mid),d)==0)
// {
// return mid;
// }
// else if(strcmp(*(a+mid),d)<0)
// {
// low=mid+1;
// }
// else if(strcmp(*(a+mid),d)>0)
// {
// high=mid-1;
// }
// }
// return -1;
//}
//int main()
//{
// int n;
// char d[maxSize];
// char *a[maxSize]={"dfd","dfg","gdfg","ghj","zcx"};
// cin>>n;
// cin>>d;
// int s=Search(a,n,d);
// if(s!=-1)
// cout<<s<<endl;
// else
// cout<<"not found!"<<endl;
//}
//
//
将秒转化为小时、分钟、秒 P221
//void Transfer(int s,int &h0,int &m0,int &s0)
//{
// h0=s/3600;
// m0=(s-h0*3600)/60;
// s0=s-h0*3600-m0*60;
//}
//int main()
//{
// int s;
// cin>>s;
// int h0,m0,s0;
// Transfer(s,h0,m0,s0);
// cout<<h0<<" "<<m0<<" "<<s0<<endl;
//}
//
用选择排序法对10个整数排序 P222 6.24
//void SelectSort(int a[],int n)
//{
// for(int i=0;i<n-1;i++)
// {
// int min=a[i];
// int minp=i;
// for(int j=i+1;j<n;j++)
// {
// if(a[j]<min)
// {
// min=a[j];
// minp=j;
// }
// }
// if(minp!=i)
// {
// int t=a[i];
// a[i]=a[minp];
// a[minp]=t;
// }
// }
//}
//int main()
//{
// int n;
// cin>>n;
// int a[maxSize];
// for(int i=0;i<n;i++)
// cin>>a[i];
// SelectSort(a,n);
// for(int i=0;i<n;i++)
// cout<<a[i]<<" ";
//}
//
由命令行参数实现累加或累乘 P224 6.26
//int sum(int n)
//{
// int s=0;
// for(int i=1;i<=n;i++)
// s+=i;
// return s;
//}
//int multi(int n)
//{
// int s=1;
// for(int i=1;i<=n;i++)
// s*=i;
// return s;
//}
//int main()
//{
// int n,d;
// char c;
// cin>>n>>c;
// if(c=='+')
// {
// d=sum(n);
// }
// else if(c=='*')
// {
// d=multi(n);
// }
// cout<<d<<endl;
//}
//*/
//
//
225例6.27
//int getlen(char s[])
//{
// int cnt=0;
// for(int i=0;s[i]!='\0';i++)
// cnt++;
// return cnt;
//}
//void encode(char s[])
//{
// int len=strlen(s);
// char t[101];
// int i=0;
// int j=0;
// while(i<len)
// {
// if(s[i]-'0'>=0&&s[i]-'0'<=9&&i!=len-1)
// {
// char c=s[i+1];
// int k=s[i]-'0'+1;
// while(k)
// {
// t[j]=c;
// j++;
// k--;
// }
// i++;
// }
// else
// {
// t[j++]=s[i];
// }
// i++;
// t[j++]='_';
// }
// cout<<t<<endl;
//}
//void decode(char s[])
//{
// int i=0;
// int len=strlen(s);
// char t[101];
// int j=0;
// while(i<len)
// {
// char c=s[i];
// int cnt=0;
// while(s[i]==c)
// {
// i++;
// cnt++;
// }
// if(cnt>1)
// {
// t[j++]=cnt+'0'-1;
// }
// t[j++]=c;
// if(s[i]=='_')
// i++;
//
// }
// for(int i=0;i<j;i++)
// cout<<t[i];
//}
//int main()
//{
// char s[101];
// cin>>s;
// encode(s);
// decode(s);
//}
//
查找字符串s2在s1中第一次出现的位置 P228 4
//int Search(char *s1,char *s2)
//{
// int i=0,j=0;
// int d=i;
// int len1=strlen(s1);
// int len2=strlen(s2);
// while(i<len1)
// {
// while(j<len2)
// {
// if(*(s2+j)==*(s1+i))
// {
// i++;
// j++;
// }
// else
// {
// break;
// }
// }
// if(j==len2)
// {
// return i-j;
// }
// else
// {
// j=0;
// i=++d;
// }
// }
// return -1;
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// {
// len++;
// }
// return len;
//}
//int main()
//{
// char s1[maxSize];
// char s2[maxSize];
// cin>>s1>>s2;
// int d=Search(s1,s2);
// if(d!=-1)
// cout<<d<<endl;
// else
// cout<<"not found!";
//}
//
fdsffsfgfdss
fdss
8
//
将字符串替换 P228 5
//void Transfer(char *s,char *t)
//{
//
// int len=strlen(s);
// int k=0;
// for(int i=0;i<len;i++)
// {
// if(*(s+i)=='\n')
// {
// *(t+k)='\\';
// k++;
// *(t+k)='n';
// k++;
// }
// else if(*(s+i)=='\t')
// {
// *(t+k)='\\';
// k++;
// *(t+k)='t';
// k++;
// }
// else
// {
// *(t+k)=*(s+i);
// k++;
// }
// }
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// char s[maxSize];
// for(int i=0;i<15;i++) //要用这种形式输入,否则会遇到换行符就停止!!
// scanf("%c",&s[i]); //必须用scanf不能用cin,否则换行符不会被当成字符处理!!!
// s[15]='\0';
// char t[maxSize];
// Transfer(s,t);
// cout<<t<<endl;
//}
//
//asd cf we
//df
//fg
//asd\tcf\twe\ndf\nfg
//
把输入的一串字符转化为整数 P228 6
//int getint(char *a)
//{
// int sum=0;
// int n=strlen(a);
// for(int i=n-1;i>=0;i--)
// {
// sum+=(*(a+i)-'0')*pow(10,n-1-i);
// }
// return sum;
//}
//int strlen(char *a)
//{
// int len=0;
// for(int i=0;*(a+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// char a[maxSize];
// cin>>a;
// int d=getint(a);
// cout<<d;
//}
//
删去s1中在s2中有的字符 P228 7
//#include <map>
//int squeeze(char *s1,char *s2)
//{
// map<char,int>mmap;
// int len1=strlen(s1);
// int len2=strlen(s2);
// for(int i=0;i<len2;i++)
// mmap[*(s2+i)]=1;
// for(int i=0;i<len1;i++)
// {
// if(mmap[*(s1+i)]==1)
// {
// for(int j=i+1;j<len1;j++)
// {
// *(s1+j-1)=*(s1+j);
// }
// len1--;
// }
// }
// return len1;
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// {
// len++;
// }
// return len;
//}
//int main()
//{
// char s1[maxSize];
// char s2[maxSize];
// cin>>s1;
// cin>>s2;
// int len=squeeze(s1,s2);
// for(int i=0;i<len;i++)
// {
// cout<<*(s1+i)<<" ";
// }
//}
//
//gdfjklnmvx gvkpp
//d f j l n m x
//
在字符串中找整数 P228 8
//void seekint(char *s)
//{
// int len=strlen(s);
// int i=0;
// int stack[maxSize];
// int top=-1;
// while(i<len)
// {
// while(*(s+i)-'0'>=0&&*(s+i)-'0'<=9)
// {
// stack[++top]=*(s+i)-'0';
// i++;
// }
// if(((*(s+i)-'0')<0||(*(s+i)-'0')>9)&&top!=-1)
// {
// int cnt=0;
// int k=0;
// while(top!=-1)
// {
// cnt+=stack[top--]*pow(10,k);
// k++;
// }
// cout<<cnt<<" ";
// }
// i++;
// }
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// char s[maxSize];
// cin>>s;
// seekint(s);
//
//}
//
//fsda435fd45ds2
//435 45 2
//
字符串排序 P228 9
//int main()
//{
// char s1[maxSize],s2[maxSize],s3[maxSize];
// cin>>s1;
// cin>>s2;
// cin>>s3;
// char *t1,*t2,*t3;
// if(strcmp(s1,s2)>0)
// {
// if(strcmp(s1,s3)>0)
// {
// t1=s1;
// if(strcmp(s2,s3)>0)
// {
// t2=s2;
// t3=s3;
// }
// else
// {
// t2=s3;
// t3=s2;
// }
// }
// else if(strcmp(s1,s3)<0)
// {
// t1=s3;
// t2=s1;
// t3=s2;
// }
// }
// else
// {
// if(strcmp(s2,s3)>0)
// {
// t1=s2;
// if(strcmp(s1,s3)>0)
// {
// t2=s1;
// t3=s3;
// }
// else
// {
// t2=s3;
// t3=s1;
// }
// }
// else
// {
// t1=s3;
// t2=s2;
// t3=s1;
// }
// }
// cout<<t1<<" "<<t2<<" "<<t3;
//}
//
字符串的复制 P228 10
//int main()
//{
// char s1[maxSize];
// char s2[maxSize];
// int m,n;
// cin>>s1;
// cin>>m>>n;
// int k=0;
// for(int i=m;i<n;i++)
// {
// *(s2+k)=*(s1+i);
// k++;
// }
// cout<<s2<<endl;
//}
//sfaffsdf
//5
//8
//sdf
//
实现对10个字符串的排序 P228 11
//void sort(char *str[],int n)
//{
// for(int i=n-1;i>0;i--)
// {
// for(int j=1;j<=i;j++)
// {
// if(strcmp(*(str+j-1),*(str+j))>0)
// {
// char *p=*(str+j-1);
// *(str+j-1)=*(str+j);
// *(str+j)=p;
// }
// }
// }
//}
//int main()
//{
// char str[maxSize][maxSize];
// char *p[maxSize];
// int n;
// cin>>n;
// for(int i=0;i<n;i++)
// {
// cin>>str[i];
// p[i]=str[i];
// }
// sort(p,n);
// for(int i=0;i<n;i++)
// {
// cout<<p[i]<<" ";
// }
//}
//
//10
//gsdf da aew cx zsd gfd er vxc sads fd
//aew cx da er fd gfd gsdf sads vxc zsd
//
实现两个字符串的合并 P228 12
//void strcat(char *s1,char *s2)
//{
// int len1=strlen(s1);
// int len2=strlen(s2);
// for(int i=len1;i<len1+len2;i++)
// {
// *(s1+i)=*(s2+i-len1);
// }
//}
//int strlen(char *s)
//{
// int len=0;
// for(int i=0;*(s+i)!=0;i++)
// len++;
// return len;
//}
//int main()
//{
// char s1[maxSize],s2[maxSize]; //注意是申请数组,不要写成申请指针形式
// cin>>s1>>s2;
// strcat(s1,s2);
// cout<<s1;
//}
//
//gfdshfgd
//fhd
//gfdshfgdfhd
//
//
//