问答题 已知顺序串s=”abcd”,写出它的所有子串,并设计算法。
【正确答案】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
【答案解析】