2013年计算机三级网络技术上机模拟题及答案解析十八_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年4月18日
  【答案】
  int findStr(char *str,char *substr)
  {
  int n=0; /*定义计数器变量,统计出现次数*/
  char *p,*r; /*定义指针变量来分别指向两个字符串*/
  while(*str) /*如果字符串没有结束,则一直循环下去*/
  {
  p=str; /*指针p指向字符串首地址*/
  r=substr; /*指针r指向子字符串首地址*/
  while(*r) /*若子字符串没有结束,则循环继续*/
  if(*r==*p)
  /*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/
  {
  r++;
  p++;
  }
  else
  break; /*否则退出循环*/
  if(*r=='\0') /*如果子字符串在字符串中出现了一次*/
  n++; /*则n加1,进行统计*/
  str++; /*指向字符串中的下一个字符*/
  }
  return n; /*返回统计结果n*/
  }
  【解析】本题主要考查了指针的相关操作。
  首先,通过外层的while循环取字符串的每一个字符,取完字符串的所有字符之后,循环才会终止。用两个字符型指针分别指向两个字符串。逐个将字符串的字符跟子字符串的字符对比,如果相等,则两个指针都自加1,分别指向两个串的下一个字符。若不相等,则主串的指针加1,子串的指针重新指向起始位置,继续比较下一个字符。
首页 1 2 尾页

相关文章