ji1812062521
ji1812062521
采纳率78.3%
2016-02-18 13:14 阅读 10.0k

编写程序,输入字符串S1和S2 以及插入位置n,在字符串S1中的指定位置n处插入字符串S2。

5

编写程序,输入字符串S1和S2 以及插入位置n,在字符串S1中的指定位置n处插入字符串S2。例如,输入“jiangsu”、“123”和位置3,则输出“ji123angsu”。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    VisualEleven Eleven 2016-02-19 05:48
     #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string str1;
        string str2;
        int pos;
        do
        {
            if ((cin >> str1 >> str2 >> pos) && (pos >= 1))
            {
                str1.insert(pos - 1, str2);
                cout << str1 << endl;
            }
            else
            {
                cout << "Invalid Input" << endl;
                break;
            }
    
        } while (false);
        return 0;
    }
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-02-18 13:31
     #include <stdio.h>
    #include <string.h>
    int main()
    {
        char s1[100];
        char s2[100];
        int n = 0;
        gets(s1);
        gets(s2);
        scanf("%d", &n);
        int i;
        int ls2 = strlen(s2);
        for (i = strlen(s1); i >= n; i--)
            s1[i + ls2] = s1[i];
        for (i = 0; i < ls2; i++)
            s1[n + i] = s2[i];
        printf("%s\n", s1);
        return 0;
    }
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-02-18 13:32

    jiangsu
    123
    3
    jia123ngsu
    Press any key to continue

    点赞 评论 复制链接分享
  • henuyx Heart09 2016-02-19 02:02

    上面的程序没加边界判断,如果s1 和s2的长度相加大于100,会越界。

    点赞 评论 复制链接分享
  • beichen2015 北辰剑心 2016-02-19 02:11

    以下为Visual Studio 2012环境编写,仅供楼主参考:

    #include "stdafx.h"
    #include <stdio.h>  
    #include <stdlib.h>  
    #include <string.h>  
    
    //函数声明
    int StrInsert( char *str, int n, char *str_ins );  
    void DestroyStr( char *str, char *str_ins);
    
    //函数实现
    int StrInsert( char *str, int n, char *str_ins )  
    {  
        int i = 0;
        int j = 0;
        int str_len = 0;
        int str_ins_len = 0;  
    
        str_len = strlen( str );  
        str_ins_len = strlen( str_ins );  
    
        //n不能小于1或大于被插入的字符串的长度  
        if ( (n < 1) || (n > str_len) )  
        {  
            return 0;  
        }  
        else  
        {   //重新为str_ins分配内存,将str字符串从n开始的字符串接到它后面  
            str_ins =  (char * ) realloc(str_ins, (str_len - n + 1 + str_ins_len + 1) * sizeof(char));  
            if ( str_ins == NULL )  
            {  
                exit( 0 );  
            }
    
            for ( i = n - 1, j = 0; *(str + i); i++, j++ )  
            {  
                *(str_ins + str_ins_len + j) = *(str + i);  
            }  
    
            *(str_ins + str_ins_len + j) = '\0';  
    
            str = (char * ) realloc(str, (str_len + str_ins_len + 1) * sizeof(char));    
            if( str == NULL )  
            {  
                exit( 0 );  
            }  
    
            for ( j = 0; *str_ins; j++ )  
            {  
                *(str + n - 1 + j) = *str_ins++;  
            }  
            *(str + n - 1 + j) = '\0';  
    
            return 1;    
        }  
    }  
    
    void DestroyStr( char *str, char *str_ins )  
    {  
        free( str );  
        free( str_ins );  
    }  
    
    
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        char *str, *str_ins;  
        int n = 0, i = 0;  
    
        str = (char * )malloc( 20 * sizeof(char) );  
        gets_s( str, 20 );  
    
        str_ins = (char * )malloc( 10 * sizeof(char) );  
        gets_s( str_ins, 10 ); 
    
        scanf_s("%d", &n);  
    
        i = StrInsert( str, n, str_ins );  
    
        if ( i == 0 )  
        {  
            printf("wrong\n");  
        }  
    
        else  
        {  
            printf("%s\n",str);  
        }  
    
        DestroyStr( str, str_ins );  
    
        system("pause"); 
    
        return 0;
    }
    
    
    

    程序运行结果:
    jiangsu
    123
    3
    ji123angsu
    请按任意键继续. . .

    点赞 评论 复制链接分享

相关推荐