1 条题解

  • 0
    @ 2025-4-12 21:47:19

    C :

    #include <stdio.h>
    #include <string.h>
    
    void insert (char *s,  char  *t,  int i)
    {
    	char string[300],  *temp =string;
    	
    	if  (!strlen (s))
    		strcpy (s,  t);
    	else   if (strlen (t))  {
    		strncpy (temp, s, i);
    		strcat (temp, t) ;
    		strcat (temp,  (s + i ));
    		strcpy (s, temp );
    	}
    }
    int main ()
    {
    	char s[128];
    	char t[128];
      int i;
      scanf("%s %s %d",s,t,&i);
    	insert(s,t,i-1);
    	printf("%s",s);
    	printf ("\n");
    }
    
    

    C++ :

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef int Status;
    #define ERROR 0
    #define OK 1
    typedef struct {
    	char * ch;		// 若是非空串,则按串长分配存储区,否则 ch 为 NULL
    	int length;		// 串长度
    }HString;
    
    void ScanHString(HString& str){
    	// 读取HString类字符串
    	char chrstr[128];
    	scanf("%s", chrstr);	//读取一个C字符串
    	str.length = strlen(chrstr);	// 获得该字符串的长度
    	str.ch = (char *)malloc((str.length+1)*sizeof(char));	// 分配内存
    	strcpy(str.ch, chrstr);	// 将字符串从C字符串拷贝到HString中
    }
    
    void PrintHString(HString str){
    	// 输出HString字符串
    	printf("%s", str.ch);
    }
    
    Status StrInsert(HString &S, int pos, HString T) {  // 算法4.4
       // 1≤pos≤StrLength(S)+1。在串S的第pos个字符之前插入串T。
       int i;
       if (pos < 1 || pos > S.length+1)  // pos不合法
          return ERROR;
       if (T.length) {    // T非空,则重新分配空间,插入T
          if (!(S.ch = (char *)realloc(S.ch,(S.length+T.length+1)*sizeof(char))))
             return ERROR;
          for (i=S.length-1; i>=pos-1; --i)  // 为插入T而腾出位置
             S.ch[i+T.length] = S.ch[i];
          for (i=0; i<T.length; i++)         // 插入T
             S.ch[pos-1+i] = T.ch[i];
          S.length += T.length;
       }
       S.ch[S.length] = '\0';		// 注意字符结尾
       return OK;
    } // StrInsert
    
    int main(){
    	HString stra, strb;		// 定义两个字符串
    	int pos;				// 定义插入的位置
    	ScanHString(stra);		// 读取字符串
    	ScanHString(strb);
    	scanf("%d", &pos);		// 读取位置
    	StrInsert(stra, pos, strb);	// 字符串插入
    	PrintHString(stra);		// 输出结果
    
    	return 0;
    }
    
    

    Java :

    
    
    import java.util.Scanner;
    
    public class Main{
       public static void main(String[] args) {
    	 Scanner s = new Scanner(System.in) ;
    		 String str1 = s.next() ;
    		 String str2 = s.next() ;
    		 
    		 int i = s.nextInt() ;
    		 StringBuilder sb = new StringBuilder() ;
    		 
    		 sb.append(str1).insert(i-1, str2) ;
    		 System.out.println(sb);
       }  
    }
    
    
    • 1

    信息

    ID
    1689
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者