求解,该程序流程图怎么画

#include <conio.h>

#include <stdio.h>

#include <string.h>

int fun(char *s, char *t)

{

 int n; 

 char *p, *r; 

 n = 0;

 while(*s)

 {

  p = s;

  r = t;

  while(*r)

   if(*r == *p)

   {

    r++; 

    p++;

   }

   else

    break;

  if(*r == '\0')//修改1

   n++;

  s++;

 }

 return n;

}

void main()

{

 char s[100], t[100];

 int m; 

 //clrscr();

 printf("\nPlease enter string S:" );

 scanf("%s", s);

 printf("\nPlease enter substring t:");

 scanf("%s", t);

 m = fun(s, t);

 printf("\nThe result is : m = %d\n", m);

}

 

参考GPT和自己的思路:

这个程序是一个字符串匹配的函数,用来计算一个字符串中包含另一个子字符串的个数。流程图需要画出函数fun的内部逻辑,包括循环,指针移动,以及计数器的变化。以下是示意图:

图片描述

其中,矩形框表示操作,菱形框表示判断,箭头表示流程的方向。具体的解释如下:

  1. 传入字符串s和子字符串t
  2. 初始化计数器n为0
  3. while循环,判断s是否到达字符串末尾
  4. 初始化指针p和r,分别指向s和t的首字符
  5. while循环,判断r指针是否到达t的末尾,以及r和p所指字符是否相等
  6. 如果r和p所指字符相等,则移动指针r和p
  7. 如果r和p所指字符不相等,则跳出while循环
  8. 如果r指针到达t的末尾,则说明匹配成功,计数器n加1
  9. 移动s指针
  10. 返回计数器n

希望以上解释对你有所帮助!