|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 赵珂夷 于 2025-11-20 23:57 编辑
代码1(我写的)程序思路:从先将s1的n位以后部分向后挪动,再将s2的字符串加入到字符串s1中
- #include <stdio.h>
- #include <string.h>
- void insert(char *s1,char *s2,int n)
- {
- int i;
- int l1=0,l2=0;
- while (s1[l1]!=' '&&s1[l1]!='\0') l1++;
- while (s2[l2]!=' '&&s2[l2]!='\0') l2++;
- int k=0;
- if(n>l1||n<0||s1==NULL||s2==NULL) printf("error");
- else{
- for(i=l1;i>=n;i--)
- {
- s1[i+l2]=s1[i];
- }
-
- for(i=n;i<n+l2;i++)
- {
- s1[i]=s2[k];
- k++;
- }
- s1[l1+l2]=' ';
- s1[l1+l2+1]='\0';
- }
- }
复制代码
代码2:学长/姐祖传代码 程序思路:将s1从第n项以及之后的项在s3中进行保存,将s2复制到s1的n位及以后位置,再将s3接入s1.
- #include <stdio.h>
- #include <string.h>
- void insert(char * s1,char * s2,int n)
- {
- int i,len1,len2,j;
- char s3[100]={0};
- if(n<0||s1==NULL||s2==NULL)
- {
- printf("error");
- return;
- }
- for(len1=0;s1[len1]!=' '&&s1[len1]!='\0';len1++);
- for(len2=0;s2[len2]!=' '&&s2[len2]!='\0';len2++);
- if(n>len1)
- {
- printf("error");
- return;
- }
- for(i=n,j=0;i<len1;*(s3+j++)=*(s1+i++));
- for(i=n,j=0;j<len2;*(s1+i++)=*(s2+j++));
- for(i=n+len2,j=0;i<len1+len2;*(s1+i++)=*(s3+j++));
- *(s1+len1+len2)=' ';
- return;
- }
复制代码
我认为自己的函数编译输出结果正常
但是在学校C语言作业系统中评分为85分,以下是题目:
实现在字符串的内部增加字符串。
void insert(char * s1,char * s2, int n);
将s2指向的字符串的拷贝,添加到s1第n个字符的位置,原位置的字符后移。n=0时,s2增加到s1的首部;
n=s1的字符串长度时,s2增加到s1的末尾。
注意:使用空格字符来表示字符串的结束。
例如source指向位置,依次保存了字符'a',字符'b',字符空格' ',字符'c',则source指向的字符串为"ab"。
保存为functions.cpp。
遇到异常情况,输出"error";否则不要随意输出,会视为错误。
请问可能是哪些测试点我没有考虑到呢?或者说我的程序1和程序2有哪些实现功能上的区别?求问求问TAT
|
-
程序1运行结果
|