【正确答案】s=“abcd“的所有子串为:"","a","b","c","d","ab","bc","cd","abc","bcd"."abcd"。
算法由主函数和输出所有子串两个函数组成。本算法不输出空串。
程序如下:
#define MAXLEN 25
typedef struct string
{ char ch[MAXLEN];
int len;
} STRING;
void outsubstr(s) /*输出所有子串*/
STRING s;
{
int i,j,k;
for(i=1;i<=s.len;i++) /*进行s.1en次循环,i代表本次循环可以输出的子串位数*/
{
printf("output/%d char:",i);
for(j=1;j<=s.len-i+1;j++) /*每次循环能输出的子串个数*/
{
for(k=1;k<=i;k++) /*每次循环输出一个子串*/
{
printf("/%c",s.ch[j+k-2]);
}
printf("");
}
printf("\n");
}
printf("\n");
}
main()
{
STRING a={"abcd",4}; /*可以在这里修改串值和长度,以得到不同的结果*/
outsubstr(a);
}
输出结果为:
output 1 char:a b c d
output 2 char:ab bc cd
output 3 char:abc bcd
output 4 char:abcd
【答案解析】