填空题求解
输入一个母字符串存放到字符数组str中,并输入一个起始位置loc和一个长度len。实现从字符数组str中的母字符串的第loc位开始截取len个字符构成一个子字符串存放到字符数组substr中,
并输出字符数组substr中的子字符串,如果母字符串中从loc位开始剩余的字符个数不足len个,则
只截取母字符串中从loc位开始的剩余所有字符构成子字符串
#include<stdio.h>
int main(){
char str,substr;
int k=0,n,loc,len;
gets(①);
scanf("%d%d",&loc,&len);
if(loc>1 || loc>strlen(str) || len<=0){
substr='\0';
}
else{
for(n=loc-1;②;③)
substr=str;
substr=④;
}
printf("Sub string is %s, its length is %d\n",substr,k);
return 0;
}
我认为①处应该填str 因为从题目知道先得输入一个母字符串存放到字符数组str中;②处应该填 n<=81 因为要从字符数组str中的母字符串的第loc位开始截取len个字符构成一个子字符串存放到字符数组substr中;
③处填 n++要一个一个 的算字符; ④处我就不太确定了,因为按照题目中的如果母字符串中从loc位开始剩余的字符个数不足len个,则只截取母字符串中从loc位开始的剩余所有字符构成子字符串,那应该是填一个控制将不足len个的字符输入到substr中。
如果我填的不对,还请指正,谢谢 鱼油,你这都想好了那就去动手直接实现好点 本帖最后由 大马强 于 2021-8-1 00:17 编辑
能力有限,只能对源代码做出一点改动才能完成要求
#include<stdio.h>
#include<string.h> //strlen()好像要这个,不然会警告
int main(){
char str,substr;
int k=0,n,loc,len,m; // 数学能力差不能找到不改动原代码的方法,请来一个外援来限制循环
gets(str); //正确
scanf("%d%d",&loc,&len);
if(loc<1 || loc>strlen(str) || len<=0) // 原来是 loc>1
{
substr='\0';
printf("输入不正确!");
}
else{
m = loc+len-1 ;
if (loc+len-1 > strlen(str))
m = strlen(str) - loc +1; //当截取的长度超过母串长度,子串长度即为截取位置到母串末尾的长度
// 子串和母串的下标要同步前移, n++,k++
for(n=loc-1;n<m;n++,k++)
substr=str;
substr='\0'; //给substr加一个终字符,这样编译器读取的时候就知道读到这里就结束了
}
printf("Sub string is %s, its length is %d\n",substr,k);
return 0;
}
大马强 发表于 2021-8-1 00:12
能力有限,只能对源代码做出一点改动才能完成要求
#include<stdio.h>
int main(){
char str,substr;
int k=0,n,loc,len;
gets(str);
scanf("%d%d",&loc,&len);
if(loc<1 || loc>strlen(str) || len<=0){
substr='\0';
}
else{
for(n=loc-1;k < len && str != '\0';k++,n++;)
substr=str;
substr='\0';
}
printf("Sub string is %s, its length is %d\n",substr,k);
return 0;
}
老哥,我改成这样了。你看下对嘛 大马强 发表于 2021-8-1 00:12
能力有限,只能对源代码做出一点改动才能完成要求
#include<stdio.h>
int main(){
char str,substr;
int k=0,n,loc,len;
gets(str);
scanf("%d%d",&loc,&len);
if(loc>1 || loc>strlen(str) || len<=0){
substr='\0';
}
else{
for(n=loc-1;str != '\0' && len != 0;len--,n++,k++;)
substr=str;
substr='\0';
}
printf("Sub string is %s, its length is %d\n",substr,k);
return 0;
}
或者这样? 你没有编译器吗?你自己运行下都可以呀 大马强 发表于 2021-8-1 21:25
你没有编译器吗?你自己运行下都可以呀
就是对自己不太信任.....毕竟学的不好 哈哈哈,没事有问来问,这样会有印象点 大概看了一遍,6哇{:10_281:} 大马强 发表于 2021-8-1 21:44
哈哈哈,没事有问来问,这样会有印象点
感谢感谢
页:
[1]