美文网首页
第六章 指针

第六章 指针

作者: Redcarp | 来源:发表于2019-11-07 22:12 被阅读0次

    1.插入字符串
    【问题描述】从键盘输入一个字符串,并在串中的第一次出现的最大元素后边插入字符串”ab”。
    【输入形式】任意输入一个字符串
    【输出形式】在串中的最大元素后边插入字符串”ab”
    【样例输入】

    123csCUMT
    

    【样例输出】

    123csabCUMT
    

    【样例说明】为了保证输入的字符串有空格,请使用cin.getline(char* , int);不要使用gets,本系统不支持。只插入一次ab。
    【评分标准】提交源文件“6-3.cpp”。

    #include<iostream>
    #define x 20
    using namespace std;
    int main()
    {
        char r[x+2]={'\0'};
        char s[x]={'\0'};//利用cin.getline()函数从键盘录入一句英文,其中每个单词之间用一个空格隔开,最后用'.'
        cin.getline(s,x);//cin.getline(接收字符串的变量,接收字符个数,结束字符【默认为'\0'】)
        //char *p=s;
        char max=s[0];
        int i,j,k;
        for(i=0;i<x;i++)
        {
            if(s[i]>max)
            {
                max=s[i];
                j=i;
            }
        }
        //cout<<j<<endl;局部验证正确 
        for(k=0;k<=j;k++)
        {
            r[k]=s[k];
            //cout<<r[k];
        }
        r[j+1]='a';
        //cout<<r[j+1];
        r[j+2]='b';
        //cout<<r[j+2];
        for(k=j+3;k<=x+2&&s[k-2]!='\0';k++)
        {
            r[k]=s[k-2];
            //cout<<r[k];
        }
        
        for(i=0;i<x+3;i++) 
        {
            if(r[i]!='\0')
            cout<<r[i];
        }
        /*
        for(i=0;i<x+3;i++)为什么不能这么输出呢?好吧,他现在又能了,aaaaaa~ 
        {
            if(r[i]!='\0')
            cout<<r[i];
        }
        */  
        return 0;
    }
    

    2.统计整数个数
    【问题描述】输入一个字符串,其包括数字和非数字字符,如:a123x456 17935? 098tab,将其中连续的数字作为一个整数,依次存放到数组a中,统计共有多少个整数,并输出这些数。
    【输入形式】数字和非数字字符的字符串
    【输出形式】1)整数个数2)分别输出整数
    【样例输入】

    a123x456 17935? 098tab583
    【注意需要保留带有空格的字符串,请不要使用gets,cin,练习使用cin.getline(char *str, int maxnum)】
    

    【样例输出】

                    5
                    123
                    456
                    17935
                    98
                    583
    

    【样例说明】第一个输出项为整数的个数,后面的分别为具体的整数。注意,不需要输出提示类文字,如:“整数为”,“分别为”等字样。直接输出结果。有一个数字的也要输出。测试用例中没有超过整数范围连续数字。当遇到0开头的数字应舍去0。
    【评分标准】提交文件名6-5.cpp。

    #include<iostream>
    #define x 50
    using namespace std;
    int main() 
    {
        char a[x];//本来想用指针*p=a,但没用上 
        cin.getline(a,x);
        int i,j=0;
        for(i=0;i<x;i++)//计算连续是整数的个数j,2个for循环基本相同 
        {
            if(a[i]>48&&a[i]<58)
            {   
                if(a[i+1]<=48||a[i+1]>=58)
                {
                    j++;
                }   
            }
        }
        cout<<j<<endl;
        for(i=0;i<x;i++)//输出连续的整数,2个for循环基本相同  
        {
            if(a[i]>48&&a[i]<58)
            {   
                cout<<a[i];
                if(a[i+1]<=48||a[i+1]>=58)
                {
                    cout<<endl;
                }   
            }
        }
        return 0;
    }
    

    3.字符串排序
    【问题描述】有5个字符串,首先将它们按照字符串中字符个数由小到大排序,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。
    【输入形式】5个字符串,用回车分隔
    【输出形式】输出一个字符串:按5个字符串中字符个数由小到大排序,再分别取出每个字符串的第三个字母合并成一个新的字符串输出,若少于三个字符的输出空格
    【样例输入】

                test1234
                123test
                cumt
                think
                apples
    

    【样例输出】

                     cumt think apples 123test test1234
                     concatenate string:mip3s
    

    【样例说明】输出每个字符串之间用一个空格。字符数量相等的串相对顺序不变。
    【评分标准】提交文件名6-7.cpp。

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    void sort(int len[]);
    struct yigezifuchuan//结构体中为1个字符串,共5个,每个字符串都具有以下2个属性,字符串内容,字符串长度 
    {
        char str[50];
        int len; 
    }a[5];
    int main() 
    {
        int i,j;
        for(i=0;i<5;i++)
        {
            cin>>a[i].str;
            a[i].len=strlen(a[i].str);
        }   
        for(i=0;i<4;i++)//共进行4趟比较,不是5次,比原始数据少一次 
        {
            for(j=0;j<4;j++)//在每趟中要进行(4-i)次两两比较,不是(5-i)次两两比较
            {
                if(a[j].len>a[j+1].len)//如果前面的字符串长度大于后面的字符串长度,则交换字符串
                {
                    swap(a[j],a[j+1]);//不是交换swap(a[j].str,a[j+1].str),而是交换整个结构体 
                }           
            }   
        }
        for(i=0;i<5;i++)
        {
            cout<<a[i].str<<" ";
        }
        cout<<endl;
        cout<<"concatenate string:";
        for(int i=0;i<5;i++)
        {
            if(a[i].str[2]=='\0')
            {
                cout<<' ';
            }
            else 
            {
                cout<<a[i].str[2];
            }
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:第六章 指针

          本文链接:https://www.haomeiwen.com/subject/tqjbbctx.html