1 条题解
-
0
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
- 上传者