梁力《程序设计与C语言》_第六章 指针【完】

#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
//
//
//

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值