编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 例如,假定输入的字符串为"asd asasdfg asd as zx6 7 asd mklo",子字符串为"as",则应当输出6。 注意:请勿改动主函数main和

admin2019-06-12  28

问题  编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
    例如,假定输入的字符串为"asd asasdfg asd as zx6 7 asd mklo",子字符串为"as",则应当输出6。
    注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fun(char*str,char*substr)
{
}
void main()
{
  FILE*wf:
  char str[81],substr[3];int n;
  system("CLS"):
  printf("输入主字符串:");
  gets(str);
  printf("输入子字符串:");
  gets(substr);
  puts(str);puts(substr);
  n=fun(str,substr):
  printf("n=%d\n",n);
/*  *  *  *  *  *  *  *  *  *  *  */
  wf=fopen("out.dat","w");
  n=fun("asd asasdfg asd as zx67 asd
mklo","as");
    fprintf(wf,"%d",n);
    fclose(wf):
/*  *  *  *  *  *  *  *  *  *  *  */
}

选项

答案 int fun(char *str,char *substr) { int i,j=0; for(i=0;str[i+1]!='\0';i++) /*如果一个长度为2的子字符串在主字符串中出现一次,则j+1,如此循环*/ if(str[i]==substr[0]&&str[i+1]==substr[1]) j++; return j;/*返回子字符串在主字符串中出现的次数*/ }

解析 本题考查:遍历字符串,实现字符串的比较运算。
该题中substr只有两个字符,所以可以用if语句直接进行判断。要注意if语句中str数组的下标为i和i+1,即比较当前字符及其后面的一个字符是否分别与substr中的字符对应相同,若都相同则表示出现了一次。
转载请注明原文地址:https://kaotiyun.com/show/LARp777K
0

最新回复(0)