问答题 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为“as”,则应当输出6。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(char *sir, char *substr)
{
}
void main()
{
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);
}
【正确答案】
【答案解析】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中的字符对应相同,若都相同则表示出现了一次。